日本强好片久久久久久AAA_色综合久久天天综合观看_久久精品国产亚洲av日韩_久久久久一级片

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

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

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

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

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


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


今天我們就先來說說SPI:

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

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


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



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

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


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

主要的信號線:

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


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

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

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

SS(或SSN): 從設(shè)備選中(低電平有效),用于主設(shè)備控制從設(shè)備用,當(dāng)該從選擇信號線有效的時(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è)備的位移出到主設(shè)備中。

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


4種傳輸模式:


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


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


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


400px-spi_timing_diagram2.svg.png


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


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


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


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

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



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


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

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



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


主、從器件連接方式 


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


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


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


菊花鏈配置

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


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


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


SPI的優(yōu)缺點(diǎn):


優(yōu)點(diǎn):

支持全雙工通信

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

比I2C或SMBus吞吐率更高

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

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

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

異常簡單的硬件接口:

一般來講比I2C或SMBus需要的功耗更低,因?yàn)樾枰俚碾娐?包括上拉電阻)

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

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

“從設(shè)備”不需要一個(gè)單獨(dú)的地址 — 這點(diǎn)不像I2C或GPIB或SCSI

不需要收/發(fā)器

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

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

信號都是單方向的,非常容易進(jìn)行電流隔離

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


缺點(diǎn):

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

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

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

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

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

沒有查錯(cuò)機(jī)制

沒有一個(gè)正式的標(biāo)準(zhǔn)規(guī)范,無法驗(yàn)證一致性

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

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

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

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


應(yīng)用舉例:

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


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


step_baseboard_v3.0框圖.png

小腳丫FPGA主板的功能框圖


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

圖片加載中...

在線留言

◎歡迎您的留言,您也可以通過以下方式聯(lián)系我們:

◎客戶服務(wù)熱線:021-51095123

◎郵箱:xin021@126.com

展開