通信設計中考慮協議的靈活性,經常把協議設計成“不定長度”。
一個實例如下圖:銳米LoRa終端的通信協議幀。

如果一個系統接收上述“不定長度”的協議幀,將會有一個挑戰--如何高效接收與解析。
為簡化系統設計,我們強烈建議您采用“狀態機”來解析UART數據幀,并且把解析工作放在ISR(中斷服務程序)完成,僅當接收到最后一個字節(0x0D)時,再將整個數據幀提交給進程處理。
該解析狀態機的原理如下圖所示:

那么ISR處理這個狀態機來得及嗎?答案是:so easy!因為它只有3個動作,運算量十分小:
比較接收數據 -> 更新狀態變量 -> 存儲接收數據,C語言僅3條語句,翻譯成機器指令也不超過10條。
代碼清單如下:




審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6076文章
45495瀏覽量
670287 -
通信協議
+關注
關注
28文章
1092瀏覽量
42150 -
LoRa技術
+關注
關注
3文章
110瀏覽量
17356
原文標題:如何設計單片機的通信協議?
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
機器人通信協議EtherCAT和CAN如何選擇
當下,雖然行業中存在許多通信協議,但業內人士普遍認為,EtherCAT和CAN兩大協議,是機器人行業未來最重要的兩大協議。
單片機中的串口通訊串行同步通信與串行異步通信
中始終保持精確的同步時鐘,即發送時鐘和接收時鐘要嚴格的同步。常用的做法是兩個設備使用同一個時鐘源。
在串口通信與編程中應用最多的是異步通信方式。STM32中串口通信的實例:學習ST
發表于 01-15 08:06
通信協議IIC與SPI最全對比分析
現今,在低端數字通信應用領域,我們隨處可見IIC(Inter-Integrated Circuit)和 SPI(Serial Peripheral Interface)的身影。原因是這兩種通信協議
發表于 12-10 06:04
Xilinx FPGA串行通信協議介紹
Xilinx FPGA因其高性能和低延遲,常用于串行通信接口設計。本文深入分析了Aurora、PCI Express和Serial RapidIO這三種在Xilinx系統設計中關鍵的串行通信協議。介紹了它們的特性、優勢和應用場景,以及如何在不同需求下選擇合適的
分布式能源并網的通信協議有哪些?
在分布式能源(如光伏、儲能、微電網)并網場景中,通信協議需滿足 設備互聯、數據傳輸、遠程控制、調度協同 等核心需求,不同協議因設計目標不同,適用于從設備層到調度層的不同層級。以下按 “國際標準協議
芯知識|廣州唯創電子語音芯片UART通信協議解析:發碼長度與校驗碼計算
一、UART通信協議概述UART(通用異步收發器)是一種廣泛應用于嵌入式系統的串行通信協議,其核心特點為無需時鐘同步,通過起始位、數據位、校驗位和停止位構成數據幀。在語音芯片應用中,UART常用
HIPERFACE DSL編碼器通信協議介紹
在工業自動化和智能制造快速發展的今天,編碼器在各類設備中扮演著關鍵角色,精準的位置和速度反饋是確保系統高效、穩定運行的基礎。HIPERFACE DSL作為一種先進的編碼器通信協議,正逐漸成為眾多工業
自動化通信協議Profinet轉EtherCAT:提升層布貼合效率
不同的通信協議。今天,我們將探討開疆智能Profinet轉EtherCAT網關KJ-PN-ECATM及其在層布貼合機中的應用。Profinet是基于以太網的工業自動化通信
如何高效接收與解析單片機的通信協議幀
評論