回覆列表
  • 1 # 玩轉嵌入式

    電子專案開發中經常用到通訊功能,包括板子上晶片間的通訊和裝置間的通訊。而常用的有線通訊方式無非就這幾種,如I2C、SPI、RS232、RS485介面、CAN、USB等。其中I2C也叫IIC,對於題目中提到的幾種通訊方式,I2C和SPI是晶片間的短距離通訊,無法長距離通訊。而CAN適合長距離通訊,根據不同的波特率通訊長度可達幾公里。

    什麼時候選用I2C匯流排

    IIC由於只用到SCL和SDA兩根通訊匯流排,所以應用廣泛,目前有很多數字輸出的晶片都是透過IIC傳輸資料的,比如EEPROM晶片AT24C系列,比如溫度感測器晶片SHT20,比如氣壓感測器晶片BMP280,還有很多AD取樣的晶片也是透過IIC傳輸的。所以,根據所使用的晶片是不是IIC通訊來確定。IIC具有地址匯流排,可以掛接多個裝置。

    什麼時候選用SPI匯流排

    SPI匯流排也是很常用的晶片間的通訊匯流排,通常用3線SPI和4線SPI。3線SPI包括:SCLK,SDA,SS等。4線SPI包括:SCLK,MISO,MOSI,SS。也有很多數字量輸出的晶片是透過SPI介面通訊的,一般3線SPI和4線SPI相容。如下圖所示。

    SPI透過片選來確定所掛接裝置的數量,佔用微控制器的GPIO口,不適用於掛接多個裝置的情況,除非GPIO完全夠。

    什麼時候選用CAN匯流排

    CAN匯流排是裝置間的通訊匯流排,具有兩根線CANH和CANL,通訊距離非常遠,可以達到數公里甚至更遠,經常用於工業控制和汽車工業中。現在很多微控制器帶CAN片上資源,只需要選用一顆電平轉換晶片即可實現CAN資料的傳輸。由於CAN通訊傳輸距離遠,可以擴充套件很多個CAN節點,所以裝置間長距離通訊用的非常多。

    總結

    如果是晶片間的通訊可以選用IIC或者SPI,如果GPIO口有線且要掛接多個通訊晶片,則使用IIC。如果是裝置間長距離的通訊可以選用RS485介面和CAN通訊,如果通訊距離只有一兩公里可以選用RS485介面,如果通訊距離達到數公里則用CAN通訊匯流排。

  • 中秋節和大豐收的關聯?
  • 結婚一定要買樓買房嗎?