a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

博客專欄

EEPW首頁 > 博客 > 藍牙串口通訊總線——I2C/SPI/UART

藍牙串口通訊總線——I2C/SPI/UART

發布人:美迅物聯網 時間:2024-01-22 來源:工程師 發布文章

嵌入式工程師在做串口通信調試工作的時候,會經常用到I2C、SPI、UART這3條總線,I2C、SPI、UART這三種通信總線在嵌入式領域很常見,目前主流的SOC芯片都內置了這三種總線的控制器,各種Sensor、Touch、藍牙模塊、WIFI模塊等也都兼容這三種通信協議的1種以上。那么這三條通信總線有什么區別呢?工業物聯網無線通信專業廠商為您一一細說——

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

  I2C串口通信傳輸步驟

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

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

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

  4.主機發送或接收數據幀;

  5.傳輸完每個數據幀后,接收設備將另一個ACK位返回給發送方,以確認已成功接收到該幀;

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

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

  SPI串口通信傳輸步驟:

  1.主機輸出時鐘信號;

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

  3.主機通過MOSI將數據發送給從機;

  4.如果需要相應,則從機通過MISO將數據返回給從機。

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

  UART串口通信傳輸步驟:

  1.發送UART從數據總線并行接收數據;

  2.發送UART將起始位、奇偶校驗位和停止位添加到數據幀;

  3.整個數據包從發送UART串行發送到接收UART。接收UART以預先配置的波特率對數據線進行采樣;

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

  5.接收UART將串行數據轉換回并行數據,并將其傳輸到接收端的數據總線。

  單工、半雙工、全雙工

  單工:數據只能在一個方向上傳輸。

  半雙工:數據可以在兩個方向上進行傳輸,但是同一時刻,只允許數據在一個方向上傳輸,相當于單工通信的分時復用。

  全雙工:數據可以同時在兩個方向上傳輸,相當于兩個單工通信的結合。

  同步通信和異步通信

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

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

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

  綜上所述,工業物聯網無線通信專業廠商要說的是I2C、SPI、UART這三條總線在通信速度上,SPI最快,UART最慢;通信距離上,I2C和SPI通常用于片上通信,而UART通常用于設備間通信,比如PC機和我們要調試的產品設備。




*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: 總線 串口

相關推薦

技術專區

關閉