拿到乙份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 回環測試
校驗和計算工具
STM32通過UART使用printf列印資料
首先進行各項初始化,並新增stdio標頭檔案之後新增如下 庫函式 int fputc int ch,file f int getkey void 暫存器 int fputc int ch,file f fputc 是printf 的底層函式,通過fputc 來使告知微控制器列印資料到串列埠並將資料逐...
STM32初練總結(UART)
stm32中可以配置多個uart介面,管腳由使用者自己定義到gpio上,復用時需要開啟afio重對映功能。比如使用gpioa中的9 10腳來實現uart的tx rx管腳,需要初始化管腳 void uart pin init void 再main函式中呼叫上述傳送函式,時把uart dr暫存器新增到w...
STM32外部中斷模擬UART串列埠
串列埠資料幀傳送格式 1個起始位 8個資料位 1個停止位 思路 1.pa9做普通io推挽輸出,按照傳送格式用延時暫時作為該位的傳輸時間,波特率為9600 2.pa10做浮空輸入,外部共享中斷使用 可用其餘外部中斷 每接收到乙個資料就進中斷一次,迴圈接收判斷,當接收到 r n將接收標誌置為0x8000...