• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種串口波特率匹配方法研究與實(shí)現(xiàn)

      2023-03-22 09:28:54陳文印吳同德陳亞平吳科甲
      物聯(lián)網(wǎng)技術(shù) 2023年3期
      關(guān)鍵詞:機(jī)側(cè)機(jī)設(shè)備波特率

      湯 婕,陳文印,吳同德,陳亞平,胡 超,吳科甲

      (福建信息職業(yè)技術(shù)學(xué)院,福建 福州 350000)

      0 引 言

      串口通信是芯片或者設(shè)備的重要通信方式之一,具有結(jié)構(gòu)簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信等優(yōu)點(diǎn),應(yīng)用廣泛。常見(jiàn)的芯片都集成有串口外設(shè),通信雙方的通信參數(shù)需完全匹配,才能正常交互數(shù)據(jù)。其中波特率、停止位、校驗(yàn)位以及數(shù)據(jù)位是串口的幾個(gè)參數(shù)指標(biāo)[1-3]。

      國(guó)際上規(guī)定了一個(gè)標(biāo)準(zhǔn)波特率系列,常用的波特率有1 200、1 800、2 400、4 800、9 600、19 200 和 115 200 等。在工程實(shí)踐中,有些工控PLC、智能接口等會(huì)規(guī)律地向外發(fā)送一些固定的字符或數(shù)據(jù),然后等待外部設(shè)備向它們輸入期待中的握手信號(hào),大部分485控制采集設(shè)備只會(huì)被動(dòng)應(yīng)答。

      無(wú)論采用哪種方式,由于設(shè)備的波特率是可配置的,在未告知設(shè)備實(shí)際工作的波特率情況下,如何快速獲取并修改設(shè)備波特率等通信參數(shù),成為項(xiàng)目實(shí)施的一個(gè)重要問(wèn)題。

      針對(duì)上述問(wèn)題,本文創(chuàng)新地提出一種只需普通調(diào)試工具也能在短時(shí)間內(nèi)進(jìn)行參數(shù)匹配的方法,該方法代碼門檻低、容易實(shí)現(xiàn),對(duì)嵌入式芯片無(wú)特殊要求,本文還給出了主機(jī)側(cè)和從機(jī)側(cè)的實(shí)現(xiàn)工作流程。

      1 研究現(xiàn)狀

      目前有不少研究人員對(duì)波特率等通信參數(shù)的自動(dòng)識(shí)別進(jìn)行研究,可以歸為以下幾種方法[4-10]:

      (1)標(biāo)準(zhǔn)波特率窮舉法。該方法要求從機(jī)側(cè)的波特率必須在有限的幾個(gè)固定數(shù)值之間變化,如300~115 200之間的標(biāo)準(zhǔn)值,且從機(jī)側(cè)的工作振蕩頻率穩(wěn)定。主機(jī)啟動(dòng)通信程序后,逐個(gè)嘗試以不同的波特率接收從機(jī)發(fā)出的特定字符,直到能正確接收為止。該方法操作簡(jiǎn)單,但連接時(shí)間長(zhǎng),局限于只能在固定數(shù)值間變化。

      (2)碼元寬度實(shí)時(shí)檢測(cè)法。該方法要求從機(jī)按照約定發(fā)送某一數(shù)據(jù),主機(jī)通過(guò)嵌入式芯片定時(shí)器測(cè)量RXD引腳上輸入數(shù)據(jù)的碼元寬度,而后計(jì)算出待測(cè)系統(tǒng)通信的波特率。該方法目前應(yīng)用比較廣泛,但對(duì)主機(jī)側(cè)性能要求較高,需要能夠測(cè)試出碼元寬度。例如,某GSM模塊在設(shè)計(jì)時(shí)為了適應(yīng)各種通信波特率,要求其通信的系統(tǒng)首先發(fā)送AT指令,它就是依靠AT指令的碼元寬度計(jì)算出對(duì)方波特率的。

      (3)固定波特率法。該方法在主機(jī)側(cè)默認(rèn)一個(gè)波特率,收到不同波特率發(fā)出的特定指令并解析出來(lái),以十六進(jìn)制進(jìn)行比較,分析出從機(jī)側(cè)發(fā)送的波特率,隨后即可進(jìn)行通信。該方法理論上沒(méi)有可靠的保證,在實(shí)際應(yīng)用中匹配不成功的概率較高。

      2 方法原理

      2.1 總體流程

      從機(jī)設(shè)備在上電后,以特定波特率保持一小段時(shí)間,此時(shí)從機(jī)若接收到主機(jī)以相同波特率發(fā)送的特定指令,從機(jī)設(shè)備就維持該波特率。主機(jī)設(shè)備此時(shí)可以發(fā)送修改或者讀取串口通信參數(shù)的配置指令。修改后重啟從機(jī)設(shè)備,從機(jī)設(shè)備按照設(shè)置后的參數(shù)運(yùn)行,從而達(dá)到串口通信匹配的過(guò)程,如圖1所示。

      圖1 波特率匹配流程

      具體流程可分為如下三個(gè)階段:

      第一階段為握手階段,主機(jī)側(cè)設(shè)置為默認(rèn)參數(shù)運(yùn)行,例如“9600,8,N,1”,并按照一定周期發(fā)送保持波特率指令“#keepbaud”,此時(shí)命令發(fā)送周期應(yīng)小于1 s,確保從機(jī)側(cè)能收到指令。重啟從機(jī)設(shè)備,從機(jī)設(shè)備在重啟后2 s內(nèi)按照默認(rèn)參數(shù)運(yùn)行,能接收到主機(jī)側(cè)發(fā)送的指令;收到指令后,從機(jī)應(yīng)及時(shí)返回應(yīng)答指令“#ok”。主機(jī)收到應(yīng)答指令,就可以判斷與從機(jī)握手成功。

      第二階段為調(diào)試階段,從機(jī)收到主機(jī)發(fā)送的保持波特率指令后繼續(xù)保持默認(rèn)參數(shù)運(yùn)行,并且處理主機(jī)后續(xù)發(fā)送的其他指令。在這個(gè)階段,主機(jī)可以發(fā)送指令讀取或者修改串口運(yùn)行配置參數(shù),例如“#115200,8,N,1”,從機(jī)收到指令后返回應(yīng)答指令。

      第三階段為重啟運(yùn)行階段。主機(jī)側(cè)此時(shí)不能發(fā)送保持波特率指令,若主機(jī)側(cè)發(fā)送了其他指令,例如ModBus指令,從機(jī)側(cè)應(yīng)忽略這些指令。重啟2 s后,設(shè)備將以修改之后的波特率運(yùn)行,處于正常的工作狀態(tài)。如果設(shè)備被設(shè)計(jì)為ModBus設(shè)備,可以使用該協(xié)議對(duì)設(shè)備進(jìn)行調(diào)試。

      2.2 主機(jī)側(cè)工作流程

      主機(jī)側(cè)一般為個(gè)人電腦或者專用的配置設(shè)備,不論設(shè)備能否運(yùn)行一些高級(jí)的語(yǔ)言,只需要有定時(shí)器和串口外設(shè),就能實(shí)現(xiàn)主機(jī)側(cè)相關(guān)功能。參考工作流程如圖2所示。

      圖2 工作流程

      首先,主機(jī)側(cè)應(yīng)不斷發(fā)送保持波特率指令“#keepbaud”,時(shí)間間隔可以取0.5 s左右,時(shí)間間隔要保證從機(jī)側(cè)在等待的過(guò)程中至少收到一條指令。發(fā)送的總時(shí)間長(zhǎng)度可以取5 s,給操作人員足夠的操作時(shí)間。5 s后,發(fā)送握手指令“#echo”,查詢從機(jī)側(cè)是否處于配置模式,若未處于配置工作模式,則回到第一步。最后,發(fā)送串口參數(shù)配置指令,例如“#115200,8,N,1”,收到從機(jī)的應(yīng)答則整個(gè)配置流程結(jié)束。

      2.3 從機(jī)側(cè)工作流程

      從機(jī)側(cè)一般為單片機(jī)等嵌入式系統(tǒng)。從最簡(jiǎn)單的51系列到復(fù)雜的ARM系列,嵌入式系統(tǒng)功能差別巨大,性能參差不齊。但是不論功能如何,一般都有定時(shí)器外設(shè)和串口外設(shè),只要有這兩種外設(shè),就可以實(shí)現(xiàn)從機(jī)側(cè)工作流程。具體工作流程如圖3所示。

      圖3 從機(jī)側(cè)工作流程

      嵌入式系統(tǒng)上電后,首先打開(kāi)串口功能,跟主機(jī)側(cè)一樣,以默認(rèn)參數(shù)運(yùn)行,保持接收狀態(tài)延時(shí)2 s。若此時(shí)主機(jī)側(cè)發(fā)送保持波特率指令“#keepbaud”,2 s后從機(jī)收到保持波特率指令,則進(jìn)入到配置模式,反之則進(jìn)入正常工作模式。進(jìn)入配置工作模式時(shí),串口仍然保持默認(rèn)參數(shù)運(yùn)行,保證收到后續(xù)的指令。進(jìn)入正常工作模式,串口則根據(jù)配置參數(shù)運(yùn)行,匹配現(xiàn)場(chǎng)實(shí)際工作環(huán)境。進(jìn)入配置工作模式后,串口保持接收狀態(tài)。接收到數(shù)據(jù)后,首先判斷是否為“#echo”回顯指令,若為回顯指令,返回應(yīng)答包?;仫@指令主要用于測(cè)試判斷從機(jī)側(cè)是否處于配置工作模式。若不是回顯指令,從機(jī)應(yīng)繼續(xù)判斷指令是否為配置指令;若為配置指令,將收到的配置參數(shù)寫入FLASH或者E2PROM中并應(yīng)答。掉電重啟后進(jìn)入正常工作模式時(shí),從存儲(chǔ)外設(shè)中讀取出相關(guān)配置參數(shù)。

      3 測(cè)試與驗(yàn)證

      3.1 Arduino參考代碼

      采用本方法測(cè)試驗(yàn)證時(shí),使用樂(lè)鑫的ESP32開(kāi)發(fā)板,并通過(guò)開(kāi)源電子平臺(tái)Arduino軟件搭建ESP32開(kāi)發(fā)環(huán)境。根據(jù)上述流程,采用C++語(yǔ)言對(duì)其進(jìn)行測(cè)試驗(yàn)證,Arduino部分參考代碼如下:

      3.2 測(cè)試與驗(yàn)證

      如圖4所示,采用樂(lè)鑫的ESP32開(kāi)發(fā)板、溫濕度傳感器以及自主設(shè)計(jì)的拓展開(kāi)發(fā)板來(lái)搭建硬件測(cè)試環(huán)境。將ESP32開(kāi)發(fā)板插到拓展板上,然后通過(guò)杜邦線將拓展板和溫濕度傳感器連接,最后用USB數(shù)據(jù)線將ESP32連接到電腦。這樣就可以實(shí)現(xiàn)對(duì)設(shè)備的串口波特率的修改和匹配。

      圖4 實(shí)物接線示意圖

      采用串口調(diào)試助手進(jìn)行聯(lián)調(diào),從主機(jī)端向從機(jī)發(fā)送指令,從機(jī)設(shè)備接收到指令后進(jìn)行應(yīng)答。接收到應(yīng)答信號(hào)后主機(jī)端向從機(jī)發(fā)送修改指令,從機(jī)設(shè)備接收到指令后保存并應(yīng)答。實(shí)現(xiàn)效果如圖5所示。

      圖5 波特率匹配示意圖

      4 結(jié) 語(yǔ)

      本文利用485通信協(xié)議的特點(diǎn),提出了一種容易實(shí)現(xiàn)、對(duì)設(shè)備芯片無(wú)特殊要求、可以廣泛使用的匹配方法,可利用普通的串口調(diào)試助手在較短的時(shí)間內(nèi)完成參數(shù)匹配過(guò)程。文中對(duì)主從機(jī)側(cè)軟件的流程進(jìn)行了詳細(xì)說(shuō)明,并給出了ESP32的參考代碼。該方法經(jīng)過(guò)多種軟硬件聯(lián)合調(diào)試和驗(yàn)證,方法簡(jiǎn)單可靠,取得了很好的效果。該方法不僅能夠大大減少調(diào)試過(guò)程中的工作量,還能在短時(shí)間內(nèi)快速識(shí)別設(shè)備的波特率。

      猜你喜歡
      機(jī)側(cè)機(jī)設(shè)備波特率
      基于滑模觀測(cè)器的直驅(qū)PMSG機(jī)側(cè)控制算法研究與應(yīng)用
      4.3米頂裝焦?fàn)t機(jī)側(cè)煙氣治理設(shè)計(jì)與實(shí)踐
      寫真地理(2020年23期)2020-09-12 14:24:20
      CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
      智能制造(2020年5期)2020-07-03 06:24:00
      PMSM四象限驅(qū)動(dòng)系統(tǒng)的自適應(yīng)滑模和反步控制
      基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
      淺談煤炭生產(chǎn)企業(yè)綜機(jī)設(shè)備管理問(wèn)題與優(yōu)化策略
      陶瓷工程中冷等靜壓機(jī)設(shè)備的監(jiān)造工作
      論港機(jī)設(shè)備狀態(tài)檢測(cè)預(yù)知維修與管理
      鋼管倒棱機(jī)設(shè)備及專業(yè)技術(shù)水平簡(jiǎn)介
      搗固焦?fàn)t機(jī)側(cè)煙塵收集方式的介紹
      榆林市| 新丰县| 清远市| 威信县| 乃东县| 彭阳县| 梧州市| 营口市| 衢州市| 杭锦旗| 彩票| 繁昌县| 荔浦县| 潞西市| 星座| 东台市| 江陵县| 苍梧县| 遵义县| 乌苏市| 宁武县| 溧水县| 靖安县| 湖口县| 高州市| 阳春市| 博兴县| 广水市| 宁明县| 桃江县| 南乐县| 泰和县| 靖江市| 磴口县| 宁晋县| 古浪县| 陆河县| 文成县| 米脂县| 京山县| 太仆寺旗|