arm單片機使用多種通訊協議,為什麼不統一使用一種協議?

嵌入式領域教學


單片機的片上資源有多種通信方式,常用的如IIC、SPI、UART/USART、CAN,甚至高端一點的還具有以太網和USB通信。這麼多的通信方式,為什麼不統一成一種的?因為每種通信方式所出現的時間不同,使用場合不同,用戶的要求和方案也不同,無法做到一種通信協議覆蓋所有的應用環境和客戶群體。下面分析一下這些通信協議的應用情況。

IIC和SPI多用在芯片級近距離通訊

IIC和SPI是應用非常廣泛的通訊方式,主要用在芯片級進行短距離通信,如EEPROM存儲芯片AT24C02就是IIC通訊的。這兩種只適合長度為cm級別的通信。IIC具有兩根總線,分別為SDA和SCL,SPI有三線和四線通訊方法,這兩種方式主要用做芯片級的數據傳輸。不適合遠距離傳輸。

CAN總線適合遠距離傳輸

CAN總線在汽車工業和工控行業用的比較多,具有兩根線CAN_H和CAN_L,可以進行km級別遠距離傳輸。CAN總線為主從式通訊方式,一個主節點可以掛接多個從節點,從節點的ID標識符可以用來判斷優先級,CAN總線具有仲裁機制。從節點故障推出後,不會影響其他設備的正常工作。

UART可以擴展出其他通信方式

UART也就是我們常說的串口,串口幾乎為單片機的標配。單純的UART只適合於近距離的通信,很多芯片也具有UART,所以可以用作芯片級的數據交換。除此之外,UART通過電平轉換芯片可以擴展出其他的通信方式,如RS232、RS485以及CAN通訊等。

USB和以太網通訊接口

USB的通訊協議比較複雜,實現起來比較困難,像我們用的鼠標、攝像頭用的就是USB通訊,USB也屬於近距離通訊的方式。以太網接口使用與數據量比較大的情況,如果工控機、路由等。USB和以太網都有專用的協議棧芯片。

每一種通訊方式都是根據特定的使用環境所研發出來的,因為通訊距離不同、所傳輸的數據量不同、應用場景不同、客戶需求不同等因素,每一種通訊方式都具有其用武之地。同時,也無法做到一種通信方式覆蓋所有的應用場合、滿足客戶需求。所以,每一種通訊方式都有其存在的理由。

以上就是這個問題的回答,感謝留言、評論、轉發。更多電子設計、硬件設計、單片機等內容請關注本頭條號:玩轉嵌入式。感謝大家。


玩轉嵌入式


目前arm常用的通訊協議比如SPI,I2C,串口(TTL,232,485等),CAN,USB,ModBus等等等等,種類好多。

那麼一個理想的通訊協議是怎麼樣的?速度快,線少,距離遠,抗干擾能力強,通訊協議簡單,使用靈活。但是很遺憾,目前還沒有一種通訊方式能夠達到以上所有條件。

比如用於板級通訊,有的要求速度很快,那麼可能會用SPI,但是又覺得SPI線太多怎麼辦,那就只能做一個權衡,速度和線數量哪一個更重要,如果資源確實已經不支持SPI了,那就可能使用I2C。比如要求很遠距離的通信怎麼辦,那就可能使用485,但是485速度沒SPI快,那就要做一個權衡。

現在不單是ARM,有這麼多通訊協議的根本原因,是因為沒有一個通訊協議能夠完成所有的需求,每個協議的出現都是由於當時現有的協議已經無法滿足某一需求。


一禾嵌入式


ARM和x86架構不一樣,不支持PCI-E協議,所以無法使用統一的接口協議去拓展多種外接設備。ARM採用的是專門的數據接口,針對不同設備採用不同的接口協議,可以加速數據傳輸效率,並且對接口實現也會相對簡單一些。缺點是靈活性太低,無法兼容不同接口的設備,所以對於指定的數據接口,只能連接指定的設備,不過對於ARM一般的使用場景,這些限制確實構不成太大的影響。


榻榻米的榻榻


基於arm核的soc帶有pci-e的型號數不勝數,海思的,NXP的就不說了,連全志H6這樣的廉價處理器都帶有PCI-e 2.0總線。


lk1971


要看主板,而不是看cpu


分享到:


相關文章: