李 敏,荊炳禮,劉 穎
(西安歐亞學院 信息工程學院,陜西 西安 710065)
基于CORTEX-M3的多機通信網(wǎng)絡的設計與實現(xiàn)
李 敏,荊炳禮,劉 穎
(西安歐亞學院 信息工程學院,陜西 西安 710065)
系統(tǒng)以STM32F103作主控單元,使用RS485通信總線,制定了一套通信協(xié)議,從軟件角度保證了總線仲裁機制的完整,保證了測控網(wǎng)絡的正常運轉。在系統(tǒng)設計論述過程中,根據(jù)RS485通信總線的特點,論述了系統(tǒng)中多機通信設計的原理及過程,結合在系統(tǒng)調試過程中遇到的問題,提出了在使用RS485過程中的注意事項。
RS485;通信協(xié)議;半雙工;發(fā)送端;接收端;CORTEX-M3
隨著嵌入式技術的發(fā)展,測控設備逐漸智能化。企業(yè)信息化需求在設備選型時一個必要條件就是設備要具有聯(lián)網(wǎng)通信接口。RS232接口能夠實現(xiàn)點對點的通信方式,但不能實現(xiàn)聯(lián)網(wǎng)功能,且遠距離傳輸性能抗干擾性差。RS485接口解決了此問題,其數(shù)據(jù)傳輸最高速率可達到10 Mbps,且接口采用平衡驅動器和差分接收器的組合,抗共模干擾能力強,抗噪性好,適合于遠距離傳輸。RS485總線最大可以支持32個節(jié)點,通過特制芯片,最大可以支持400個節(jié)點,因此,RS485非常適合于分布式測控系統(tǒng)通信領域。但RS485只能代表通信的物理介質,數(shù)據(jù)的傳輸訪問必須開發(fā)相應的程序。
CORTEX-M3是基于ARM7架構的處理器內核,采用哈佛架構,其功耗低,性價比高。在多機通信網(wǎng)的設計中,經過需求分析,提出并設計了一種基于CORTEX-M3的多機通信網(wǎng)絡。設計中,CORTEX-M3用做系統(tǒng)終端,作為主機和從機。從機負責前端系統(tǒng)的各類數(shù)據(jù)測量,主機作為控制端,負責各從機測量信息的采集,并通過網(wǎng)絡實現(xiàn)對從機的控制。在系統(tǒng)的設計中,網(wǎng)絡傳輸接口采用RS485,根據(jù)通信網(wǎng)絡特點,設計中自制了RS485多機通信協(xié)議,開發(fā)了基于CORTEX-M3處理器的通信接口程序,程序移植性好,可以移植到CORTEX-M3內核的通信網(wǎng)絡當中。經過測試,系統(tǒng)通信性能良好,無數(shù)據(jù)丟失及網(wǎng)絡死鎖現(xiàn)象。
RS-485標準是為彌補RS-232通信距離短、遠距離通信的抗干擾性能差等缺點而產生的。RS-485標準只規(guī)定了平衡發(fā)送器和接收器的電特性,而沒有規(guī)定接插件、傳輸電纜和應用層通信協(xié)議[1]。
RS-485標準與RS-232不一樣,數(shù)據(jù)信號采用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為 A,另一線定義為 B,如圖1所示。
圖1 RS485器件引腳Fig.1 RS485 device pins
圖2中,RS485發(fā)送器中 A、B之間的高電平是在+2~+6 V之間,表示正邏輯狀態(tài);低電平是在-2~-6 V之間,表示負邏輯狀態(tài)。對于RS485接收端,當在A、B之間有大于+200 mV電壓,輸入為正邏輯電平;小于 輸入為負邏輯電平,如圖3所示。圖1中RS-485器件中有一個信號地,一般,各器件信號地可以連接在一起,或者不連接;器件中,另有一個“使能”控制信號端,用于控制RS485是作為發(fā)送端還是作為接收端。當使能端為高電平時,作為發(fā)送端,當為低電平時,作為接收端。RS485為半雙工通信方式,同一時刻,器件只能作為發(fā)送端或接收端,軟件設計總線仲裁中,通過“使能”信號控制。
圖2 RS485發(fā)送器簡圖Fig.2 RS485 transmitter diagram
圖3 RS485接收器簡圖Fig.3 RS485 receiver diagram
RS485多機通信中,各器件中的A點連接在一起,B點連接在一起,通過雙絞線連接,所有RS485節(jié)點掛接在一對RS485總線上。由于RS485為半雙工工作模式,同一時刻,網(wǎng)絡中只允許一臺RS485接口設備處于發(fā)送狀態(tài),否則,總線上的數(shù)據(jù)會混亂;此外,由于RS485缺乏硬件仲裁機制,通信中,無法通過硬件仲裁來釋放及占有總線,在多機通信網(wǎng)絡中,可以從軟件角度考慮總線仲裁。而RS485標準沒有規(guī)定應用層通信協(xié)議,在軟件設計系統(tǒng)總線仲裁中,可以根據(jù)系統(tǒng)特性及功能,制定相應的應用通信層協(xié)議。
1 )系統(tǒng)簡述
系統(tǒng)中網(wǎng)絡結構采用星形網(wǎng)絡結構,網(wǎng)絡拓撲圖如圖4所示。
圖4 星形拓撲結構示意圖Fig.4 Star topology diagram
系統(tǒng)中的網(wǎng)絡結構由主控機(M0)、從機(S1、S2……)構成,均為嵌入式系統(tǒng)設備,內核為CORTEX-M3。本系統(tǒng)中所有的RS485終端設備為嵌入式設備,終端設備接口一致,直接通過雙絞線連接。
主機負責測控系統(tǒng)的信息采集,控制信息發(fā)送;各從機負責及完成各種信息的測量及數(shù)據(jù)轉換,并將測控信息發(fā)送給主機。系統(tǒng)采用星形拓撲結構 分支節(jié)點故障查找方便,由于接口簡單,擴展性良好,中心節(jié)點通信軟件協(xié)議較復雜,而各分支節(jié)點通信協(xié)議較簡單。
2)RS485通信協(xié)議總線設計
通信協(xié)議的設計主要包括物理層和數(shù)據(jù)鏈路層:
物理層實現(xiàn)以下功能:
發(fā)送數(shù)據(jù)時,將數(shù)據(jù)鏈路層送來的數(shù)據(jù)按字節(jié)進行并串轉換,增加起始位、奇偶校驗位及停止位,然后將轉換后的信號發(fā)送到物理信道上;接收數(shù)據(jù)時,從物理信道串行接收電平信號,然后進行電平轉換、奇偶校驗、串并轉換,得到所接收的數(shù)據(jù)[3]。
數(shù)據(jù)鏈路層實現(xiàn)以下功能:
數(shù)據(jù)鏈路層位于物理層和應用層之間,為應用層提供統(tǒng)一的接口函數(shù),實現(xiàn)無差錯的雙向數(shù)據(jù)傳輸。數(shù)據(jù)鏈路層協(xié)議主要包括幀格式設計、傳輸速率設置、幀收發(fā)程序、字符串收發(fā)程序。
①串口驅動程序設計
STM32F103串口驅動程序的設計調用系統(tǒng)庫函數(shù),省去了很多底層函數(shù)的編寫。幀格式設計、傳輸速率設置通過結構體InitTypeDefInitStruCture結構體賦并初始化完成;幀的發(fā)送及接收已有庫函數(shù)USART_ReceiveData(USART_TypeDef*USARTx)及USART_SendData(USART_TypeDef*USARTx,uint16_t Data),通過這兩個函數(shù)的應用,可以實現(xiàn)字符串的收和發(fā)程序,簡化驅動程序開發(fā)。
在串口驅動程序設計中,需要注意的是:在接收及發(fā)送幀數(shù)據(jù)時,使能端的電平設置,因此收發(fā)程序不能直接使用stm32f中的庫函數(shù)。據(jù)此,在串口驅動程序的設計中,重新編寫了接收及發(fā)送字節(jié)函數(shù)。發(fā)送字節(jié)函數(shù)示例:
②通信協(xié)議設計
為了實現(xiàn)從機信息正確的接收,在設計過程中,根據(jù)系統(tǒng)特點,制定了相應的通信協(xié)議:人為認為每臺從機有地址編碼[4],例如,1號機地址為 0x1,2號機地址為 0x2,以此類推,此數(shù)據(jù)也代表了從機機號。從機全部作為接收端,等待接收命令。
第一步:所有從機處于接收等待狀態(tài);主機發(fā)送一幀數(shù)據(jù)表示地址,從機接收并判斷是否為本機地址:是,則響應;否則,丟棄此幀數(shù)據(jù),繼續(xù)等待接收本機地址幀;
第二步:從機接收到本機地址幀后,發(fā)送一個握手應答數(shù)據(jù)給主機。此時,從機作為發(fā)送端,主機作為接收端。主機發(fā)送完地址幀后隨即切換狀態(tài)并等待接收握手應答數(shù)據(jù)。當接收到總線握手數(shù)據(jù)后,主機判斷是不是所需要讀取的機號的握手通信數(shù)據(jù):是,則通信成功,讀取從機發(fā)送信息;否則,重新開始地址發(fā)送;
第三步:從機發(fā)送總線握手信號后,隨即發(fā)送數(shù)據(jù)給主機。數(shù)據(jù)發(fā)送結束后,恢復等待接受狀態(tài)。
整個通信過程中,所有從機通信協(xié)議全部一致[5],從機接受地址信息并判斷后,如果和本機地址相符,則發(fā)送數(shù)據(jù)給主機。
按照系統(tǒng)中制定的通信協(xié)議,主機和從機的軟件設計流程圖如圖5~圖7所示。
從機作為測控前端,實現(xiàn)系統(tǒng)測控和數(shù)據(jù)傳送,其通訊受控于主機,因而從機接收數(shù)據(jù)采用中斷方式,即從機一旦接收到主機的呼叫信號,立即進入接收中斷與主機通信,其工作流程圖如圖6、7所示。
圖5 從機主程序流程圖Fig.5 Main program flow chart of slave machine
圖6 主機主程序流程圖Fig.6 Main program flow chart of host
圖7 主機接收中斷服務子程序流程圖Fig.7 Program flow chart of the interrupt
在整個系統(tǒng)中,主從機均可作為發(fā)送端和接收端。同一時刻,網(wǎng)絡中只能有一個發(fā)送端,因此,在設計通信協(xié)議的時候,注意狀態(tài)的切換;另根據(jù) 狀態(tài)工作時序特點,需要設計好收發(fā)之間的延時,否則會出現(xiàn)數(shù)據(jù)丟失現(xiàn)象。發(fā)送時,使能端置“1”,延時1 ms左右,再發(fā)送有效數(shù)據(jù),一幀數(shù)據(jù)發(fā)送完畢后再延時1 ms,使能端置“0”。這樣總線在狀態(tài)切換時,使之有一個穩(wěn)定的工作狀態(tài)。
系統(tǒng)使用RS485半雙工收發(fā)器,實現(xiàn)了基于CORTEXM3的多機通信網(wǎng)絡的組建,主機利用順序方式采集數(shù)據(jù),實現(xiàn)了一主多從的通訊方式[6]。主從機通過狀態(tài)的切換,都可以扮演發(fā)送端及接收端的角色,本質上還是使用了半雙工通信的特點,利用軟件進行任務調度,最終實現(xiàn)了星形網(wǎng)絡多機通信。本文設計的RS485通信協(xié)議可移植性強、穩(wěn)定性高、易擴展,可以廣泛應用于工業(yè)控制、現(xiàn)場總線、遠程監(jiān)控等領域。
[1]劉衍偉,陳淵睿.基于RS485總線的監(jiān)控系統(tǒng)研究與設計[J].微處理機,2011(4):65-67.
LIU Yan-wei,CHEN Yuan-rui,Research and design of monitoring system based on RS485 bus [J].Micoprocessor,2011(4):65-67.
[2]張輝,分布式測控系統(tǒng)通信網(wǎng)絡的設計與實現(xiàn)[J].現(xiàn)代科學儀器,2012,12(6):122-125.
ZHANG Hui,The design and implementation of RS485 Bus in distributed water pump intelligent measurement and control system [J].Modern Scientific Instruments,2012,12(6):122-125.
[3]張悅君,基于脈沖變壓器的總線式RS485隔離器[J].電子設計工程,2012(21):166-167.
ZHANG Yue-jun,Bus type RS485 isolation coupler based on pulse transformer[J].Electronic Design Engineering,2012(21):166-167.
[4]韓曉雷,錢東平.基于RS485總線的設備吊裝應力檢測系統(tǒng)[J].起重運輸機械,2009(3):87-89.
HAN Xiao-lei,QIAN Dong-ping,Equipment hoisting stress testing system based on RS485 bus[J].QIAN Ddong-ping,Lifting Transportation Machinery,2009(3):87-89.
[5]李成,王鵬.RS-485總線的高速串行遠距離數(shù)據(jù)傳輸[J].清華大學學報,2009(45):684-687.
LI Cheng,WANG Peng.RS-485 bus-based high-speed serialremote data transmissions [J].JIsinghua Univ(Sci&Tech),2009(45):684-687.
[6]江一舟,張怡聰,李斌.Cortex-M3單片機在工業(yè)儀表中的應用[J].儀表技術,2010(6):24-26.
JIANG Yi-zhou,ZHANG Yi-cong,LI Bin.Implemention of Cortex-M3 micro-controller in industrial instruments[J].Instrument Technique,2010(6):24-26.
The design and implementation of multicomputer communication based on the CORTEX-M3
LI Min ,JING Bing-li,LIU Ying
(Information Engineering College of Xi'an Eurasia University,Xi’an 710065,China)
The system used STM32F103 as main control unit,by using RS485 communication bus,developed a set of communication protocol,from the perspective of software to ensure the integrity of the bus arbitration mechanism,guarantee normal operation of the monitoring and control network.In the process of system design,according to the characteristics of RS485 bus,discussed the principle and process of the system in multi machine communication design,combined with the problems encountered in the process of debugging the system,and puts forward some matters needing attention in using RS485.
RS485;communication protocol;half duplex;the sender;the receiving end;CORTEX-M3
[TN915.41]
A
1674-6236(2014)13-0158-03
2013-10-09 稿件編號:201310025
陜西省科技廳計劃項目(S2012GY2043);西安市社科基金項目(14EA22)
李 敏(1979—),女,陜西西安人,碩士,講師。研究方向:計算機技術、嵌入式系統(tǒng)。