電子項目開發中,如何確定使用I2C總線還是SPI總線或者CAN總線?

shhtc


電子項目開發中經常用到通訊功能,包括板子上芯片間的通訊和設備間的通訊。而常用的有線通訊方式無非就這幾種,如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通訊總線。

以上就是這個問題的回答,感謝留言、評論、轉發。更多精彩內容請關注本頭條號:玩轉嵌入式。感謝大家。


分享到:


相關文章: