女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

電子設(shè)計(jì) ? 來(lái)源:電子世界 ? 作者:張忠波,何苗,姚 ? 2020-02-26 08:02 ? 次閱讀

1.引言

工程實(shí)踐中,對(duì)于解決同一個(gè)問(wèn)題,我們常面臨兩種選擇:要么硬件簡(jiǎn)單軟件復(fù)雜,要么軟件復(fù)雜硬件簡(jiǎn)單。如某引信系統(tǒng)的DSP電路,需要與內(nèi)部?jī)蓚€(gè)組部件以及外部多個(gè)系統(tǒng)進(jìn)行接口或者信息交互,且總體要求采用異步串口方式進(jìn)行通信。此類問(wèn)題主要有三種解決方案:第一,在DSP的并行總線上擴(kuò)展UART芯片,通過(guò)硬件轉(zhuǎn)換實(shí)現(xiàn),軟件最簡(jiǎn)單;第二,在DSP的McBSP串行總線上擴(kuò)展UART芯片,軟件有一定的復(fù)雜度;第三,不擴(kuò)展其他硬件直接利用IO引腳通過(guò)軟件控制實(shí)現(xiàn),該方法軟件最復(fù)雜。根據(jù)以往文獻(xiàn)可知在硬件資源允許的前提下,前兩種方法已經(jīng)得到了廣泛的研究。

然而在產(chǎn)品的研制過(guò)程中,常出現(xiàn)引信硬件資源緊張的情況,無(wú)法擴(kuò)展?jié)M足需求的UART,只能選擇第三種解決方式,總體的高波特率和高可靠性要求增加軟件設(shè)計(jì)的難度。通過(guò)軟件的合理設(shè)計(jì),成功地解決了以上問(wèn)題。

2.串行通信基本原理

串行通信的基本原理是以改變數(shù)字電平的方式將數(shù)據(jù)按照一定的時(shí)間寬度(波特率)按位(通常低位在前高位在后)順序傳輸,分為同步串口和異步串口兩類。同步串口通信主要應(yīng)用于傳輸速率高但傳輸距離要求不高的場(chǎng)合,異步串口則側(cè)重于傳輸速率要求稍低的情形。

圖1給出了異步串行通信的數(shù)據(jù)基本格式,對(duì)于一個(gè)完整的字節(jié),傳輸時(shí)包含起始位、數(shù)據(jù)位、校驗(yàn)位。

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

實(shí)現(xiàn)同步串口通信通常需要6根總線,即收、發(fā)數(shù)據(jù)線,收、發(fā)幀同步線,收、發(fā)位時(shí)鐘線。而異步串口則最少可只需2條總線(最多4條)便實(shí)現(xiàn)數(shù)據(jù)通信,如果采用差分傳輸還可以有效地提高傳輸距離,根據(jù)能否同時(shí)收發(fā)數(shù)據(jù)又分為全雙工和半雙工兩種工作模式。

圖2是應(yīng)用最普遍的串口形式之一的RS485/422串口總線,RS485半雙工傳輸采用一對(duì)差分信號(hào),由主控端的RE和DE來(lái)控制當(dāng)前數(shù)據(jù)收發(fā),收發(fā)不能同時(shí)進(jìn)行;RS422全雙工傳輸采用兩對(duì)差分信號(hào),主控端直接獨(dú)立收發(fā),且收發(fā)可同時(shí)進(jìn)行。

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

本研究通過(guò)軟件控制改變GPIO端口的狀態(tài),完成RS485/422串口通信的時(shí)序。

3.基本流程設(shè)計(jì)

為提高軟件的質(zhì)量和可維護(hù)性,收發(fā)通訊實(shí)現(xiàn)時(shí)均采用位、字節(jié)和幀三個(gè)處理層次。每層相對(duì)獨(dú)立,低層處理的結(jié)果通過(guò)狀態(tài)傳遞方式通知上一層。

研究中采用的數(shù)據(jù)傳輸格式:1bit起始位“0”,8bit數(shù)據(jù)位(先低后高),無(wú)校驗(yàn)位,1bit停止位“1”,每個(gè)字節(jié)累計(jì)為10bit.

3.1 發(fā)送通信流程

主動(dòng)發(fā)送數(shù)據(jù)形式的流程如下:

1)底層:位發(fā)送。在波特率控制的時(shí)間間隔內(nèi)將發(fā)送數(shù)據(jù)管腳置為和當(dāng)前bit一致的電平狀態(tài)。

2)中間層:字節(jié)發(fā)送,如圖3所示。發(fā)送當(dāng)前bit,發(fā)送完位計(jì)數(shù)器+1,如果位數(shù)達(dá)到10位,則當(dāng)前字節(jié)發(fā)送結(jié)束,并通知頂層;3)頂層:幀發(fā)送,如圖4所示。首先檢測(cè)串口當(dāng)前狀態(tài)是否為發(fā)送允許,如果不是則將串口置為接收禁止、發(fā)送允許狀態(tài),確定了發(fā)送允許后進(jìn)入幀發(fā)送。幀發(fā)送按照?qǐng)?bào)文格式順序發(fā)送各字節(jié),發(fā)送結(jié)束將串口設(shè)為發(fā)送禁止、接收允許狀態(tài)。

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

3.2 接收通信流程

接收通信需要把每一個(gè)bit的數(shù)據(jù)準(zhǔn)確地檢測(cè)出來(lái),確定字節(jié)的起止位,判斷幀的起止字節(jié),也就是說(shuō)通過(guò)分析和計(jì)算將數(shù)據(jù)格式和通信協(xié)議所規(guī)定的每一個(gè)細(xì)節(jié)精確定位。對(duì)于幀起始時(shí)刻的判斷,根據(jù)圖1數(shù)據(jù)格式知在數(shù)據(jù)傳輸?shù)倪^(guò)程中,即使數(shù)據(jù)位為全“1”或全“0”,由于有起始位和停止位的存在,也不會(huì)出現(xiàn)連續(xù)10個(gè)bit的“1”或“0”的情況,于是當(dāng)連續(xù)出現(xiàn)10個(gè)bit的“1”時(shí),則數(shù)據(jù)線處于停止傳輸?shù)臓顟B(tài);而連續(xù)出現(xiàn)10個(gè)bit的“0”時(shí),則數(shù)據(jù)線處于異常狀態(tài)。于是接收通信開始后至少連續(xù)10個(gè)bit的“1”之后的“0”可以作為幀的起始位。這里的“幀”不是指通信協(xié)議中的完整報(bào)文,只是指收到的一段數(shù)據(jù),至于當(dāng)前字節(jié)是否為報(bào)文頭,則需根據(jù)協(xié)議判斷。好處是不漏任何數(shù)據(jù),可靠接收約定報(bào)文。

接收通信流程如下:

1)底層:位接收,如圖5所示。位接收在由波特率確定的時(shí)間間隔到達(dá)時(shí),采樣接收數(shù)據(jù)線的電平狀態(tài)作為當(dāng)前bit值,同時(shí)判斷幀起始位,幀開始后的位接收完成,通知中間層進(jìn)行字節(jié)處理。

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

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

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

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

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

4.面向?qū)ο髮?shí)現(xiàn)方法

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

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

4.1 GPIO管腳類數(shù)據(jù)結(jié)構(gòu)

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

軟件數(shù)據(jù)類型與處理器的型號(hào)相關(guān),本文采用TMS3206713處理器,為有效控制數(shù)制,將硬件支持?jǐn)?shù)制和編譯系統(tǒng)符號(hào)相對(duì)應(yīng),將C6000數(shù)據(jù)類型重定義,在GPIO操作中主要使用無(wú)符號(hào)數(shù)。

4.2 串口類數(shù)據(jù)結(jié)構(gòu)

為了區(qū)分當(dāng)前使用的串口類型,故定義串口類型號(hào)枚舉,為串口操作程序提供識(shí)別入口。

由類的構(gòu)造函數(shù)知,由于RS422和RS485所使用的管腳不同,為了將每種操作統(tǒng)一到一個(gè)函數(shù)中,采用了swtich結(jié)構(gòu),其他成員函數(shù)類似。其中發(fā)射函數(shù)Sending()對(duì)應(yīng)圖3、4中的流程,接收函數(shù)Receving()對(duì)應(yīng)圖5、6、7中的流程。

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

5.位檢測(cè)與接收通信可靠性

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

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

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

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

通過(guò)改變GPIO端口狀態(tài)實(shí)現(xiàn)RS485/422串口通信

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

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

6.結(jié)論

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

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    555

    文章

    8142

    瀏覽量

    355193
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    52167

    瀏覽量

    436090
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2948

    瀏覽量

    89341
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    stm32串口1和RS485通信串口2的配置過(guò)程是怎樣的?

    stm32串口1和RS485通信串口2的配置過(guò)程是怎樣的?
    發(fā)表于 12-08 06:49

    RS485 232串口通信數(shù)據(jù)解析

    文章目錄(RS485 232串口通信數(shù)據(jù)解析實(shí)用干貨(1)生成一個(gè)適合你的列表創(chuàng)建一個(gè)表格設(shè)定內(nèi)容居中、居左、居右SmartyPants創(chuàng)建一個(gè)自定義列表如何創(chuàng)建一個(gè)注腳注釋也是必不可少的KaTeX
    發(fā)表于 02-22 07:14

    RS232C/RS422/RS485通信標(biāo)準(zhǔn)

    RS232C、RS422/RS485通信標(biāo)準(zhǔn) 一、RS232C串行接口標(biāo)準(zhǔn)簡(jiǎn)介
    發(fā)表于 10-17 08:35 ?1.2w次閱讀
    <b class='flag-5'>RS</b>232C/<b class='flag-5'>RS422</b>/<b class='flag-5'>RS485</b><b class='flag-5'>串</b>行<b class='flag-5'>通信</b>標(biāo)準(zhǔn)

    RS232-RS485串口通信詳解

    RS232-RS485串口通信詳解,很不錯(cuò)的東東
    發(fā)表于 08-09 15:08 ?29次下載

    rs232串口接線,RS232串口通信基本接線方法

    目前較為常用的串口有9針串口(DB9)和25針串口(DB25),通信距離較近時(shí)(《12m),可以用電纜線直接連接標(biāo)準(zhǔn)RS232
    發(fā)表于 11-01 15:47 ?7w次閱讀
    <b class='flag-5'>rs</b>232<b class='flag-5'>串口</b>接線,<b class='flag-5'>RS</b>232<b class='flag-5'>串口</b><b class='flag-5'>通信</b>基本接線方法

    RS485轉(zhuǎn)換器可有效解決RS232串口通信中存在的問(wèn)題

    采用RS485轉(zhuǎn)換器,可有效解決RS232串口通信中存在的一些問(wèn)題: RS232通信距離,理論上
    發(fā)表于 02-13 10:57 ?2311次閱讀

    RS485串口轉(zhuǎn)mqtt協(xié)議網(wǎng)關(guān)

    RS485串口轉(zhuǎn)mqtt協(xié)議網(wǎng)關(guān)
    發(fā)表于 11-21 10:12 ?2515次閱讀
    <b class='flag-5'>RS485</b><b class='flag-5'>串口</b>轉(zhuǎn)mqtt協(xié)議網(wǎng)關(guān)

    RS485/RS232串口轉(zhuǎn)Modbus網(wǎng)關(guān)

    RS485/RS232串口轉(zhuǎn)Modbus網(wǎng)關(guān)
    發(fā)表于 12-03 16:59 ?2792次閱讀

    RS485或者rs232串口設(shè)備如何上傳mqtt平臺(tái)

    RS485或者rs232串口設(shè)備如何上傳mqtt平臺(tái)
    發(fā)表于 12-03 17:03 ?1924次閱讀

    (RS485 232串口通信數(shù)據(jù)解析實(shí)用干貨(1)

    文章目錄(RS485 232串口通信數(shù)據(jù)解析實(shí)用干貨(1)生成一個(gè)適合你的列表創(chuàng)建一個(gè)表格設(shè)定內(nèi)容居中、居左、居右SmartyPants創(chuàng)建一個(gè)自定義列表如何創(chuàng)建一個(gè)注腳注釋也是必不可少的KaTeX
    發(fā)表于 12-28 19:35 ?17次下載
    (<b class='flag-5'>RS485</b> 232<b class='flag-5'>串口</b><b class='flag-5'>通信</b>數(shù)據(jù)解析實(shí)用干貨(1)

    如何實(shí)現(xiàn)RS485串口通訊采集模擬量

    如何實(shí)現(xiàn)RS485串口通訊采集模擬量流程分享
    的頭像 發(fā)表于 08-23 11:30 ?5108次閱讀
    如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>RS485</b><b class='flag-5'>串口</b>通訊采集模擬量

    如何實(shí)現(xiàn)開關(guān)量輸入與繼電器輸出聯(lián)動(dòng)功能RS485串口通訊

    如何實(shí)現(xiàn)開關(guān)量輸入與繼電器輸出聯(lián)動(dòng)功能RS485串口通訊流程分享
    的頭像 發(fā)表于 08-23 11:33 ?2371次閱讀
    如何<b class='flag-5'>實(shí)現(xiàn)</b>開關(guān)量輸入與繼電器輸出聯(lián)動(dòng)功能<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>通訊

    工業(yè)RS485串口網(wǎng)關(guān)實(shí)現(xiàn)485接口數(shù)據(jù)采集

    其成為首選的串行接口。但是RS485通信的最遠(yuǎn)的短離也只有1.2KM,無(wú)法實(shí)現(xiàn)遠(yuǎn)程控制,對(duì)于分布式的設(shè)備來(lái)說(shuō),環(huán)境不適合布線或者布線成本高,數(shù)據(jù)采集遠(yuǎn)程監(jiān)控存在問(wèn)題。那么如何解決這個(gè)問(wèn)題呢? 利用物通博聯(lián)工業(yè)
    的頭像 發(fā)表于 02-03 16:56 ?2063次閱讀
    工業(yè)<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>網(wǎng)關(guān)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>485</b>接口數(shù)據(jù)采集

    rs422rs485的區(qū)別

    。 首先,RS422RS485都是點(diǎn)對(duì)點(diǎn)通信協(xié)議,即只能在單個(gè)發(fā)送方和單個(gè)接收方之間進(jìn)行通信。它們通過(guò)將電壓差異傳輸?shù)綌?shù)據(jù)線上進(jìn)行
    的頭像 發(fā)表于 12-20 17:03 ?9767次閱讀

    RS232、RS422RS485怎么選?串口通信標(biāo)準(zhǔn)的深度剖析!

    RS232、RS422RS485三種串口通訊規(guī)范各有千秋,適用于不同的應(yīng)用場(chǎng)景。RS232適宜短路線、低速簡(jiǎn)單地通訊,
    的頭像 發(fā)表于 09-02 11:51 ?5508次閱讀
    <b class='flag-5'>RS</b>232、<b class='flag-5'>RS422</b>、<b class='flag-5'>RS485</b>怎么選?<b class='flag-5'>串口</b><b class='flag-5'>通信</b>標(biāo)準(zhǔn)的深度剖析!