APP下载

基于STM32的以太网接口转多串口透传模块设计

2016-07-23赵智增冯春鹏

山西电子技术 2016年2期
关键词:串口

赵智增,冯春鹏

(北方工业大学 机械与材料工程学院,北京 100144)



基于STM32的以太网接口转多串口透传模块设计

赵智增,冯春鹏

(北方工业大学 机械与材料工程学院,北京 100144)

摘要:针对RS-232串口数据传输距离受限、传输速率低和以太网接口转单串口模块的相对成本较高等缺点,设计了一种基于STM32的以太网接口转多串口嵌入式模块。该模块集成10/100 M自适应以太网接口,串口通信速率高达230 kbps,该模块使用LwIP(Light Weight IP)协议,在保持TCP协议主要功能的基础上减少对RAM的占用,采用DMA实现了接受不定长数据。该转换模块具有高性价比且稳定可靠,可以方便地实现网络设备与多个串口设备之间数据的透明传输。

关键词:STM32;以太网接口;串口;LwIP;DMA

在工控领域、安全防护领域、机房监控领域、门禁医疗自动化设备领域、智能交通领域、智能楼宇领域、测量仪表及环境动力监控系统当中,使用了大量的传感器、PLC、控制器、读卡器、检测器等RS-232串口设备,在串口设备之间以及串口设备与PC之间都是通过RS-232串口进行数据通信、数据交换和数据管理。随着社会对系统稳定性需求、系统数据流量需求以及更大系统需求的不断发展,使得现有的RS-232串口通信,已经远远不能满足社会的需求。加之以太网技术的不断发展和其自身的优越性,在中国乃至全世界,几乎绝大部分局域网都采用以太网技术,使以太网络得以普及。与RS-232串口通信相比较,以太网络具有通信距离远,而RS-232串口通信的距离只有15 m。由于以太网络是基于复杂环境设计的,具有自动纠错功能,所以通信质量非常稳定,不受外部环境干扰[1]。而RS-232串口通信则抗干扰能力差,容易出错。由于以上的种种因素,需要将RS-232接口设备连接到网络上已是大势所趋,要让RS-232串口设备上拥有以太网络外设需要研发和整合CPU,DSP,TCP/IP协议等各种软硬件,需要投入巨大的人力、物力和财力,对这些设备的大批量改造显然不是一蹴而就的,因此将网口转化为串口模块应运而生。现有的以太网转串口模块为以太网转单串口模块,资源利用率低,相对成本高。本文提出了一种基于STM32的以太网接口转多串口透传模块,通过设计多路串口的传输,提高了资源的利用率,降低了相对成本。

1系统总体方案

模块的核心功能为方便地使串口设备连接到以太网上,实现串口设备的网络化管理。模块的处理核心是32位STM32微控制器,具有配置灵活,可扩展的特点。使用ENC28J60以太网控制器进行底层网络协议处理,然后在STM32中用软件实现以太网与串口设备之间的协议转换(即在底层完成以太网帧数据和串行帧数据格式的转换),实现以太网与串口设备的无缝连接,采用的网络协议是LwIP协议,总体方案如图1。

图1 转换模块总体方案

2硬件设计

本文设计的以太网接口转串口模块由以太网接口模块电路、系统时钟电路、串口模块电路、复位电路、存储模块电路、电源管理模块电路和微控制器模块电路组成。以太网接口接收的网络信号经转换模块转换为串口信号与其它串口设备或上位机完成通信,复位电路使控制模块电路恢复到初始化状态,电源管理模块分别为复位电路和信号转换电路供电。

2.1STM32控制模块

本文设计的以太网接口转多串口模块以32位的STM32微控制器为硬件设计的核心,采用意法半导体公司的STM32F103“增强型”系列STM32F103VC芯片,其突出特点是高性能、低成本、低功耗,时钟频率高达72 MHz。STM32系列的电源电压2 V~3.6 V,拥有三种低功耗模式:睡眠、停机、待机模式。另外,它内部集成与IEEE1149.1国际标准测试协议兼容的JTAG接口,对芯片内部进行测试,也可以通过JTAG接口实现对Flash等器件的编程,可以实现以后的固件升级。该模块的主要工作为完成数据的收发和数据格式的转换,以太网控制驱动,实现以太网接口与串口的无缝连接。电路原理图如图2所示。

图2 STM32控制模块电路原理图

2.2电源管理模块

该模块采用5 V开关电源供电,串口模块、以太网接口模块、存储模块和STM32控制模块工作电压均为3.3 V,需要设计电路将5 V电压转换为3.3 V电压。为满足串口模块和以太网模块的功耗需求,设计的3.3 V电压输出电流3 A,选取的芯片为LM1085,LM1058是一个低压差正向电压系列,有可调版本和固定版本,设计用于提供3 A输出电流且工作压差可低至1 V。

2.3以太网接口模块

该模块采用带有标准串行接口SPI的28脚独立以太网控制器ENC28J60,ENC28J60兼容IEEE802.3协议,支持全双工和半双工模式,内部集成了物理层,采用了一系列包过滤机制以对传入数据包进行限制。它还提供了一个内部DMA模块,用以实现快速数据吞吐和硬件支持的IP校验和计算。两个专用的引脚用于连接LED,进行网络活动状态指示。该模块的主要功能是完成数据以太网帧格式的封装和拆封装以及信号的变换,使用ENC28J60满足系统的设计要求,简化相关设计,大大减小了占板空间,降低开发成本,提高系统的可靠性。以太网接口模块电路原理图如图3所示。

图3 以太网接口模块电路原理图

2.4串口模块

该模块实现串口设备之间或串口设备与上位机之间的通信。URAT的TX、RX引脚均为TTL电平,RS-232为负逻辑电平,两者的高低电平的值不一样,所以互相连接时需要电平转换,该模块设计采用MAX232完成它们之间的电平转换和驱动。串口模块电路原理图如图4所示。

图4 串口模块电路原理图

3软件设计

软件完成的主要功能:硬件和协议栈初始化,设置转换模块的网络接口,建立应用进程;将来自以太网接口的数据转换成串口数据,发送到串口设备;将来自串口的数据转换成以太网接口数据,进行发送。

3.1关键技术

以太网接口转串口实质是TCP/IP到串口的协议转换。涉及关键技术:TCP/IP的工作模式问题、串口分帧技术、九位技术[2]。

3.1.1工作模式问题

以太网接口转串口,并不是物理层和数据链路层的简单转化,而是将串口数据作为TCP/IP的应用层数据,用TCP/IP封装传输的方式。TCP/IP的工作模式:TCP服务端模式、TCP客户端模式、UDP模式,工作模式的不同关系到连接、关闭、监听等,这是以太网接口转串口需要处理的部分。

3.1.2串口分帧技术

以太网数据是以数据包为单位发送的,而串口是可以连续不断发送的。这就关系到将多长的串口数据打包后作为一个以太网数据包发送的问题。

3.1.3九位技术

以太网数据是字节为单位,每个字节都是8位,但是串口数据则是可能出现9位,第9位常常用于区分是地址帧还是数据帧,1表示地址帧0表示数据帧,以太网接口转串口后怎样匹配是一个关键技术。

3.2LwIP协议栈的移植

基于STM32的以太网接口转串口不但要实现TCP/IP协议,还要实现与串口交换数据。本文设计的转换模块采用LwIP精简协议,LwIP协议是一个小型开源的TCP/IP的协议栈,在有无操作系统的环境下都可以运行,在保留了TCP协议主要功能的基础上减少对RAM的占用。利用LwIP协议实现的各种功能分解成各自独立的任务,通过优先级的调度,使各项有条不紊的运行[3]。为了保证系统的实时性和降低实现的难度,各任务之间采用信号量、消息队列、消息邮箱等进行通信。LwIP协议栈将顶层应用层之间的所有协议集和底层硬件驱动都封装在一个库里,实现了在编写程序过程中最大的通用性[4]。协议栈完成网络协议栈的四层功能:物理层对STM32进行以太网控制器驱动;接口层通过ARP协议完成MAC的辨识;网络层实现基本的网络传输协议;网络传输层管理数据传输。LwIP协议为数据通信提供了基础。

3.3接收不定长数据的实现

STM32的UART具有收发可以使用的DMA,使用DMA发送数据时会告知发送的数据长度,按照发送长度发送就可以基本上不会遇到什么问题,但是使用DMA接收时,有时数据并不是定长的,但是DMA只有在设定数据长度和接收数据长度相同时才可以触发中断,告诉STM32数据接收完毕。针对这一问题的解决方案是:一开始设置好DMA接收,把缓冲区长度设置为帧最大长度,把RX连接到定时器管脚的输入端,并且一开始设置输入在使能引脚下降沿中断,当发送帧的第一个字节时,起始位是低电平,空闲时,UART是高电平,满足条件,禁止中断,同时开启定时器,该定时器工作在复位模式,上升沿复位,并设置好定时器输出比较值为超时时间,在传输后面字节时,肯定会有高低电平出现,即便传输的是0x00,0xFF,虽然UART数据区不变,但是都为0或都为1,由于起始位是低电平,停止位是高电平,肯定会有上升沿,这样定时器会处于一直复位的状态,输出定时器的计数器一直达不到输出比较值,当一帧传输结束,定时在最后一个字节复位后,如果没有数据继续到达,就无法复位,那么计数器就只能计数到输出比较值,这时发出中断,在定时器中断中可以计算出接收数据的长度,并且通知外部数据已接收完毕。工作过程如图5所示,在串口传输起始位时,首先产生外部中断,开启定时器,禁止外部中断,只要串口上一直有数据,定时器就会不停地复位,定时时间无法达到,当串口上没有数据时,到超时时间后定时器产生中断,然后读出接收的数据长度,开启外部中断,进入下一个周期。

图5 接收不定长数据实现的工作过程图

3.4系统软件流程

当转换模块上电启动后,首先进行的是系统的初始化,之后建立初始任务,此时起始任务占用CPU资源。在初始任务中,建立网口转串口数据处理任务。然后判断以太网接口是否接收数据,如果没有数据,重新判断是否接收数据,如果有数据,将数据按照LwIP协议进行处理,然后进行协议转换处理,最后将数据按串口数据的格式发送到串口,完成转换任务。系统软件流程图如图6所示。

图6 系统软件流程图

4结论

该模块设计具有成本低、功耗低、性能稳定、硬件电路制作简单等特性,最后对模块硬件软件进行了系统测试和可靠性测试,测试结果符合转换模块的相关设计指标要求。该接口模块已成功应用于北京市高速公路收费站,现场调试结果表明,系统能稳定的进行数据传输,使用方便。

参考文献

[1]串口转以太网技术[Z/OL].[2011-9-11].http://wenku.baidu.com/link?url=kqehCnXAHS_R3Difdoxiic

5Wk_PVOn4-rsbiceFX6AErRoPiY_l7KwfDcp0Pco5y9W

rqOr8s55y2VzsLLeFliTNB4kIXSGPmOVywakZoBpO.

[2]袁成文.基于MC9S12NE64的通用串口以太网转换器[D].昆明:昆明理工大学,2011.

[3]史涛,沈天飞,李斌.用于车速传感器性能测试平台的串行口-以太网桥设[J].电子技术应用,2007(4):19-22.

[4]上海卓岚信息科技有限公司.串口转TCPIP的TCP工作模式选择[OL].[2010-12-02].http://www.zlmcu.com/document/tcp_work_mode.html.

收稿日期:2015-12-30;修回日期:2016-01-07

作者简介:赵智增(1989- ),男,山东德州,硕士研究生,主要从事传感器与测控技术。

文章编号:1674- 4578(2016)02- 0030- 04

中图分类号:TP336

文献标识码:A

Design of Transparent Transmission Conversion from Ethernet Port to Multi-serial Port Based on STM32

Zhao Zhizeng, Feng Chunpeng

(CollegeofElectromechanicalEngineering,NorthChinaUniversityofTechnology,Beijing100144,China)

Abstract:According to the limitation defect of transmission distance, the low transmission rate for RS-232 serial port and the higher relative cost of Ethernet port to single serial one, a kind of embedded module of Ethernet port to multi-serial port based on STM32 is designed in this paper. This module integrates the 10M/100M adaptive Ethernet port to make the communication rate of serial up to 230 Kbps. It uses Light Wight IP to reduce the occupation of RAM on the basis of maintaining chief function of TCP. It uses the DMA to realize the reception of indefinite length data. Its cost performance is very high and it is stable and reliable. It can realize the transparent transmission between network equipment and serial equipment expediently.

Key words:STM32; Ethernet port; serial; LwIP; DMA

猜你喜欢

串口
浅谈AB PLC串口跟RFID传感器的通讯应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于单片机串口通信的转动天线角度传输
串口技术的实物调试和虚拟仿真联合教学模式
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信