常見的通訊介面有usart、can、usb、ethernet。最常見、用的最多的就是usart,下面主要對串列埠通訊協議的物理層及協議層進行講解。
物理層 串列埠通訊的物理層有很多標準及變種,主要講解rs-232標準,rs-232標準主要規定了訊號的用途、通訊介面以及訊號的電平標準。
使用rs-232標準的串列埠裝置間常見的通訊結構見圖1
圖1 串列埠通訊結構圖
上面的通訊方式中,兩個裝置的「db9介面」之間通過串列埠訊號線建立起連線,串列埠訊號線中使用「rs-232標準」傳輸資料訊號。由於rs-232電平標準的訊號不能直接被控制器識別,所以這些訊號需要經過乙個「電平轉換晶元」轉換成控制器能識別的「ttl標準」的電平訊號,才能實現通訊。
1.1 電平標準
根據通訊使用的電平標準不同,串列埠通訊可以分為ttl標準及rs-232標準,見表1。
表1 ttl電平標準與rs-232電平標準
1.2 rs-232訊號線
在最初的應用中,rs-232串列埠標準常用於計算機、路由器與數據機之間的通訊。通訊訊號線見圖2,通訊訊號線說明可以去網上搜相關資料。
圖2 rs-232 訊號線
2. 協議層
串列埠通訊的資料報由傳送端通過自身的txd介面經串列埠訊號線傳輸到接收端的rxd介面。在串列埠通訊的協議中,規定了資料報的內容,它由起始位、資料、校驗位及停止位組成。通訊雙方的資料報格式及波特率要一致才能正常收發資料。資料報組成結構圖見圖3。
圖3 資料報的組成結構圖
以上對串列埠通訊物理層及協議層做了簡單介紹,下篇講一下串列埠接收資料的處理方法及串列埠收發資料結構封裝。
stm32串列埠接收完整的資料報
參考了文章 stm32串列埠中斷接收方式詳細比較 借鑑了第四種中斷方式 串列埠的配置這裡不做說明,僅對stm32接收中斷中的資料進行解析。資料幀協議 幀頭1幀頭2 資料長度 有效資料 crc 1 crc 2 b5 5b 0300 570b 幀頭1 幀頭2 資料長度 包含有效資料 crc 1 crc ...
Arduino 通過串列埠給上位機發資料報研究
填入報文 上位機解析 目前有個需求是要用arduino從暫存器讀感測器資料,然後把資料傳送給unity開發的上位機,在傳送資料時,通過協議確定資料報的格式。這裡構建乙個7位陣列 byte sendarray 7 012 3456 報頭報文1 報文2報文3 報文4報文5 報尾報頭 報文1 為資料型別 ...
接收網路資料報
接收網路資料報一種好的方法就是可以建立套介面 位元組緩衝 來對網路資料先進行緩衝再在以後進行處理 由於接收的資料報是位元組連續的,所以需要設定一塊一塊連續的記憶體塊來儲存網路資料報,因而必須設定記憶體塊的大小 const unsigned int trunksize 64 1024 一般網路資料比較...