日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

幾種最常用的串行數(shù)據(jù)傳輸總線-SPI

 袁先森lemon 2019-04-18

串行數(shù)據(jù)總線由于占用較少的管腳被廣泛應(yīng)用在MCU和外設(shè)的連接中,在過去的幾十年里,有三種最常用的多線串行數(shù)據(jù)傳輸格式SPI、I2C和UART。這3種串行總線的主要區(qū)別:

  • SPI - Serial Peripheral Interface(串行外設(shè)接口),突出了外設(shè),也就有了主(Master - 控制器)和從(Slave - 外設(shè))之分,在總線中也就只有一個“主人”,其它都是處于服從的位置,也就是Slave,它是一種有時鐘信號的同步串行總線,從器件的尋址是靠專用的片選信號線SS來實現(xiàn)的;

  • I2C - Inter-Integrated Circuits(集成電路之間的連接),沒有突出主次,也就是所有掛在總線上的器件都是平等的,它也是一種有時鐘信號的同步串行總線,每個器件都有自己的地址,兩根信號線都需要通過電阻上拉;

  • UART - universal asynchronous receiver/transmitter(通用異步收/發(fā)),顧名思義,它是異步串行總線,傳輸?shù)男盘栔袥]有專用的時鐘信號線。

由于很多MCU、外設(shè)芯片為了節(jié)省管腳,都采用了管腳功能復(fù)用的方式,同一個管腳既可以用于SPI,也可以用于I2C,根據(jù)具體的器件連接方式進行選用。當器件的管腳配置為I2C的時候,要記住在I2C的兩根信號線(SCL、SDA)上一定要有上拉電阻,SPI則不需要。

今天我們就先來說說SPI:

SPI(Serial Peripheral Interface - 串行外設(shè)接口)是一種用于短距離通信(主要是嵌入式系統(tǒng)中)的同步串行通信接口規(guī)范,這種接口由Motorola發(fā)明,已經(jīng)成了一種事實標準。廣泛用于各種MCU處理器中,同傳感器,串行ADC、DAC、存儲器、SD卡以及LCD等進行數(shù)據(jù)連接。

幾乎所有的微處理器/微控制器都有SPI/I2C和UART接口,而且不止一個

SPI和I2C也被廣泛用于傳感器的數(shù)字接口連接

即便FPGA也將SPI和I2C做成了硬化的IP在芯片內(nèi)

主要的信號線:

SPI總線由4根主要的信號線組成以實現(xiàn)數(shù)據(jù)在主設(shè)備(Master)和從設(shè)備(Slave)之間的全雙工(收、發(fā)同時執(zhí)行)同步(由時鐘同步)通信:

  • SCLK:串行時鐘(由主設(shè)備輸出),每個時鐘周期將會移出一個新的數(shù)據(jù)位;

  • MOSI:主設(shè)備輸出?從設(shè)備輸入,數(shù)據(jù)由主設(shè)備進入從設(shè)備,器件A上的MOSI線連接到器件B上的MOSI線。

  • MISO:主設(shè)備輸入? 從設(shè)備輸出,數(shù)據(jù)由從設(shè)備送到主設(shè)備(或其它從設(shè)備,采用菊花鏈配置),器件A上的MISO線連接到器件B上的MISO線。

  • SS(或SSN): 從設(shè)備選中(低電平有效),用于主設(shè)備控制從設(shè)備用,當該從選擇信號線有效的時候表示主設(shè)備正在向相應(yīng)的從設(shè)備發(fā)送數(shù)據(jù)或從相應(yīng)的從設(shè)備請求數(shù)據(jù)。

SPI端口管腳的名字也有其它的叫法,不同的芯片公司叫法不同,比如:

  • 串行輸出: SCLK : SCK, CLK.

  • 主輸出 –> 從輸入: MOSI:SIMO、SDI(for slave devices)、DI、DIN、SI、MTST.

  • 主輸入 ← 從輸出: MISO:SOMI、SDO (for slave devices )、DO、DOUT、SO、MRSR.

  • 從選擇: SS: SSN、nCS、CS、CSB、CSN、EN、nSS、STE、SYNC.

主從器件之間的連接及數(shù)據(jù)傳輸方式

基本的主從配置

SPI允許將數(shù)據(jù)位從主設(shè)備移出到從設(shè)備,同時,可以將從設(shè)備的位移出到主設(shè)備中。

動畫1顯示數(shù)據(jù)從器件A移出到器件B,從器件B移出到器件 A.

動畫2顯示了通過一個虛擬的4通道示波器捕捉的兩個器件之間SPI的轉(zhuǎn)換 

由于SPI未標準化,不同廠商的器件具體的定義不同,有的首先傳輸最高有效位(MSb),有的則是最低有效位(LSb),這需要我們認真閱讀用到的相應(yīng)器件的數(shù)據(jù)手冊,以確定正確的數(shù)據(jù)處理方式。

4種傳輸模式:

每次數(shù)據(jù)傳輸都是先將SSN(有的器件命名為SS,從選擇線)被驅(qū)動為邏輯低電平時開始。由時鐘的極性(CPOL)和相位(CPHA)構(gòu)成了4種不同的數(shù)據(jù)傳輸模式(0,1,2,3),分別對應(yīng)四種可能的時鐘配置。

  • CPOL: 時鐘的極性,它控制著時鐘信號的初始邏輯狀態(tài)。

  • CPHA: 時鐘相位,它控制了數(shù)據(jù)轉(zhuǎn)換和時鐘轉(zhuǎn)換之間的關(guān)系。

時鐘的極性和相位構(gòu)成了4種不同的可能,也就有4種模式


在時鐘周期的上升沿采樣的位在時鐘周期的下降沿移出,反之亦然。

具有非反相時鐘極性(即,當從器件選擇轉(zhuǎn)換為邏輯低時,時鐘處于邏輯低電平):

  • 模式0:配置時鐘相位使得數(shù)據(jù)在時鐘脈沖的上升沿采樣,并在時鐘脈沖的下降沿移出。 這對應(yīng)于上圖中的第一個藍色時鐘軌跡。 請注意,數(shù)據(jù)必須在時鐘的第一個上升沿之前可用。

  • 模式1:配置時鐘相位使得數(shù)據(jù)在時鐘脈沖的下降沿采樣,并在時鐘脈沖的上升沿移出。 這對應(yīng)于上圖中的第二個藍色時鐘軌跡。

使用反相時鐘極性(即,當從器件選擇轉(zhuǎn)換為邏輯低時,時鐘處于邏輯高電平):

  • 模式2:配置時鐘相位,使得數(shù)據(jù)在時鐘脈沖的下降沿采樣,并在時鐘脈沖的上升沿移出。 這對應(yīng)于上圖中的第一個橙色時鐘軌跡。 請注意,數(shù)據(jù)必須在時鐘的第一個下降沿之前可用。

  • 模式3:配置時鐘相位,使得數(shù)據(jù)在時鐘脈沖的上升沿采樣,并在時鐘脈沖的下降沿移出。 這對應(yīng)于上圖中的第二個橙色時鐘軌跡。

由于主設(shè)備一般為可以編程各種模式的控制器/處理器或者可以靈活編程的FPGA,因此在使用SPI連接的時候要認真閱讀自己選用的從設(shè)備的工作模式,以便在時許上滿足傳輸?shù)囊蟆?/p>

主、從器件連接方式 

通過多個從片選信號(SSN)配置

在標準的SPI配置中,主設(shè)備可以通過使能相應(yīng)的從設(shè)備,即通過將相應(yīng)設(shè)備的從選擇線(SSN或SS)設(shè)置為邏輯低電平,通過共享的公共數(shù)據(jù)線將數(shù)據(jù)寫入各個從設(shè)備或由各個從設(shè)備中讀取數(shù)據(jù)。 應(yīng)注意不要同時使能多個從設(shè)備,因為返回到主設(shè)備的數(shù)據(jù)將在MISO線路之間的驅(qū)動器上產(chǎn)生競爭導致無法進行數(shù)據(jù)的判讀。 在某些應(yīng)用中不需要將數(shù)據(jù)返回給主設(shè)備,在這種情況下,如果主設(shè)備想要將相同的數(shù)據(jù)發(fā)送到多個從設(shè)備,則可以同時尋址多個從設(shè)備。

在多從設(shè)備選擇配置中,每個從設(shè)備都需要來自主設(shè)備的唯一從設(shè)備選擇線(SS、SSN或CSn)。如果主設(shè)備沒有足夠的I/O引腳用于所需數(shù)量的從設(shè)備,則使用解碼/解復(fù)用器(例如74HC(T)238(3到8線)來實現(xiàn)I/O擴展)。

菊花鏈配置

在這種配置中,數(shù)據(jù)從一個設(shè)備移動到下一個設(shè)備, 最終的從設(shè)備可以將數(shù)據(jù)返回給主設(shè)備(給FPGA編程的JTAG在給多個器件編程的時候也常用這種方式)。

在菊花鏈配置中,所有從設(shè)備共享一條公共的從選擇線(SS)。 數(shù)據(jù)從主設(shè)備傳輸?shù)降谝粋€從設(shè)備,然后從第一個從設(shè)備傳輸?shù)降诙€從設(shè)備,依此下去,數(shù)據(jù)沿著線路級聯(lián),直到系列中的最后一個從設(shè)備,最后的一個從設(shè)備使用其MISO線路將數(shù)據(jù)傳送到主設(shè)備。

這種配置非常適合于主設(shè)備的信號引腳有限的場景。

SPI的優(yōu)缺點:

優(yōu)點:

  • 支持全雙工通信

  • 推挽驅(qū)動(跟漏極開路正相反)提供了比較好的信號完整性和較高的速度

  • 比I2C或SMBus吞吐率更高

  • 協(xié)議非常靈活支持“位”傳輸

    • 不僅限于8-bit一個字節(jié)的傳輸

    • 可任意選擇的信息大小、內(nèi)容、以及用途

  • 異常簡單的硬件接口:

    • 一般來講比I2C或SMBus需要的功耗更低,因為需要更少的電路(包括上拉電阻)

    • 沒有仲裁機制或相關(guān)的失效模式

    • “從設(shè)備”采用的是“主設(shè)備”的時鐘,不需要精確的晶振

    • “從設(shè)備”不需要一個單獨的地址 — 這點不像I2C或GPIB或SCSI

    • 不需要收/發(fā)器

  • 在一個器件上只用了4個管腳, 板上走線和布局連接都比并行接口簡單很多

  • 每個設(shè)備最多只有一個單獨的從設(shè)備選擇信號(SS、SSN、CSn);其它的都是共享的

  • 信號都是單方向的,非常容易進行電流隔離

  • 對于時鐘的速度沒有上限,有進一步提高速度的潛力,很多MCU的SPI傳輸速率可以高達50Msps,可用于數(shù)據(jù)采集以及圖像的傳輸。

缺點:

  • 相比于I2C總線需要更多的管腳, 即便是只用到3根線的情況下

  • 沒有尋址機制,在共享的總線連接時需要通過片選信號支持多個設(shè)備的訪問

  • 在從設(shè)備側(cè)沒有硬件流控機制(主設(shè)備一側(cè)可以通過延遲到下一個時鐘沿以降低傳輸?shù)乃俾?

  • 從設(shè)備無法進行硬件“應(yīng)答”(主設(shè)備傳送的信息無法確定傳遞到哪里,是否傳遞成功)

  • 一般只支持一個主設(shè)備(取決于設(shè)備的硬件構(gòu)成)

  • 沒有查錯機制

  • 沒有一個正式的標準規(guī)范,無法驗證一致性

  • 相對于RS-232, RS-485, 或CAN-總線,只能近距離傳輸

  • 存在很多的變種,很難能夠找到開發(fā)工具(例如主適配卡)支持這所有的變種

  • SPI不支持熱交換(動態(tài)地增加一個節(jié)點).

  • 如果想使用“中斷”,只有通過SPI信號以外的其它信號線,或者采用類似USB1.1或2.0中的周期性查詢的欺騙方式

應(yīng)用舉例:

小腳丫FPGA學習主板上的DAC、ADC、以及用于圖形顯示的液晶屏都是通過SPI接口連接的。

小腳丫FPGA主板的實物照片,外設(shè)基本都是通過SPI、I2C以及UART進行連接的

小腳丫FPGA主板的功能框圖

鑒于此,我們硬件工程師很有必要深入了解SPI、I2C以及UART的技術(shù)細節(jié),尤其是傳輸信號線的連接以及傳輸?shù)臅r序要求,爭取能夠自己通過FPGA來編程實現(xiàn)各種傳輸總線。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多