一種基于單片機串口通信的數據緩存處理方法
發(fā)布時間:2021-11-19 07:09
文章介紹了一種基于單片機串口通信的數據緩存處理方法。規(guī)定了一種靈活、高效、兼容的串口通信協(xié)議,并采用循環(huán)存儲的緩存處理方法。按照該方法,定義一個固定長度的數組,用來緩存串口接收到的數據。當緩存數組空間已滿,新的串口數據將從數組首地址進行覆蓋存儲。單片機MCU按照規(guī)定的通信協(xié)議對緩存數據進行解析,當解析到緩存數組的最后一個數據,將返回到數組首地址繼續(xù)解析。這種通信協(xié)議,支持加密和兼容處理,循環(huán)緩存方式保證了緩存空間利用率百分之百,避免了串口數據處理紊亂和丟包的情況,能夠滿足當前越來越復雜的單片機串口功能的需求。
【文章來源】:信息通信. 2020,(04)
【文章頁數】:2 頁
【部分圖文】:
通信協(xié)議格式
首先,定義一個固定長度的數組,該數組的長度應能保證可存儲多條通信協(xié)議。以本文為例,設置緩存數組長度為256個字節(jié)。定義讀指針rd和寫指針rw,其中,讀指針rd指向MCU正在解析的字節(jié)在數組中的地址,寫指針rw指向串口UART最新接收的數據在數組中的地址。當MCU解析完當前數據后,解析下一個字節(jié)時,rd遞增;當UART接收到新的數據時,rw遞增。當指針地址偏移量達到256個字節(jié),將相應指針重新指向數組首地址。示意圖如圖2所示。指針rd和rw在本文方法中用來表示串口數據存儲和解析的進度,一般rd不大于rw,當發(fā)生rd或rw遞增時,需要實時判斷指針是否溢出,并及時清零。指針rw溢出未清零會導致接收數據丟包,而指針rd溢出未清零會導致協(xié)議數據解析不完整。指針rw溢出判斷相對簡單,當rw遞增時,和數組長度比對即可;指針rd溢出判斷需要結合通信協(xié)議格式、解析過程及數組長度來判斷。
【參考文獻】:
期刊論文
[1]計算機單片機通信系統(tǒng)軟硬件結構設計[J]. 董國鋼. 遼寧經濟職業(yè)技術學院.遼寧經濟管理干部學院學報. 2020(01)
[2]51單片機串口應用[J]. 張幼麟. 內江科技. 2019(10)
[3]一種高可靠性串口通信協(xié)議的設計[J]. 李林. 現代導航. 2019(04)
[4]基于C#的串口通信系統(tǒng)的設計和實現[J]. 劉馬飛. 物聯網技術. 2019(06)
[5]基于通信協(xié)議的數據解析研究與實現[J]. 閆超. 軟件. 2019(06)
[6]異步串行通信協(xié)議的設計與實現[J]. 賈昊,張燁,崔忠政,徐曌,楊揚,徐佳. 電子制作. 2018(20)
[7]單片機的數據串口通信研究[J]. 李劉丹. 信息通信. 2015(10)
[8]一種基于串口通信的高可靠性應用協(xié)議設計[J]. 王建敏,崔俊鋒,牛道恒. 鐵路通信信號工程技術. 2015(01)
[9]單片機實現數據的串口發(fā)送與接收[J]. 程陽. 電子技術與軟件工程. 2014(09)
[10]一種基于狀態(tài)機的串口通信協(xié)議的設計與實現[J]. 李瑩,賈彬. 電子設計工程. 2012(07)
本文編號:3504538
【文章來源】:信息通信. 2020,(04)
【文章頁數】:2 頁
【部分圖文】:
通信協(xié)議格式
首先,定義一個固定長度的數組,該數組的長度應能保證可存儲多條通信協(xié)議。以本文為例,設置緩存數組長度為256個字節(jié)。定義讀指針rd和寫指針rw,其中,讀指針rd指向MCU正在解析的字節(jié)在數組中的地址,寫指針rw指向串口UART最新接收的數據在數組中的地址。當MCU解析完當前數據后,解析下一個字節(jié)時,rd遞增;當UART接收到新的數據時,rw遞增。當指針地址偏移量達到256個字節(jié),將相應指針重新指向數組首地址。示意圖如圖2所示。指針rd和rw在本文方法中用來表示串口數據存儲和解析的進度,一般rd不大于rw,當發(fā)生rd或rw遞增時,需要實時判斷指針是否溢出,并及時清零。指針rw溢出未清零會導致接收數據丟包,而指針rd溢出未清零會導致協(xié)議數據解析不完整。指針rw溢出判斷相對簡單,當rw遞增時,和數組長度比對即可;指針rd溢出判斷需要結合通信協(xié)議格式、解析過程及數組長度來判斷。
【參考文獻】:
期刊論文
[1]計算機單片機通信系統(tǒng)軟硬件結構設計[J]. 董國鋼. 遼寧經濟職業(yè)技術學院.遼寧經濟管理干部學院學報. 2020(01)
[2]51單片機串口應用[J]. 張幼麟. 內江科技. 2019(10)
[3]一種高可靠性串口通信協(xié)議的設計[J]. 李林. 現代導航. 2019(04)
[4]基于C#的串口通信系統(tǒng)的設計和實現[J]. 劉馬飛. 物聯網技術. 2019(06)
[5]基于通信協(xié)議的數據解析研究與實現[J]. 閆超. 軟件. 2019(06)
[6]異步串行通信協(xié)議的設計與實現[J]. 賈昊,張燁,崔忠政,徐曌,楊揚,徐佳. 電子制作. 2018(20)
[7]單片機的數據串口通信研究[J]. 李劉丹. 信息通信. 2015(10)
[8]一種基于串口通信的高可靠性應用協(xié)議設計[J]. 王建敏,崔俊鋒,牛道恒. 鐵路通信信號工程技術. 2015(01)
[9]單片機實現數據的串口發(fā)送與接收[J]. 程陽. 電子技術與軟件工程. 2014(09)
[10]一種基于狀態(tài)機的串口通信協(xié)議的設計與實現[J]. 李瑩,賈彬. 電子設計工程. 2012(07)
本文編號:3504538
本文鏈接:http://www.sikaile.net/kejilunwen/jisuanjikexuelunwen/3504538.html