[轉(zhuǎn)]SPI仆嗦、UART、I2C三種串行總線簡(jiǎn)介

SPI(Serial Peripheral Interface岸晦,串行外設(shè)接口)

SPI是一種高速欧啤、全雙工、同步启上、串行通信總線邢隧,3~4線接口,以主從模式工作冈在,收發(fā)獨(dú)立倒慧,可以實(shí)現(xiàn)多個(gè)SPI設(shè)備互相連接。

提供SPI串行時(shí)鐘的SPI設(shè)備為SPI主機(jī)或主設(shè)備(Master)包券,其他設(shè)備為SPI從機(jī)或從設(shè)備(Slave)纫谅。SPI總線由三條信號(hào)線組成,分別是SCLK(串行時(shí)鐘)溅固、SDI(串行數(shù)據(jù)輸入)付秕、SDO(串行數(shù)據(jù)輸出)。當(dāng)有多個(gè)從設(shè)備時(shí)侍郭,還可以增加一條從設(shè)備選擇線询吴,CS是控制芯片是否被選中的,這樣就可以實(shí)現(xiàn)在同一總線上多個(gè)SPI設(shè)備互相連接亮元。

如果用GPIO口模擬SPI總線猛计,必須要有一個(gè)輸出口(SDO),一個(gè)輸入口(SDI)爆捞,另一個(gè)口則視實(shí)現(xiàn)的設(shè)備類型而定奉瘤,如果要實(shí)現(xiàn)主從設(shè)備,則需輸入輸出口煮甥,若只實(shí)現(xiàn)主設(shè)備盗温,則需輸出口即可,若只實(shí)現(xiàn)從設(shè)備成肘,則只需輸入口即可肌访。
SDI – 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出艇劫;
SDO – 主設(shè)備數(shù)據(jù)輸出吼驶,從設(shè)備數(shù)據(jù)輸入惩激;
SCLK – 時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生蟹演;
CS – 從設(shè)備使能信號(hào)风钻,由主設(shè)備控制。

SPI 是一種允許一個(gè)主設(shè)備啟動(dòng)一個(gè)與從設(shè)備同步通訊的協(xié)議酒请,從而完成數(shù)據(jù)的交換骡技。SPI是串行協(xié)議,也就是說(shuō)數(shù)據(jù)是一位一位傳輸?shù)男叻矗@就是SCLK時(shí)鐘線存在的原因布朦,由SCLK提供時(shí)鐘脈沖,SDI昼窗、SDO則基于此脈沖完成數(shù)據(jù)傳輸是趴。數(shù)據(jù)輸出通過(guò) SDO線,數(shù)據(jù)在時(shí)鐘上升沿或下降沿時(shí)改變澄惊,在緊接著的下降沿或上升沿被讀取唆途。完成一位數(shù)據(jù)傳輸,輸入也使用同樣原理掸驱。這樣肛搬,在至少8次時(shí)鐘信號(hào)的改變(上沿和下沿為一次),就可以完成8位數(shù)據(jù)的傳輸毕贼。這樣的傳輸方式有一個(gè)優(yōu)點(diǎn)温赔,與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù)鬼癣,而SPI允許數(shù)據(jù)一位一位的傳送陶贼,甚至允許暫停,因?yàn)镾CLK時(shí)鐘線由主控設(shè)備控制扣溺,當(dāng)沒(méi)有時(shí)鐘跳變時(shí)骇窍,從設(shè)備不采集或傳送數(shù)據(jù)瓜晤。也就是說(shuō)锥余,主設(shè)備通過(guò)對(duì)SCLK時(shí)鐘線的控制可以完成對(duì)通訊的控制。

SPI還是一個(gè)數(shù)據(jù)交換協(xié)議:因?yàn)镾PI的數(shù)據(jù)輸入和輸出線獨(dú)立痢掠,所以允許同時(shí)完成數(shù)據(jù)的輸入和輸出驱犹。不同SPI設(shè)備的實(shí)現(xiàn)方式不盡相同,主要是數(shù)據(jù)改變和采集的時(shí)間不同足画,在時(shí)鐘信號(hào)上沿或下沿采集有不同定義雄驹,具體請(qǐng)參考相關(guān)器件的文檔。

最后淹辞,SPI接口的一個(gè)缺點(diǎn):沒(méi)有指定的流控制医舆,沒(méi)有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。

在點(diǎn)對(duì)點(diǎn)的通信中,SPI接口不需要進(jìn)行尋址操作蔬将,且為全雙工通信爷速,顯得簡(jiǎn)單高效。在多個(gè)從設(shè)備的系統(tǒng)中霞怀,每個(gè)從設(shè)備需要獨(dú)立的使能信號(hào)惫东,硬件上比I2C系統(tǒng)要稍微復(fù)雜一些。SPI接口主要應(yīng)用在EEPROM毙石、FLASH廉沮、實(shí)時(shí)時(shí)鐘、AD轉(zhuǎn)換器徐矩,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間滞时。

UART(Universal Asynchronous Receiver Transmitter,通用異步收發(fā)器)

UART總線是兩線丧蘸、全雙工漂洋、異步串口,速度慢力喷。比SPI刽漂、I2C這兩種同步串口的結(jié)構(gòu)要復(fù)雜很多,一般由波特率產(chǎn)生器(產(chǎn)生的波特率等于傳輸波特率的16倍)弟孟、UART接收器贝咙、UART發(fā)送器組成,硬件上有兩根線拂募,一根用于發(fā)送庭猩,一根用于接收。數(shù)據(jù)是異步傳輸?shù)某轮ⅲ瑢?duì)雙方的時(shí)序要求比較嚴(yán)格蔼水,通信速度也不是很快,在多機(jī)通信上面用的最多录肯。如果用GPIO口模擬UART總線趴腋,則需一個(gè)輸入口,一個(gè)輸出口论咏。

UART是用于控制計(jì)算機(jī)與串行設(shè)備的芯片优炬,它提供了RS-232C數(shù)據(jù)終端設(shè)備接口,這樣計(jì)算機(jī)就可以和調(diào)制解調(diào)器或其它使用RS-232C接口的串行設(shè)備通信了厅贪。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口蠢护。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口养涮。同時(shí)葵硕,串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)眉抬。串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)懈凹。盡管比按字節(jié)(byte)的并行通信慢吐辙,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信蘸劈。作為接口的一部分昏苏,UART還提供以下功能:
將由計(jì)算機(jī)內(nèi)部傳送過(guò)來(lái)的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流;
將計(jì)算機(jī)外部來(lái)的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié)威沫,供計(jì)算機(jī)內(nèi)部使用并行數(shù)據(jù)的器件使用贤惯;
在輸出的串行數(shù)據(jù)流中加入奇偶校驗(yàn)位,并對(duì)從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗(yàn)棒掠;
在輸出數(shù)據(jù)流中加入啟停標(biāo)記孵构,并從接收數(shù)據(jù)流中刪除啟停標(biāo)記;
處理由鍵盤或鼠標(biāo)發(fā)出的中斷信號(hào)烟很;
可以處理計(jì)算機(jī)與外部串行設(shè)備的同步管理問(wèn)題颈墅;
有一些比較高檔的UART還提供輸入輸出數(shù)據(jù)的緩沖區(qū),現(xiàn)在比較新的UART是16550雾袱,它可以在計(jì)算機(jī)需要處理數(shù)據(jù)前在其緩沖區(qū)內(nèi)存儲(chǔ)16字節(jié)數(shù)據(jù)恤筛。

I2C(Inter-Integrated Circuit)

I2C總線是雙向、兩線(SCL芹橡、SDA)毒坛、同步、串行林说、多主控(multi-master)接口標(biāo)準(zhǔn)煎殷,具有競(jìng)爭(zhēng)檢測(cè)和總線仲裁機(jī)制,非常適合在器件之間進(jìn)行近距離腿箩、非經(jīng)常性的數(shù)據(jù)通信豪直。在I2C的協(xié)議體系中,傳輸數(shù)據(jù)時(shí)都會(huì)帶上目的設(shè)備的設(shè)備地址珠移,因此可以實(shí)現(xiàn)設(shè)備組網(wǎng)弓乙。

如果用GPIO口模擬I2C總線,并實(shí)現(xiàn)雙向傳輸剑梳,則需一個(gè)輸入輸出口(SDA)唆貌,另外還需一個(gè)輸出口(SCL)滑潘。

I2C總線最主要的優(yōu)點(diǎn)是其簡(jiǎn)單性和有效性垢乙。I2C能用于替代標(biāo)準(zhǔn)的并行總線,能連接各種集成電路和功能模塊语卤。只要求兩條總線線路:一條串行數(shù)據(jù)線SDA 一條串行時(shí)鐘線SCL追逮。

I2C是多主控總線酪刀,總線上每一個(gè)設(shè)備都有一個(gè)獨(dú)一無(wú)二的地址,根據(jù)設(shè)備自己的能力钮孵,任何能夠進(jìn)行發(fā)送和接收的設(shè)備都能像主控器一樣工作骂倘,并控制總線。當(dāng)然巴席,在任何時(shí)間點(diǎn)上只能有一個(gè)主控历涝,如果兩個(gè)或更多主機(jī)同時(shí)初始化數(shù)據(jù)傳輸可以通過(guò)沖突檢測(cè)和仲裁,防止數(shù)據(jù)被破壞漾唉。
一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率荧库。同步時(shí)鐘允許器件通過(guò)總線以不同的波特率進(jìn)行通信。同步時(shí)鐘可以作為停止和重新啟動(dòng)串行口發(fā)送的握手方式赵刑。

由于接口直接在組件之上分衫,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量般此,降低了互聯(lián)成本蚪战。總線的長(zhǎng)度可高達(dá)25英尺铐懊,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件邀桑。

串行的8 位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s ,快速模式下可達(dá)400kbit/s 科乎,高速模式下可達(dá)3.4Mbit/s概漱。

片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波保證數(shù)據(jù)完整。I2C使用上拉電阻喜喂,抗干擾能力較弱瓤摧,一般用于同一板卡上芯片之間的通信,較少用于遠(yuǎn)距離通信玉吁。連接到相同總線的IC 數(shù)量只受到總線的最大電容400pF 限制照弥。

文章轉(zhuǎn)載自:ivy_reny的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市进副,隨后出現(xiàn)的幾起案子这揣,更是在濱河造成了極大的恐慌,老刑警劉巖影斑,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件给赞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矫户,警方通過(guò)查閱死者的電腦和手機(jī)片迅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)皆辽,“玉大人柑蛇,你說(shuō)我怎么就攤上這事芥挣。” “怎么了耻台?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵空免,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我盆耽,道長(zhǎng)蹋砚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任摄杂,我火速辦了婚禮都弹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匙姜。我一直安慰自己畅厢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布氮昧。 她就那樣靜靜地躺著框杜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袖肥。 梳的紋絲不亂的頭發(fā)上咪辱,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音椎组,去河邊找鬼油狂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛寸癌,可吹牛的內(nèi)容都是我干的专筷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蒸苇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼磷蛹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起溪烤,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤味咳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后檬嘀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體槽驶,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年鸳兽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掂铐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖堡纬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒿秦,我是刑警寧澤烤镐,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站棍鳖,受9級(jí)特大地震影響炮叶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜渡处,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一镜悉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧医瘫,春花似錦侣肄、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至僚纷,卻和暖如春矩距,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怖竭。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工锥债, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痊臭。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓哮肚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親广匙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绽左,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容