【STM32筆記2】SPI、I2C、UART三種串行通信協議的總結與區別(另有I2S音頻總線的說明)

SPI:SPI(Serial Peripheral Interface)串行外設接口,全雙工,同步串行

1、SPI總線由三條信號線組成:串行時鐘(SCLK)、串行數據輸出(SDO)、串行數據輸入(SDI)。SPI 總線可以實現多個SPI設備互相連接。提供SPI串行時鐘的SPI設備爲SPI主機或主設備(Master),其他設備爲SPI從機或從設備(Slave)。主從設備間可以實現全雙工通信,當有多個從設備時,還可以增加一條從設備選擇線(即CS-片選信號)。如果用通用IO口模擬SPI總線,必須要有一個輸出口(SDO),一個輸入口(SDI),另一個口則視實現的設備類型而定,如果要實現主從設備,則需輸入輸出口,若只實現主設備,則需輸出口即可,若只實現從設備,則只需輸入口即可。 

2、要注意的是,SCK信號線只由主設備控制,從設備不能控制信號線。同樣,在一個基於SPI的設備中,至少有一個主控設備。傳輸方式有一個優點,與普通的串行通訊不同,普通的串行通訊一次連續傳送至少8位數據,而SPI允許數據一位一位的傳送,甚至允許暫停,因爲SCK時鐘線由主控設備控制,當沒有時鐘跳變時,從設備不採集或傳送數據。也就是說,主設備通過對SCK時鐘線的控制可以完成對通訊的控制。其速度要比I2C總線要快,速度可達到幾Mbps。

以下爲SPI參考時序:

(注:SPI其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閒狀態爲低電平;如果CPOL=1,串行同步時鐘的空閒狀態爲高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被採樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿 (上升或下降)數據被採樣。)

I2C:I2C(Inter-Integrated Circuit)國際集成電路-I2C總線,半雙工,同步串行

1、I2C總線是雙向、兩線(SCLSDA)、串行、多主控(multi-mas ter)接口標準,具有總線仲裁機制,非常適合在器件之間進行近距離、非經常性的數據通信。在它的協議體系中,傳輸數據時都會帶上目的設備的設備地址,因此可以實現設備組網。如果用通用IO口模擬I2C總線,並實現雙向傳輸,則需一個輸入輸出口(SDA),另外還需一個輸出口(SCL)。

2、每個連接到總線的器件都可以通過唯一的地址和一直存在的簡單的主機從機關係軟件設定地址主機,可以作爲主機發送器或主機接收器。它是一個真正的多主機總線如果兩個或更多主機同時初始化數據傳輸可以通過沖突檢測和仲裁,防止數據被破壞。串行的8 位雙向數據傳輸位速率在標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s。

以下爲I2C參考時序:

UART:UART(Universal Asynchronous Receiver Transmitter)通用異步收發器,全雙工,異步串行

1、UART總線由三條信號線組成:RXTX、GND。UART由波特率產生器(產生的波特率等於傳輸波特率的16倍)、UART接收器、UART發送器組成。其包括RS232、RS499、RS423、RS422和RS485等接口標準規範和總線標準規範,而它們的主要區別在於其各自的電平範圍不相同,嵌入式設備中常常使用到的是TTL、TTL轉RS232的這種方式。常用來與PC進行通信,包括與監控調試器和其它器件,如EEPROM通信。如果用通用IO口模擬UART總線,則需一個輸入口,一個輸出口。

2、它是用於控制計算機與串行設備的芯片,將由計算機內部傳送過來的並行數據轉換爲輸出的串行數據流。將計算機外部來的串行數據轉換爲字節,供計算機內部使用並行數據的器件使用 。在輸出的串行數據流中加入奇偶校驗位,並對從外部接收的數據流進行奇偶校驗。在輸出數據流中加入啓停標記,並從接收數據流中刪除啓停標記。

3、值得注意的是,它提供了RS-232數據終端設備接口,故計算機就可以和調制解調器(Modem)或其它使用RS-232接口的串行設備通信了 。

以下爲UART參考時序:

區別:(可參考下面表格進行縱向對比)

1、I2C線更少,比UART、SPI更爲強大,但是技術上也更加麻煩些,因爲I2C需要有雙向IO的支持,而且使用上拉電阻,抗干擾能力較弱,一般用於同一板卡上芯片之間的通信,較少用於遠距離通信;

2、SPI實現要簡單一些,UART需要固定的波特率,就是說兩位數據的間隔要相等,而SPI則無所謂,因爲它是有時鐘的協議;

3、I2C的速度比SPI慢一點,協議比SPI複雜一點,但是連線也比標準的SPI要少,當然UART的速度是最慢的;

另:

1、在STM32大容量產品和互聯型產品上,SPI接口可以配置爲支持SPI協議或者支持I2S音頻協議。SPI接口默認工作在SPI方式,可以通過軟件把功能從SPI模式切換到I2S模式。在小容量和中容量產品上,不支持I2S音頻協議。I2S也是一種3引腳的同步串行接口通訊協議。它支持四種音頻標準,包括飛利浦I2S標準,MSB 和LSB對齊標準,以及PCM標準。它在半雙工通訊中,可以工作在主和從2種模式下。當它作爲主設備時,通過接口向外部的從設備提供時鐘信號;

1、I2S(Inter—IC Sound)總線, 又稱集成電路內置音頻總線,是飛利浦公司爲數字音頻設備之間的音頻數據傳輸而制定的一種總線標準,該總線專門用於音頻設備之間的數據傳輸,廣泛應用於各種多媒體系統;

2、I2S支持全雙工/半雙工,支持主/從模式,和PCM相比更適合立體聲系統。且I2S的變體也支持多通道的時分複用,因此可以支持多聲道;

3、I2S主要有三個信號:串行始終SCLK(也稱SCK),也叫位始終(BCLK),對應數字音頻的每一位數據,SCLK都有一個脈衝。SCLK的頻率=2*採樣頻率*採樣位深;幀時鐘LRCK(也稱WS),用於切換左右聲道的數據。LRCK爲"1"表示傳輸右聲道數據,爲"0”則是左聲道。LRCK的頻率 = 採樣頻率;串行數據SDATA(也稱SD),就是用二進制補碼錶示的音頻數據,(MSB ---> LSB:數據由高位到低位依次傳輸);一般還有MCLK,主時鐘;

以下爲I2S參考時序:

附:此文爲本人經STM32實戰後總結所得,歡迎大家參考指點,謝謝。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章