電子項目開發中經常用到通訊功能,包括板子上芯片間的通訊和設備間的通訊。而常用的有線通訊方式無非就這幾種,如I2C、SPI、RS232、RS485接口、CAN、USB等。其中I2C也叫IIC,對于題目中提到的幾種通訊方式,I2C和SPI是芯片間的短距離通訊,無法長距離通訊。而CAN適合長距離通訊,根據不同的波特率通訊長度可達幾公里。
什么時候選用I2C總線
IIC由于只用到SCL和SDA兩根通訊總線,所以應用廣泛,目前有很多數字輸出的芯片都是通過IIC傳輸數據的,比如EEPROM芯片AT24C系列,比如溫度傳感器芯片SHT20,比如氣壓傳感器芯片BMP280,還有很多AD采樣的芯片也是通過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通訊總線。