通信設計中考慮協議的靈活性,經常把協議設計成“不定長度”。
一個實例如下圖:銳米LoRa終端的通信協議幀。
如果一個系統接收上述“不定長度”的協議幀,將會有一個挑戰--如何高效接收與解析。
為簡化系統設計,我們強烈建議您采用“狀態機”來解析UART數據幀,并且把解析工作放在ISR(中斷服務程序)完成,僅當接收到最后一個字節(0x0D)時,再將整個數據幀提交給進程處理。
該解析狀態機的原理如下圖所示:
那么ISR處理這個狀態機來得及嗎?答案是:so easy!因為它只有3個動作,運算量十分小:
比較接收數據 -> 更新狀態變量 -> 存儲接收數據,C語言僅3條語句,翻譯成機器指令也不超過10條。
代碼清單如下:
審核編輯:劉清
-
單片機
+關注
關注
6068文章
45011瀏覽量
651289 -
通信協議
+關注
關注
28文章
1036瀏覽量
41219 -
LoRa技術
+關注
關注
3文章
102瀏覽量
16942
原文標題:如何設計單片機的通信協議?
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
Modbus 轉 Profinet:工業通信協議的橋梁

基于Vector工具進行CAN協議錯誤幀的分析實踐

Dali通信協議的標準解析
總線通信協議解析及應用
常見串口通信協議 如何設置串口參數
AUTOSAR通信協議解析 如何實現AUTOSAR通信
串口通信協議解析 串口通信應用實例
PLC控制系統的通信協議解析
PROFINET通信協議是什么
SPI通信協議的基本概念和工作模式
dht11采用什么通信協議

評論