STM32开发 -- UART应用层通信协议分析
拿到一份UART的通信協議,上手來操作之前先做一下分析。
一、幀格式說明
先看一下它的幀格式說明:
1、 幀頭標志Head
不論是命令幀還是響應幀,幀頭標志都是0x92。
2、 協議版本
協議版本號(4bit),目前值為1
加密方式(4bit),0表示采取“數據不加密+校驗和”方式。
所以,當前此字段完整值為0x10
3、 控制字段中的C/R比特
用于指示該幀是命令幀還是應答幀,1表示命令幀,0表示應答幀。
4、 控制字段中的T/F比特
用于指示傳輸數據類型,1表示透明的非結構化數據,0表示正常的數據幀。
5、 虛擬通道
虛擬地址(4bit):代表數據幀的源地址標識。目前為保留位,取值為0。
通道序號(4bit):0表示虛通道0,1表示虛通道1,其他值暫不使用。
6、 幀序號
幀的編號一般由發送節點填充,按遞增加一的原則(溢出后歸零重新開始)使用,不能重復,以保證“虛擬通道+幀序號”在某個相對時間段內是唯一的。但目的節點在應答主控節點的命令時仍使用源節點的幀序號,以實現命令與應答的一一對應。節點在主動上報時,幀序號由節點自己填充,但仍堅持遞增加一的原則。
7、 用戶數據長度指示
指“用戶數據部分”的總長度。一幀的總長度不超過64K。
8、 用戶數據幀
根據命令的不同而不同。
命令字由兩個字節構成,分別稱為CmdHi和CmdLo,高8比特在前,低8比特在后。
9、 校驗和
指從幀頭開始到校驗和之前所有字節的累加和,發送方在發送時,通過計算填充幀的校驗和部分;接收方在接收到一個幀時,應通過計算并與校驗和部分進行比較,以確保接收到的幀是完整正確的。
10、用戶狀態字定義
應答狀態字說明 :0 成功
1 沒有此命令
2 幀長度錯誤
3 參數錯誤
4 設置失敗
5 忙,請等待
二、數據分析
串口回環測試,就不做介紹了。
參看:日常生活小技巧 – UART 回環測試
上電后可以獲取一段數據。
其中計算校驗和,用win10自帶計算器太難受了。
推薦:
科學計算器
校驗和計算工具
總結
以上是生活随笔為你收集整理的STM32开发 -- UART应用层通信协议分析的全部內容,希望文章能夠幫你解決所遇到的問題。