鄧祥忠 徐全元 魯瑩
摘要:為了滿足某些工農(nóng)業(yè)場(chǎng)合需要將在本地的基于RS-485通信協(xié)議的數(shù)據(jù)上傳至互聯(lián)網(wǎng)的需求。設(shè)計(jì)了一個(gè)基于ARM的RS485通信接口與以太網(wǎng)通信接口相互轉(zhuǎn)換的數(shù)據(jù)中繼系統(tǒng)。系統(tǒng)采用STM32F429作為主控芯片,MAX485作為RS-485接口芯片,W5500作為以太網(wǎng)接口芯片,實(shí)現(xiàn)了通信接口的轉(zhuǎn)化、多節(jié)點(diǎn)數(shù)據(jù)處理以及無(wú)網(wǎng)絡(luò)時(shí)數(shù)據(jù)的儲(chǔ)存等功能。并且配合實(shí)時(shí)操作系統(tǒng)?C/OS-III進(jìn)行系統(tǒng)任務(wù)代碼的設(shè)計(jì),同時(shí)基于STemWin設(shè)計(jì)了人機(jī)交互界面,最終提高了系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性。
關(guān)鍵詞:數(shù)據(jù)中繼;STemWin;?C/OS-III;W5500
中圖分類(lèi)號(hào):TP393? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)01-0043-02
Abstract: In order to meet the needs of some industrial and agricultural occasions to upload local data based on the RS-485 communication protocol to the Internet, a data relay system based on ARM-based RS485 communication interface and Ethernet communication interface is designed. The system uses STM32F429 as the main control chip, MAX485 as the RS-485 interface chip, W5500 as the Ethernet interface chip, realizes the conversion of communication interface, multi-node data processing and data storage when there is no network. And cooperate with the real-time operating system ?C/OS-III to design the system task code, and design the human-computer interaction interface based on STemWin, which finally improves the real-time performance and stability of the system.
Key words: data relay;STemWin; ?C/OS-III; W5500
RS-485總線具有成本低廉、設(shè)計(jì)簡(jiǎn)單、控制方便、支持多節(jié)點(diǎn)通信等優(yōu)點(diǎn)[1]。在工業(yè)領(lǐng)域有較多的應(yīng)用,但是RS-485總線協(xié)議卻是一種本地的通信協(xié)議,在當(dāng)前互聯(lián)網(wǎng)技術(shù)飛速發(fā)展的趨勢(shì)之下,其已經(jīng)無(wú)法滿足高度信息化和集成化的需求[2]。W5500是韓國(guó)WIZnet(微知納特)公司發(fā)布的一款集成全硬件TCP/IP協(xié)議棧的嵌入式以太網(wǎng)芯片,能夠簡(jiǎn)單方便地實(shí)現(xiàn)本地?cái)?shù)據(jù)網(wǎng)絡(luò)接入互聯(lián)網(wǎng)的需求,本設(shè)計(jì)旨在應(yīng)用RS-485總線協(xié)議和TP/IP協(xié)議的長(zhǎng)處,實(shí)現(xiàn)由RS-485通信接口和以太網(wǎng)接口的數(shù)據(jù)雙向傳輸,達(dá)到本地?cái)?shù)據(jù)接入互聯(lián)網(wǎng)云端的目的。
1系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件部分主要包括電源部分、STM32F429IGT6微控制器最小系統(tǒng)、MAX485模塊、W5500模塊、顯示模塊等組成。電源部分由5V電源適配器輸入,經(jīng)過(guò)濾波和防過(guò)壓處理后,供顯示模塊使用,另一方面電壓經(jīng)過(guò)ASM1117-3.3V降壓芯片降壓后給STM32供電;STM32F429IGT6是ST公司發(fā)布的基于Cortex-M4的32位RISC內(nèi)核的高性能微處理器,具有高達(dá)180M的主頻,具有硬件浮點(diǎn)單元(FPU)、內(nèi)存保護(hù)單元(MPU)、高達(dá)1MB的FALSH,256KB的SRAM[3];并且內(nèi)置LCD-TFT控制器,可以加快圖形界面的處理。STM32F429通過(guò)FMC并行總線連接外部8MB的SDRAM相連,外部SDRAM主要作為L(zhǎng)CD的顯存使用。MAX485模塊通過(guò)STM32F429的串口2與之進(jìn)行數(shù)據(jù)交互,W5500模塊通過(guò)STM32F4的硬件SPI1與之進(jìn)行數(shù)據(jù)交互。系統(tǒng)硬件框圖如圖1所示,關(guān)鍵模塊的具體敘述如下。
1.1 MAX485模塊
RS-485接口采用差分方式傳輸信號(hào),能有效抑制共模干擾[4],系統(tǒng)采用Maxim公司的MAX485芯片作為RS-485與TTL電平轉(zhuǎn)化芯片,采用單一5V電源供電,擁有發(fā)送接收使能端,使用時(shí)將STM32F429IGT6的串口與芯片的RXD和TXD相連;MAX485模塊作為本地?cái)?shù)據(jù)網(wǎng)絡(luò)的數(shù)據(jù)通信接口,主要負(fù)責(zé)本地單一節(jié)點(diǎn)或多節(jié)點(diǎn)數(shù)據(jù)傳輸,設(shè)計(jì)采用兩線制的接線方式,這種接線方式為總線式拓?fù)浣Y(jié)構(gòu),在同一總線上最多可以掛接32個(gè)節(jié)點(diǎn)。MAX485電路圖如圖2所示。
1.2 W5500模塊
W5500芯片集成硬件化的TCP/IP協(xié)議;內(nèi)部有32K字節(jié)的儲(chǔ)存器作為T(mén)X/RX的緩存;支持10/100Mbps的網(wǎng)絡(luò)傳輸速率,提供網(wǎng)絡(luò)喚醒功能;支持高速的SPI總線與單片機(jī)通信;擁有小巧的LQFP48封裝。系統(tǒng)參考其官方文檔的使用電路,采用STM32F429IGT6的SPI1(NSS、SCK、MISO、MOSI)與W5500相連,W5500模塊的中斷腳與STM32的PC2相連,其硬件復(fù)位(RESET)管腳與STM32的PC3相連。這樣可是實(shí)現(xiàn)單片機(jī)對(duì)模塊的控制與二者的數(shù)據(jù)交互。W5500模塊電路圖如圖3所示。
2系統(tǒng)軟件設(shè)計(jì)
為保證系統(tǒng)的實(shí)時(shí)性及穩(wěn)定性,系統(tǒng)以嵌入式實(shí)時(shí)操作系統(tǒng)?C/OS-III為依托;采用基于ST官方的標(biāo)準(zhǔn)庫(kù)及部分硬件驅(qū)動(dòng),雖然相較于寄存器開(kāi)發(fā)代碼效率更低,但是便于代碼整體的構(gòu)思以及后期的維護(hù)升級(jí);采用keil5集成開(kāi)發(fā)環(huán)境作為代碼編寫(xiě)平臺(tái),移植小型嵌入式文件系統(tǒng)FATFS用于網(wǎng)絡(luò)中斷時(shí)的外部FLASH文件讀寫(xiě)操作;為使系統(tǒng)具有更好的交互體驗(yàn),移植嵌入式GUI STemWin作為圖形界面開(kāi)發(fā)工具。系統(tǒng)軟件框架圖如圖4所示。
2.1基于?C/OS-III的軟件設(shè)計(jì)
?C/OS-III是一個(gè)可裁剪、可剝奪型的多任務(wù)內(nèi)核,其大部分代碼使用C語(yǔ)言編寫(xiě),少部分與硬件有關(guān)的代碼使用匯編語(yǔ)言編寫(xiě),可移植性好;?C/OS-III的運(yùn)行至少需要4K的RAM,系統(tǒng)采用的STM32F429IGT6擁有256K的RAM,完全滿足要求。一開(kāi)始,系統(tǒng)進(jìn)行硬件初始化,包括系統(tǒng)滴答定時(shí)器、GPIO、串口、外部FLASH等,完成后在main函數(shù)里面調(diào)用OSInit()函數(shù)完成操作系統(tǒng)的初始化,然后再完成STemWin顯示任務(wù)、W5500數(shù)據(jù)處理任務(wù)、MAX485數(shù)據(jù)處理任務(wù)、系統(tǒng)檢測(cè)及數(shù)據(jù)處理任務(wù)的創(chuàng)建,創(chuàng)建成功后調(diào)用OSStart()函數(shù)啟動(dòng)任務(wù),然后由操作系統(tǒng)完成各任務(wù)之間的調(diào)度。由于?C/OS-III為可剝奪型內(nèi)核,任務(wù)存在優(yōu)先級(jí),在這里設(shè)定W5500和MAX485數(shù)據(jù)處理任務(wù)優(yōu)先級(jí)為4,檢測(cè)任務(wù)優(yōu)先級(jí)為5,顯示任務(wù)優(yōu)先級(jí)為20。程序整體流程如圖5所示。
系統(tǒng)采用STemWin來(lái)構(gòu)建圖形界面,包括用戶輸入和運(yùn)行時(shí)間、網(wǎng)絡(luò)連接情況外部?jī)?chǔ)存芯片剩余空間大小等系統(tǒng)信息輸出。該數(shù)據(jù)中繼按節(jié)點(diǎn)數(shù)量可分為單一節(jié)點(diǎn)透?jìng)髂J胶投喙?jié)點(diǎn)組幀傳輸模式。透?jìng)髂J较聰?shù)據(jù)從節(jié)點(diǎn)輸出,經(jīng)過(guò)RS-485再到數(shù)據(jù)中繼,再通過(guò)以太網(wǎng)到目的地,輸出數(shù)據(jù)完全一樣并且數(shù)據(jù)長(zhǎng)度不定。組幀(多節(jié)點(diǎn))模式下可以多節(jié)點(diǎn)數(shù)據(jù)傳輸,節(jié)點(diǎn)數(shù)據(jù)位數(shù)固定,地址位固定。系統(tǒng)開(kāi)始需要從屏幕依次輸入網(wǎng)關(guān)參數(shù)、目的IP地址,本機(jī)IP信息等,輸入后選擇為透?jìng)髂J竭€是多節(jié)點(diǎn)模式,若是多節(jié)點(diǎn)模式,需要輸入節(jié)點(diǎn)個(gè)數(shù)及地址范圍、幀頭幀尾等信息,然后跳轉(zhuǎn)到主顯示界面,否則直接跳轉(zhuǎn)。輸入輸出界面流程圖如圖6所示。
3總結(jié)
本文基于ARM Cortex-M4內(nèi)核的STM32F429IGT6微處理器和MAX485、W5500芯片設(shè)置了一個(gè)使RS-485通信接口和以太網(wǎng)接口數(shù)據(jù)相互轉(zhuǎn)化的數(shù)據(jù)中繼,并且通過(guò)使用?C/OS-III操作系統(tǒng)和STemWin圖像界面使系統(tǒng)的穩(wěn)定性、實(shí)時(shí)性和用戶交互體驗(yàn)得到提高,完成了數(shù)據(jù)轉(zhuǎn)換及無(wú)網(wǎng)絡(luò)時(shí)的數(shù)據(jù)儲(chǔ)存的預(yù)期目標(biāo),可用于某些需要RS-485數(shù)據(jù)網(wǎng)絡(luò)上云端的實(shí)際場(chǎng)景。未來(lái)可進(jìn)一步規(guī)范通信數(shù)據(jù)幀結(jié)構(gòu)及減小系統(tǒng)的功耗,使其更適用于工業(yè)領(lǐng)域。
參考文獻(xiàn):
[1] 沈迪,劉光輝,李冀昆,等.電氣化列車(chē)RS-485總線應(yīng)用可靠性研究[J].鐵道機(jī)車(chē)車(chē)輛,2016,36(4):48-50.
[2] 黃大昌,丁力.單片機(jī)和硬協(xié)議棧的Modbus TCP通信方案[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(6):17-20.
[3] 穆向陽(yáng),楊曉東.實(shí)時(shí)嵌入式操作系統(tǒng)μC/OS-Ⅲ在STM32F429IGT6上的移植技術(shù)和實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2018,14(6):204-205,211.
[4] Jeff Lies.RS-485收發(fā)器教程[J].電子技術(shù)應(yīng)用,2015,41(5):15-18.
【通聯(lián)編輯:代影】