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