串行數(shù)據(jù)總線由于占用較少的管腳被廣泛應(yīng)用在MCU和外設(shè)的連接中,在過去的幾十年里,有三種最常用的多線串行數(shù)據(jù)傳輸格式SPI、I2C和UART。這3種串行總線的主要區(qū)別:
由于很多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í)行)同步(由時鐘同步)通信:
SPI端口管腳的名字也有其它的叫法,不同的芯片公司叫法不同,比如:
主從器件之間的連接及數(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)四種可能的時鐘配置。
時鐘的極性和相位構(gòu)成了4種不同的可能,也就有4種模式 在時鐘周期的上升沿采樣的位在時鐘周期的下降沿移出,反之亦然。 具有非反相時鐘極性(即,當從器件選擇轉(zhuǎn)換為邏輯低時,時鐘處于邏輯低電平):
使用反相時鐘極性(即,當從器件選擇轉(zhuǎn)換為邏輯低時,時鐘處于邏輯高電平):
由于主設(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)點:
缺點:
應(yīng)用舉例: 小腳丫FPGA學習主板上的DAC、ADC、以及用于圖形顯示的液晶屏都是通過SPI接口連接的。 小腳丫FPGA主板的實物照片,外設(shè)基本都是通過SPI、I2C以及UART進行連接的 小腳丫FPGA主板的功能框圖 鑒于此,我們硬件工程師很有必要深入了解SPI、I2C以及UART的技術(shù)細節(jié),尤其是傳輸信號線的連接以及傳輸?shù)臅r序要求,爭取能夠自己通過FPGA來編程實現(xiàn)各種傳輸總線。 |
|