基于ARM的RS-485转网口数据中继设计

2021-03-15 06:59邓祥忠徐全元鲁莹
电脑知识与技术 2021年1期

邓祥忠 徐全元 鲁莹

摘要:为了满足某些工农业场合需要将在本地的基于RS-485通信协议的数据上传至互联网的需求。设计了一个基于ARM的RS485通信接口与以太网通信接口相互转换的数据中继系统。系统采用STM32F429作为主控芯片,MAX485作为RS-485接口芯片,W5500作为以太网接口芯片,实现了通信接口的转化、多节点数据处理以及无网络时数据的储存等功能。并且配合实时操作系统?C/OS-III进行系统任务代码的设计,同时基于STemWin设计了人机交互界面,最终提高了系统的实时性和稳定性。

关键词:数据中继;STemWin;?C/OS-III;W5500

中图分类号:TP393        文献标识码:A

文章编号: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总线具有成本低廉、设计简单、控制方便、支持多节点通信等优点[1]。在工业领域有较多的应用,但是RS-485总线协议却是一种本地的通信协议,在当前互联网技术飞速发展的趋势之下,其已经无法满足高度信息化和集成化的需求[2]。W5500是韩国WIZnet(微知纳特)公司发布的一款集成全硬件TCP/IP协议栈的嵌入式以太网芯片,能够简单方便地实现本地数据网络接入互联网的需求,本设计旨在应用RS-485总线协议和TP/IP协议的长处,实现由RS-485通信接口和以太网接口的数据双向传输,达到本地数据接入互联网云端的目的。

1系统硬件设计

系统硬件部分主要包括电源部分、STM32F429IGT6微控制器最小系统、MAX485模块、W5500模块、显示模块等组成。电源部分由5V电源适配器输入,经过滤波和防过压处理后,供显示模块使用,另一方面电压经过ASM1117-3.3V降压芯片降压后给STM32供电;STM32F429IGT6是ST公司发布的基于Cortex-M4的32位RISC内核的高性能微处理器,具有高达180M的主频,具有硬件浮点单元(FPU)、内存保护单元(MPU)、高达1MB的FALSH,256KB的SRAM[3];并且内置LCD-TFT控制器,可以加快图形界面的处理。STM32F429通过FMC并行总线连接外部8MB的SDRAM相连,外部SDRAM主要作为LCD的显存使用。MAX485模块通过STM32F429的串口2与之进行数据交互,W5500模块通过STM32F4的硬件SPI1与之进行数据交互。系统硬件框图如图1所示,关键模块的具体叙述如下。

1.1 MAX485模块

RS-485接口采用差分方式传输信号,能有效抑制共模干扰[4],系统采用Maxim公司的MAX485芯片作为RS-485与TTL电平转化芯片,采用单一5V电源供电,拥有发送接收使能端,使用时将STM32F429IGT6的串口與芯片的RXD和TXD相连;MAX485模块作为本地数据网络的数据通信接口,主要负责本地单一节点或多节点数据传输,设计采用两线制的接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。MAX485电路图如图2所示。

1.2 W5500模块

W5500芯片集成硬件化的TCP/IP协议;内部有32K字节的储存器作为TX/RX的缓存;支持10/100Mbps的网络传输速率,提供网络唤醒功能;支持高速的SPI总线与单片机通信;拥有小巧的LQFP48封装。系统参考其官方文档的使用电路,采用STM32F429IGT6的SPI1(NSS、SCK、MISO、MOSI)与W5500相连,W5500模块的中断脚与STM32的PC2相连,其硬件复位(RESET)管脚与STM32的PC3相连。这样可是实现单片机对模块的控制与二者的数据交互。W5500模块电路图如图3所示。

2系统软件设计

为保证系统的实时性及稳定性,系统以嵌入式实时操作系统?C/OS-III为依托;采用基于ST官方的标准库及部分硬件驱动,虽然相较于寄存器开发代码效率更低,但是便于代码整体的构思以及后期的维护升级;采用keil5集成开发环境作为代码编写平台,移植小型嵌入式文件系统FATFS用于网络中断时的外部FLASH文件读写操作;为使系统具有更好的交互体验,移植嵌入式GUI STemWin作为图形界面开发工具。系统软件框架图如图4所示。

2.1基于?C/OS-III的软件设计

?C/OS-III是一个可裁剪、可剥夺型的多任务内核,其大部分代码使用C语言编写,少部分与硬件有关的代码使用汇编语言编写,可移植性好;?C/OS-III的运行至少需要4K的RAM,系统采用的STM32F429IGT6拥有256K的RAM,完全满足要求。一开始,系统进行硬件初始化,包括系统滴答定时器、GPIO、串口、外部FLASH等,完成后在main函数里面调用OSInit()函数完成操作系统的初始化,然后再完成STemWin显示任务、W5500数据处理任务、MAX485数据处理任务、系统检测及数据处理任务的创建,创建成功后调用OSStart()函数启动任务,然后由操作系统完成各任务之间的调度。由于?C/OS-III为可剥夺型内核,任务存在优先级,在这里设定W5500和MAX485数据处理任务优先级为4,检测任务优先级为5,显示任务优先级为20。程序整体流程如图5所示。

系统采用STemWin来构建图形界面,包括用户输入和运行时间、网络连接情况外部储存芯片剩余空间大小等系统信息输出。该数据中继按节点数量可分为单一节点透传模式和多节点组帧传输模式。透传模式下数据从节点输出,经过RS-485再到数据中继,再通过以太网到目的地,输出数据完全一样并且数据长度不定。组帧(多节点)模式下可以多节点数据传输,节点数据位数固定,地址位固定。系统开始需要从屏幕依次输入网关参数、目的IP地址,本机IP信息等,输入后选择为透传模式还是多节点模式,若是多节点模式,需要输入节点个数及地址范围、帧头帧尾等信息,然后跳转到主显示界面,否则直接跳转。输入输出界面流程图如图6所示。

3总结

本文基于ARM Cortex-M4内核的STM32F429IGT6微处理器和MAX485、W5500芯片设置了一個使RS-485通信接口和以太网接口数据相互转化的数据中继,并且通过使用?C/OS-III操作系统和STemWin图像界面使系统的稳定性、实时性和用户交互体验得到提高,完成了数据转换及无网络时的数据储存的预期目标,可用于某些需要RS-485数据网络上云端的实际场景。未来可进一步规范通信数据帧结构及减小系统的功耗,使其更适用于工业领域。

参考文献:

[1] 沈迪,刘光辉,李冀昆,等.电气化列车RS-485总线应用可靠性研究[J].铁道机车车辆,2016,36(4):48-50.

[2] 黄大昌,丁力.单片机和硬协议栈的Modbus TCP通信方案[J].单片机与嵌入式系统应用,2016,16(6):17-20.

[3] 穆向阳,杨晓东.实时嵌入式操作系统μC/OS-Ⅲ在STM32F429IGT6上的移植技术和实现[J].电脑知识与技术,2018,14(6):204-205,211.

[4] Jeff Lies.RS-485收发器教程[J].电子技术应用,2015,41(5):15-18.

【通联编辑:代影】