<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > GPIO實(shí)現高可靠性RS485/422通信的研究

GPIO實(shí)現高可靠性RS485/422通信的研究

作者: 時(shí)間:2014-02-10 來(lái)源:網(wǎng)絡(luò ) 收藏

  

  2)中間層:字節接收,如圖6所示。當新bit接收完成時(shí),將當前Bit值按照格式組合到字節數據。當字節位計數器滿(mǎn)一個(gè)字節時(shí),如果滿(mǎn)足起始位“0”和停止位“1”的條件,字節接收完成,并通知頂層進(jìn)行幀接收控制,否則字節無(wú)效。

  

  3)頂層:幀接收,如圖7所示。首先檢測串口當前狀態(tài)是否為接收允許,如果不是則將串口置為接收允許、發(fā)送禁止狀態(tài),在確任接收允許后開(kāi)始收數。在新字節接收完成后,將新字節寫(xiě)入接收緩沖區,同時(shí)根據通信協(xié)議啟動(dòng)報文識別,直到收到一幀完整的報文,結束接收通信。根據實(shí)際需要可以加入通信超時(shí)控制。

  

  4.面向對象實(shí)現方法

  在DSP中,對某一個(gè)管腳操作,需要對某一個(gè)寄存器的某一位進(jìn)行置位或者清零。

  為避免每次對管腳操作時(shí)去尋找寄存器的地址和位地址這個(gè)易出錯的缺點(diǎn),軟件設計時(shí)采用C++類(lèi)結構的方式進(jìn)行數據封裝,使用時(shí)只需在初始化時(shí)一次性的傳入寄存器及其位地址,其余用處均采用交互性良好的助記符。

  4.1 管腳類(lèi)數據結構

  在構建管腳類(lèi)時(shí),圍繞寄存器以及位地址操作和電平操作進(jìn)行。

  軟件數據類(lèi)型與處理器的型號相關(guān),本文采用TMS3206713處理器,為有效控制數制,將硬件支持數制和編譯系統符號相對應,將C6000數據類(lèi)型重定義,在GPIO操作中主要使用無(wú)符號數。

  4.2 串口類(lèi)數據結構

  為了區分當前使用的串口類(lèi)型,故定義串口類(lèi)型號枚舉,為串口操作程序提供識別入口。

  由類(lèi)的構造函數知,由于RS422和所使用的管腳不同,為了將每種操作統一到一個(gè)函數中,采用了swtich結構,其他成員函數類(lèi)似。其中發(fā)射函數Sending()對應圖3、4中的流程,接收函數Receving()對應圖5、6、7中的流程。

  軟件設計以定時(shí)器為中心,由使用目的屬性來(lái)區分發(fā)送還是接收,以中斷方式控制通信時(shí)序,能夠實(shí)現全雙工通信。在全雙工通信中,當出現收發(fā)定時(shí)中斷沖突的極端情況時(shí),可設定發(fā)送優(yōu)先,由于端口操作時(shí)間為納秒級,接收滯后處理的影響可以忽略不計。

  5.位檢測與接收通信可靠性

  由于每一個(gè)bit的檢測結果直接決定著(zhù)接收數據是否正確,按照波特率所確定的時(shí)間間隔對端口電平采樣一次來(lái)確定bit的值來(lái)實(shí)現的軟件,實(shí)驗室拷機時(shí)存在誤碼現象,因此通過(guò)提高bit的檢測能力,降低誤碼率。bit檢測改進(jìn)方法如下:

 ?。?)接收通信的位采樣仍然采用由波特率確定的時(shí)間間隔,但對于位檢測時(shí),采用讀3次管腳電平然后進(jìn)行表決的方式確定當前bit的值,有效降低了誤碼率,但仍有字節出錯的問(wèn)題,因為3取2的方式可以部分地剔除納秒級的高頻毛刺,但不能有效抑制強干擾引起的電平翻轉,需進(jìn)一步改進(jìn)。

 ?。?2 )將每一b i t檢測的時(shí)間間隔縮短到1/3,即對每一個(gè)bit進(jìn)行三次檢測,然后做3取2判決,并將連續30個(gè)1/3bit的高電平后的首個(gè)1/3bit低電平作為幀起點(diǎn)的先決條件,確保正常情況下每一bit的3個(gè)1/3bit都是同樣的電平值,這樣做的好處是每一個(gè)bit的檢測可以允許一個(gè)1/3bit出錯。

  以下進(jìn)行簡(jiǎn)要分析,令改進(jìn)之前的誤碼率是p,引起誤碼的噪聲為非相干的,第一次改進(jìn)后,對于任一bit的三次檢測中允許有一次出錯,因此在理想狀態(tài)下的誤碼率為檢測出錯兩次和三次的條件概率:

  

  如果p=10-6,那么最終的誤碼率可以降低到約為1.4×10-25,分析表明改進(jìn)措施應該有效。

  經(jīng)改進(jìn)的軟件在實(shí)驗室進(jìn)行了30小時(shí)通訊強度試驗,試驗中20ms完成一輪收發(fā),報文長(cháng)度為20個(gè)字節,在約1.08×108字節的接收通信中,未發(fā)現一個(gè)字節的通信錯誤。此后在產(chǎn)品8個(gè)月的調試與外場(chǎng)試驗統計數據表明,除了有一次因通信接口芯片損壞以及一次不明原因的通信出錯以外,沒(méi)有出現因為軟件產(chǎn)生的通信故障,證實(shí)了接收通信的可靠性。

  6.結論

  本文在GPIO模擬通用/422串口通信的研究中,采用分層處理技術(shù)、優(yōu)化bit檢測方法、面向對象設計手段,實(shí)現了全雙工通訊,具有邏輯清晰、易于實(shí)現、可靠性高和易于改進(jìn)、維護和移植的優(yōu)點(diǎn);但也存在一定的局限性,如軟件不宜采用匯編語(yǔ)言實(shí)現,全雙工通信是以定時(shí)器為中心進(jìn)行統籌實(shí)現的,并不是真正獨立意義上的全雙工,其波特率受工作頻率的限制較大。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: GPIO RS485 RS422通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>