博客專欄

EEPW首頁 > 博客 > 藍(lán)牙串口通訊總線——I2C/SPI/UART

藍(lán)牙串口通訊總線——I2C/SPI/UART

發(fā)布人:美迅物聯(lián)網(wǎng) 時間:2024-01-22 來源:工程師 發(fā)布文章

嵌入式工程師在做串口通信調(diào)試工作的時候,會經(jīng)常用到I2C、SPI、UART這3條總線,I2C、SPI、UART這三種通信總線在嵌入式領(lǐng)域很常見,目前主流的SOC芯片都內(nèi)置了這三種總線的控制器,各種Sensor、Touch、藍(lán)牙模塊、WIFI模塊等也都兼容這三種通信協(xié)議的1種以上。那么這三條通信總線有什么區(qū)別呢?工業(yè)物聯(lián)網(wǎng)無線通信專業(yè)廠商為您一一細(xì)說——

  I2C:半雙工、同步、串行傳輸,物理上只有兩根線(SDA/SCL);傳輸數(shù)據(jù)必須8位8位的傳輸。

  I2C串口通信傳輸步驟

  1.在SCL線為高電平時,主機通過將SDA線從高電平切換到低電平來啟動總線通信;

  2.主機向總線發(fā)送要與之通信的從機的7位或10位地址,以及讀/寫位;

  3.每個從機將主機發(fā)送的地址與其自己的地址進(jìn)行比較。如果地址匹配,則從機通過將SDA線拉低一位返回一個ACK位。如果主機的地址與從機的地址不匹配,則從機將SDA線拉高。

  4.主機發(fā)送或接收數(shù)據(jù)幀;

  5.傳輸完每個數(shù)據(jù)幀后,接收設(shè)備將另一個ACK位返回給發(fā)送方,以確認(rèn)已成功接收到該幀;

  6.隨后主機將SCL切換為高電平,然后再將SDA切換為高電平,從而向從機發(fā)送停止條件。

  SPI:全雙工、同步、串行傳輸,收發(fā)獨立,傳輸速率高,但是沒有指定的流控制,沒有應(yīng)答機制確認(rèn)是否接收到數(shù)據(jù)。物理上4根線(CLK/SDI/SDO/CS),因為是全雙工,并且不需要尋址,所以速度要比I2C快,但是占用的物理線的數(shù)量要比I2C多;通信時可以一位一位的傳輸數(shù)據(jù)。

  SPI串口通信傳輸步驟:

  1.主機輸出時鐘信號;

  2.主機拉低SS/CS引腳,激活從機;

  3.主機通過MOSI將數(shù)據(jù)發(fā)送給從機;

  4.如果需要相應(yīng),則從機通過MISO將數(shù)據(jù)返回給從機。

  UART:全雙工、異步、串行傳輸,收發(fā)獨立,UART總線并沒有時鐘線,所以需要提前約定對應(yīng)的波特率,傳輸速度較慢,物理上4根線(VCC/TX/RX/GND),雖然速度慢,但是可用于不同主機間的通信,通常用于debug調(diào)試非常方便;傳輸時數(shù)據(jù)位可以5、6、7、8位。

  UART串口通信傳輸步驟:

  1.發(fā)送UART從數(shù)據(jù)總線并行接收數(shù)據(jù);

  2.發(fā)送UART將起始位、奇偶校驗位和停止位添加到數(shù)據(jù)幀;

  3.整個數(shù)據(jù)包從發(fā)送UART串行發(fā)送到接收UART。接收UART以預(yù)先配置的波特率對數(shù)據(jù)線進(jìn)行采樣;

  4.接收UART丟棄數(shù)據(jù)幀中的起始位、奇偶校驗位和停止位;

  5.接收UART將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線。

  單工、半雙工、全雙工

  單工:數(shù)據(jù)只能在一個方向上傳輸。

  半雙工:數(shù)據(jù)可以在兩個方向上進(jìn)行傳輸,但是同一時刻,只允許數(shù)據(jù)在一個方向上傳輸,相當(dāng)于單工通信的分時復(fù)用。

  全雙工:數(shù)據(jù)可以同時在兩個方向上傳輸,相當(dāng)于兩個單工通信的結(jié)合。

  同步通信和異步通信

  同步是阻塞模式,異步是非阻塞模式。

  同步通信要求發(fā)收雙方具有同頻同相的同步時鐘信號(一般共用一個時鐘),同步通信效率高。

  異步通信的收發(fā)雙方?jīng)]有同步時鐘,比如UART,收發(fā)雙方僅僅是約定,你按照什么樣的速率發(fā),而我也按照這樣的速率去接收,這樣如果速度越快,那么信號寬度越窄,誤差就越大,所以異步通信效率較低。

  綜上所述,工業(yè)物聯(lián)網(wǎng)無線通信專業(yè)廠商要說的是I2C、SPI、UART這三條總線在通信速度上,SPI最快,UART最慢;通信距離上,I2C和SPI通常用于片上通信,而UART通常用于設(shè)備間通信,比如PC機和我們要調(diào)試的產(chǎn)品設(shè)備。




*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: 總線 串口

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉