国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過改變GPIO端口狀態實現RS485/422串口通信

電子設計 ? 來源:電子世界 ? 作者:張忠波,何苗,姚 ? 2020-02-26 08:02 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.引言

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

然而在產品的研制過程中,常出現引信硬件資源緊張的情況,無法擴展滿足需求的UART,只能選擇第三種解決方式,總體的高波特率和高可靠性要求增加軟件設計的難度。通過軟件的合理設計,成功地解決了以上問題。

2.串行通信基本原理

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

圖1給出了異步串行通信的數據基本格式,對于一個完整的字節,傳輸時包含起始位、數據位、校驗位。

通過改變GPIO端口狀態實現RS485/422串口通信

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

圖2是應用最普遍的串口形式之一的RS485/422串口總線,RS485半雙工傳輸采用一對差分信號,由主控端的RE和DE來控制當前數據收發,收發不能同時進行;RS422全雙工傳輸采用兩對差分信號,主控端直接獨立收發,且收發可同時進行。

通過改變GPIO端口狀態實現RS485/422串口通信

本研究通過軟件控制改變GPIO端口的狀態,完成RS485/422串口通信的時序。

3.基本流程設計

為提高軟件的質量和可維護性,收發通訊實現時均采用位、字節和幀三個處理層次。每層相對獨立,低層處理的結果通過狀態傳遞方式通知上一層。

研究中采用的數據傳輸格式:1bit起始位“0”,8bit數據位(先低后高),無校驗位,1bit停止位“1”,每個字節累計為10bit.

3.1 發送通信流程

主動發送數據形式的流程如下:

1)底層:位發送。在波特率控制的時間間隔內將發送數據管腳置為和當前bit一致的電平狀態。

2)中間層:字節發送,如圖3所示。發送當前bit,發送完位計數器+1,如果位數達到10位,則當前字節發送結束,并通知頂層;3)頂層:幀發送,如圖4所示。首先檢測串口當前狀態是否為發送允許,如果不是則將串口置為接收禁止、發送允許狀態,確定了發送允許后進入幀發送。幀發送按照報文格式順序發送各字節,發送結束將串口設為發送禁止、接收允許狀態。

通過改變GPIO端口狀態實現RS485/422串口通信

通過改變GPIO端口狀態實現RS485/422串口通信

3.2 接收通信流程

接收通信需要把每一個bit的數據準確地檢測出來,確定字節的起止位,判斷幀的起止字節,也就是說通過分析和計算將數據格式和通信協議所規定的每一個細節精確定位。對于幀起始時刻的判斷,根據圖1數據格式知在數據傳輸的過程中,即使數據位為全“1”或全“0”,由于有起始位和停止位的存在,也不會出現連續10個bit的“1”或“0”的情況,于是當連續出現10個bit的“1”時,則數據線處于停止傳輸的狀態;而連續出現10個bit的“0”時,則數據線處于異常狀態。于是接收通信開始后至少連續10個bit的“1”之后的“0”可以作為幀的起始位。這里的“幀”不是指通信協議中的完整報文,只是指收到的一段數據,至于當前字節是否為報文頭,則需根據協議判斷。好處是不漏任何數據,可靠接收約定報文。

接收通信流程如下:

1)底層:位接收,如圖5所示。位接收在由波特率確定的時間間隔到達時,采樣接收數據線的電平狀態作為當前bit值,同時判斷幀起始位,幀開始后的位接收完成,通知中間層進行字節處理。

通過改變GPIO端口狀態實現RS485/422串口通信

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

通過改變GPIO端口狀態實現RS485/422串口通信

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

通過改變GPIO端口狀態實現RS485/422串口通信

4.面向對象實現方法

在DSP中,對某一個GPIO管腳操作,需要對某一個寄存器的某一位進行置位或者清零。

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

4.1 GPIO管腳類數據結構

在構建GPIO管腳類時,圍繞寄存器以及位地址操作和電平操作進行。

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

4.2 串口類數據結構

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

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

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

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

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

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

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

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

通過改變GPIO端口狀態實現RS485/422串口通信

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

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

6.結論

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

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dsp
    dsp
    +關注

    關注

    561

    文章

    8247

    瀏覽量

    366746
  • 芯片
    +關注

    關注

    463

    文章

    54016

    瀏覽量

    466292
  • 總線
    +關注

    關注

    10

    文章

    3040

    瀏覽量

    91676
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    RS485 232串口通信數據解析

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

    RS232C/RS422/RS485通信標準

    RS232C、RS422/RS485通信標準 一、RS232C串行接口標準簡介
    發表于 10-17 08:35 ?1.3w次閱讀
    <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>標準

    RS232-RS485串口通信詳解

    RS232-RS485串口通信詳解,很不錯的東東
    發表于 08-09 15:08 ?30次下載

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

    目前較為常用的串口有9針串口(DB9)和25針串口(DB25),通信距離較近時(《12m),可以用電纜線直接連接標準RS232
    發表于 11-01 15:47 ?7.2w次閱讀
    <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轉換器可有效解決RS232串口通信中存在的問題

    采用RS485轉換器,可有效解決RS232串口通信中存在的一些問題: RS232通信距離,理論上
    發表于 02-13 10:57 ?2656次閱讀

    RS485串口轉mqtt協議網關

    RS485串口轉mqtt協議網關
    發表于 11-21 10:12 ?2796次閱讀
    <b class='flag-5'>RS485</b><b class='flag-5'>串口</b>轉mqtt協議網關

    USB轉RS485串口電路設計

    USB轉串口芯片的串口信號一般為TTL/CMOS電平,在實現半雙工 RS485 串口時需要外接485
    發表于 12-01 11:21 ?53次下載
    USB轉<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>電路設計

    RS485/RS232串口轉Modbus網關

    RS485/RS232串口轉Modbus網關
    發表于 12-03 16:59 ?3130次閱讀

    RS485或者rs232串口設備如何上傳mqtt平臺

    RS485或者rs232串口設備如何上傳mqtt平臺
    發表于 12-03 17:03 ?2232次閱讀

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

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

    如何實現RS485串口通訊采集模擬量

    如何實現RS485串口通訊采集模擬量流程分享
    的頭像 發表于 08-23 11:30 ?5868次閱讀
    如何<b class='flag-5'>實現</b><b class='flag-5'>RS485</b><b class='flag-5'>串口</b>通訊采集模擬量

    如何實現開關量輸入與繼電器輸出聯動功能RS485串口通訊

    如何實現開關量輸入與繼電器輸出聯動功能RS485串口通訊流程分享
    的頭像 發表于 08-23 11:33 ?2981次閱讀
    如何<b class='flag-5'>實現</b>開關量輸入與繼電器輸出聯動功能<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>通訊

    工業RS485串口網關實現485接口數據采集

    其成為首選的串行接口。但是RS485通信的最遠的短離也只有1.2KM,無法實現遠程控制,對于分布式的設備來說,環境不適合布線或者布線成本高,數據采集遠程監控存在問題。那么如何解決這個問題呢? 利用物通博聯工業
    的頭像 發表于 02-03 16:56 ?2735次閱讀
    工業<b class='flag-5'>RS485</b><b class='flag-5'>串口</b>網關<b class='flag-5'>實現</b><b class='flag-5'>485</b>接口數據采集

    rs422rs485的區別

    。 首先,RS422RS485都是點對點通信協議,即只能在單個發送方和單個接收方之間進行通信。它們通過將電壓差異傳輸到數據線上進行
    的頭像 發表于 12-20 17:03 ?1.2w次閱讀