電子專案開發中經常用到通訊功能,包括板子上晶片間的通訊和裝置間的通訊。而常用的有線通訊方式無非就這幾種,如I2C、SPI、RS232、RS485介面、CAN、USB等。其中I2C也叫IIC,對於題目中提到的幾種通訊方式,I2C和SPI是晶片間的短距離通訊,無法長距離通訊。而CAN適合長距離通訊,根據不同的波特率通訊長度可達幾公里。
IIC由於只用到SCL和SDA兩根通訊匯流排,所以應用廣泛,目前有很多數字輸出的晶片都是透過IIC傳輸資料的,比如EEPROM晶片AT24C系列,比如溫度感測器晶片SHT20,比如氣壓感測器晶片BMP280,還有很多AD取樣的晶片也是透過IIC傳輸的。所以,根據所使用的晶片是不是IIC通訊來確定。IIC具有地址匯流排,可以掛接多個裝置。
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匯流排是裝置間的通訊匯流排,具有兩根線CANH和CANL,通訊距離非常遠,可以達到數公里甚至更遠,經常用於工業控制和汽車工業中。現在很多微控制器帶CAN片上資源,只需要選用一顆電平轉換晶片即可實現CAN資料的傳輸。由於CAN通訊傳輸距離遠,可以擴充套件很多個CAN節點,所以裝置間長距離通訊用的非常多。
如果是晶片間的通訊可以選用IIC或者SPI,如果GPIO口有線且要掛接多個通訊晶片,則使用IIC。如果是裝置間長距離的通訊可以選用RS485介面和CAN通訊,如果通訊距離只有一兩公里可以選用RS485介面,如果通訊距離達到數公里則用CAN通訊匯流排。
電子專案開發中經常用到通訊功能,包括板子上晶片間的通訊和裝置間的通訊。而常用的有線通訊方式無非就這幾種,如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通訊匯流排。