一個單片機和ARM cpu之間通信協議的示例

一個單片機和ARM cpu之間通信協議的示例

在進行soc之間進行通信時,往往需要制定通信協議,以下是我制定的一個示例,供大家參考:

  1. 格式:
    一個單片機和ARM cpu之間通信協議的示例

1)magic
magic頭長度爲2字節,內容爲0x55,0xAA,這是字節出現順序,不區分little endian還是big endian。
magic頭的作用是爲了實現在發送和接收同步丟失時,快速找到同步。
2)type
type長度爲2字節,內容爲具體的message id號。message id採用little endian字節序。
3)length
length爲後面的data字段的長度,單位爲字節數。length佔兩個字節。length採用little endian字節序。
4) verify head
verify
head爲head的校驗碼,可以迅速知道head是否正確。 head包括從magic到length整個內容。如果內容不對,那麼需要重新搜索magic頭,再檢查head是否正確,從而可以快速同步。校驗head的正確性後,length就可以正常使用,正確定位數據的長度。
verify_ head佔2個字節。 verifyhead的算法可以採用簡單的16bit異或算法,或者CRC16算法,或者其他算法。爲簡單方便,目前採用16bit異或算法。
verify
head採用little endian字節序。
5) data
data爲任意長度的數據。具體格式根據具體的message id來定。
6) verify_data
verify_data爲data段的校驗。可以採用各種算法。verify_data根據算法的需求來確定長度。
爲簡單方便,目前採用8bit異或算法,即這裏採用1字節長度。

一個單片機和ARM cpu之間通信協議的示例
一個單片機和ARM cpu之間通信協議的示例
一個單片機和ARM cpu之間通信協議的示例
一個單片機和ARM cpu之間通信協議的示例

另外我的相關培訓視頻請看:
歡迎觀看我發佈的各個課程: https://edu.51cto.com/lecturer/8896847.html

另外我的免費的linux各種驅動開發課程如下:
https://edu.51cto.com/course/17138.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章