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