<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è) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于CORTEX-M3的多機通信網(wǎng)絡(luò )的設計與實(shí)現

基于CORTEX-M3的多機通信網(wǎng)絡(luò )的設計與實(shí)現

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

摘要:系統以STM32F103作主控單元,使用總線(xiàn),制定了一套通信協(xié)議,從軟件角度保證了總線(xiàn)仲裁機制的完整,保證了測控網(wǎng)絡(luò )的正常運轉。在系統設計論述過(guò)程中,根據總線(xiàn)的特點(diǎn),論述了系統中多機通信設計的原理及過(guò)程,結合在系統調試過(guò)程中遇到的問(wèn)題,提出了在使用RS485過(guò)程中的注意事項。

本文引用地址:http://dyxdggzs.com/article/201809/388276.htm

隨著(zhù)嵌入式技術(shù)的發(fā)展,測控設備逐漸智能化。企業(yè)信息化需求在設備選型時(shí)一個(gè)必要條件就是設備要具有聯(lián)網(wǎng)通信接口。RS232接口能夠實(shí)現點(diǎn)對點(diǎn)的通信方式,但不能實(shí)現聯(lián)網(wǎng)功能,且遠距離傳輸性能抗干擾性差。RS485接口解決了此問(wèn)題,其數據傳輸最高速率可達到10 Mbps,且接口采用平衡驅動(dòng)器和差分接收器的組合,抗共模干擾能力強,抗噪性好,適合于遠距離傳輸。RS485總線(xiàn)最大可以支持32個(gè)節點(diǎn),通過(guò)特制芯片,最大可以支持400個(gè)節點(diǎn),因此,RS485非常適合于分布式測控系統通信領(lǐng)域。但RS485只能代表通信的物理介質(zhì),數據的傳輸訪(fǎng)問(wèn)必須開(kāi)發(fā)相應的程序。

CORTEX—M3是基于A(yíng)RM7架構的處理器內核,采用哈佛架構,其功耗低,性?xún)r(jià)比高。在多機通信網(wǎng)的設計中,經(jīng)過(guò)需求分析,提出并設計了一種基于CORTEX—M3的多機通信網(wǎng)絡(luò )。設計中,CORTEX—M3用做系統終端,作為主機和從機。從機負責前端系統的各類(lèi)數據測量,主機作為控制端,負責各從機測量信息的采集,并通過(guò)網(wǎng)絡(luò )實(shí)現對從機的控制。在系統的設計中,網(wǎng)絡(luò )傳輸接口采用RS485,根據通信網(wǎng)絡(luò )特點(diǎn),設計中自制了RS485多機通信協(xié)議,開(kāi)發(fā)了基于CORTEX—M3處理器的通信接口程序,程序移植性好,可以移植到CORTEX—M3內核的通信網(wǎng)絡(luò )當中。經(jīng)過(guò)測試,系統通信性能良好,無(wú)數據丟失及網(wǎng)絡(luò )死鎖現象。

1 RS485介紹

RS-485標準是為彌補RS-232通信距離短、遠距離通信的抗干擾性能差等缺點(diǎn)而產(chǎn)生的。RS-485標準只規定了平衡發(fā)送器和接收器的電特性,而沒(méi)有規定接插件、傳輸電纜和應用層通信協(xié)議。

RS-485標準與RS-232不一樣,數據信號采用差分傳輸方式,也稱(chēng)作平衡傳輸,它使用一對雙絞線(xiàn),將其中一線(xiàn)定義為A,另一線(xiàn)定義為B,如圖1所示。

圖2中,RS485發(fā)送器中A、B之間的高電平是在+2~+6 V之間,表示正邏輯狀態(tài);低電平是在-2~-6 V之間,表示負邏輯狀態(tài)。對于RS485,當在A(yíng)、B之間有大于+200 mV電壓,輸入為正邏輯電平;小于-200 mV,輸入為負邏輯電平,如圖3所示。圖1中RS-485器件中有一個(gè)信號地,一般,各器件信號地可以連接在一起,或者不連接;器件中,另有一個(gè)“使能”控制信號端,用于控制RS485是作為發(fā)送端還是作為。當使能端為高電平時(shí),作為發(fā)送端,當為低電平時(shí),作為。RS485為半雙工通信方式,同一時(shí)刻,器件只能作為發(fā)送端或接收端,軟件設計總線(xiàn)仲裁中,通過(guò)“使能”信號控制。

2 RS485在系統中的應用

RS485多機通信中,各器件中的A點(diǎn)連接在一起,B點(diǎn)連接在一起,通過(guò)雙絞線(xiàn)連接,所有RS485節點(diǎn)掛接在一對RS485總線(xiàn)上。由于RS485為半雙工工作模式,同一時(shí)刻,網(wǎng)絡(luò )中只允許一臺RS485接口設備處于發(fā)送狀態(tài),否則,總線(xiàn)上的數據會(huì )混亂;此外,由于RS485缺乏硬件仲裁機制,通信中,無(wú)法通過(guò)硬件仲裁來(lái)釋放及占有總線(xiàn),在多機通信網(wǎng)絡(luò )中,可以從軟件角度考慮總線(xiàn)仲裁。而RS485標準沒(méi)有規定應用層通信協(xié)議,在軟件設計系統總線(xiàn)仲裁中,可以根據系統特性及功能,制定相應的應用通信層協(xié)議。

1)系統簡(jiǎn)述

系統中網(wǎng)絡(luò )結構采用星形網(wǎng)絡(luò )結構,網(wǎng)絡(luò )拓撲圖如圖4所示。

系統中的網(wǎng)絡(luò )結構由主控機(M0)、從機(S1、S2……)構成,均為嵌入式系統設備,內核為CORTEX—M3。本系統中所有的RS485終端設備為嵌入式設備,終端設備接口一致,直接通過(guò)雙絞線(xiàn)連接。

主機負責測控系統的信息采集??刂菩畔l(fā)送;各從機負責及完成各種信息的測量及數據轉換,并將測控信息發(fā)送給主機。系統采用星形拓撲結構,分支節點(diǎn)故障查找方便,由于接口簡(jiǎn)單,擴展性良好,中心節點(diǎn)通信軟件協(xié)議較復雜,而各分支節點(diǎn)通信協(xié)議較簡(jiǎn)單。

2)協(xié)議總線(xiàn)設計

通信協(xié)議的設計主要包括物理層和數據鏈路層:

物理層實(shí)現以下功能:

發(fā)送數據時(shí),將數據鏈路層送來(lái)的數據按字節進(jìn)行并串轉換,增加起始位、奇偶校驗位及停止位,然后將轉換后的信號發(fā)送到物理信道上;接收數據時(shí),從物理信道串行接收電平信號,然后進(jìn)行電平轉換、奇偶校驗、串并轉換,得到所接收的數據。

數據鏈路層實(shí)現以下功能:

數據鏈路層位于物理層和應用層之間,為應用層提供統一的接口函數,實(shí)現無(wú)差錯的雙向數據傳輸。數據鏈路層協(xié)議主要包括幀格式設計、傳輸速率設置、幀收發(fā)程序、字符串收發(fā)程序。

①串口驅動(dòng)程序設計

STM32F103串口驅動(dòng)程序的設計調用系統庫函數,省去了很多底層函數的編寫(xiě)。幀格式設計、傳輸速率設置通過(guò)結構體InitType DefInit StruCture結構體賦并初始化完成;幀的發(fā)送及接收已有庫函數USART_ReceiveData(USART_TypeDef*USARTx)及USART_SendData(USART_Type Def*USARTx,uint16_tData),通過(guò)這兩個(gè)函數的應用,可以實(shí)現字符串的收和發(fā)程序,簡(jiǎn)化驅動(dòng)程序開(kāi)發(fā)。

在串口驅動(dòng)程序設計中,需要注意的是:在接收及發(fā)送幀數據時(shí),使能端的電平設置,因此收發(fā)程序不能直接使用stm32f中的庫函數。據此,在串口驅動(dòng)程序的設計中,重新編寫(xiě)了接收及發(fā)送字節函數。發(fā)送字節函數示例:

②通信協(xié)議設計

為了實(shí)現從機信息正確的接收,在設計過(guò)程中,根據系統特點(diǎn),制定了相應的通信協(xié)議:人為認為每臺從機有地址編碼,例如,1號機地址為0x1,2號機地址為0x2,以此類(lèi)推,此數據也代表了從機機號。從機全部作為接收端,等待接收命令。

第一步:所有從機處于接收等待狀態(tài);主機發(fā)送一幀數據表示地址,從機接收并判斷是否為本機地址:是,則響應;否則,丟棄此幀數據,繼續等待接收本機地址幀;

第二步:從機接收到本機地址幀后,發(fā)送一個(gè)握手應答數據給主機。此時(shí),從機作為發(fā)送端,主機作為接收端。主機發(fā)送完地址幀后隨即切換狀態(tài)并等待接收握手應答數據。當接收到總線(xiàn)握手數據后,主機判斷是不是所需要讀取的機號的握手通信數據:是,則通信成功,讀取從機發(fā)送信息;否則,重新開(kāi)始地址發(fā)送;

第三步:從機發(fā)送總線(xiàn)握手信號后,隨即發(fā)送數據給主機。數據發(fā)送結束后,恢復等待接受狀態(tài)。

整個(gè)通信過(guò)程中,所有從機通信協(xié)議全部一致,從機接受地址信息并判斷后,如果和本機地址相符,則發(fā)送數據給主機。

按照系統中制定的通信協(xié)議,主機和從機的軟件設計流程圖如圖5一圖7所示。

從機作為測控前端,實(shí)現系統測控和數據傳送,其通訊受控于主機,因而從機接收數據采用中斷方式,即從機一旦接收到主機的呼叫信號,立即進(jìn)入接收中斷與主機通信,其工作流程圖如圖6、7所示。

在整個(gè)系統中,主從機均可作為發(fā)送端和接收端。同一時(shí)刻,網(wǎng)絡(luò )中只能有一個(gè)發(fā)送端,因此,在設計通信協(xié)議的時(shí)候,注意狀態(tài)的切換;另根據RS485狀態(tài)工作時(shí)序特點(diǎn),需要設計好收發(fā)之間的延時(shí),否則會(huì )出現數據丟失現象。發(fā)送時(shí),使能端置“1”,延時(shí)1 ms左右,再發(fā)送有效數據,一幀數據發(fā)送完畢后再延時(shí)1 ms,使能端置“0”。這樣總線(xiàn)在狀態(tài)切換時(shí),使之有一個(gè)穩定的工作狀態(tài)。

3 結束語(yǔ)

系統使用RS485半雙工收發(fā)器,實(shí)現了基于CORTEX—M3的多機通信網(wǎng)絡(luò )的組建,主機利用順序方式采集數據,實(shí)現了一主多從的通訊方式。主從機通過(guò)狀態(tài)的切換,都可以扮演發(fā)送端及接收端的角色,本質(zhì)上還是使用了半雙工通信的特點(diǎn),利用軟件進(jìn)行任務(wù)調度,最終實(shí)現了星形網(wǎng)絡(luò )多機通信。本文設計的RS485通信協(xié)議可移植性強、穩定性高、易擴展,可以廣泛應用于工業(yè)控制、現場(chǎng)總線(xiàn)、遠程監控等領(lǐng)域。



評論


相關(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>