欧美激情久久久久久,人妻久久精品天天中文字幕,国产精品无码色一区二区三区按摩 ,日韩中文无码有码免费视频

常用的串行數據傳輸總線(xiàn)(1)- SPI

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

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

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

UART - universal asynchronous receiver/transmitter(通用異步收/發(fā)),顧名思義,它是異步串行總線(xiàn),傳輸的信號中沒(méi)有專(zhuān)用的時(shí)鐘信號線(xiàn)。


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


今天我們就先來(lái)說(shuō)說(shuō)SPI:

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

常用的串行數據傳輸總線(xiàn)(1)- SPI


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



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

常用的串行數據傳輸總線(xiàn)(1)- SPI


即便FPGA也將SPI和I2C做成了硬化的IP在芯片內

主要的信號線(xiàn):

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


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

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

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

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


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.



主從器件之間的連接及數據傳輸方式



基本的主從配置

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

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


4種傳輸模式:


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


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


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


400px-spi_timing_diagram2.svg.png


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


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


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


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

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



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


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

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



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


主、從器件連接方式 


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


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


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


菊花鏈配置

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


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


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


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


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

支持全雙工通信

推挽驅動(dòng)(跟漏極開(kāi)路正相反)提供了比較好的信號完整性和較高的速度

比I2C或SMBus吞吐率更高

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

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

可任意選擇的信息大小、內容、以及用途

異常簡(jiǎn)單的硬件接口:

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

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

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

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

不需要收/發(fā)器

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

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

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

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


缺點(diǎn):

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

沒(méi)有尋址機制,在共享的總線(xiàn)連接時(shí)需要通過(guò)片選信號支持多個(gè)設備的訪(fǎng)問(wèn)

在從設備側沒(méi)有硬件流控機制(主設備一側可以通過(guò)延遲到下一個(gè)時(shí)鐘沿以降低傳輸的速率)

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

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

沒(méi)有查錯機制

沒(méi)有一個(gè)正式的標準規范,無(wú)法驗證一致性

相對于RS-232, RS-485, 或CAN-總線(xiàn),只能近距離傳輸

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

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

如果想使用“中斷”,只有通過(guò)SPI信號以外的其它信號線(xiàn),或者采用類(lèi)似USB1.1或2.0中的周期性查詢(xún)的欺騙方式


應用舉例:

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


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


step_baseboard_v3.0框圖.png

小腳丫FPGA主板的功能框圖


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

圖片加載中...

在線(xiàn)留言

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

◎客戶(hù)服務(wù)熱線(xiàn):021-51095123

◎郵箱:xin021@126.com

展開(kāi)