以STM32F429芯片为控制核心,实现了多源数据采集板卡的设计、制作、调试及驱动软件的编写。板卡具有2路独立CAN总线、2路独立RS485、4路RS232、8路输入和8路输出可配置GPIO端口,且板载GPS/BD模块。软件功能包括所有接口驱动与GPS/BD模块位置地理信息提取。经测试表明,全负荷工作时,所有数据通道均处于良好的工作状态,各端口能够按约定波特率以最大数据更新速率同步收发数据。此外,板卡各接口模块均进行电器隔离,数据传输稳定可靠,满足设备长时间加电工作的要求。
中文引用格式: 王广君,姜建金,马成勇. 基于STM32的多源数据采集板卡设计[J].电子技术应用,2019,45(11):108-111,116.
英文引用格式: Wang Guangjun,Jiang Jianjin,Ma Chengyong. Development of multi-source data acquisition board based on STM32[J]. Application of Electronic Technique,2019,45(11):108-111,116.
在现代工业控制领域中,RS232、RS485、CAN等总线接口在工业领域中应用较为广泛[1-3]。在许多场合,由于设备处理数据的形式不同,通信接口各有差异,因此各式各样数据采集的转换器出现了,但是市面上出现的很多转换器一般都只是两种总线数据格式之间的转换,难以适应端口总线繁杂的场合[4-6],为此本文设计了一种多源数据采集板卡,其以STM32F429为核心,实现对多路RS232、RS485、CAN总线数据收发以及GPIO接口配置功能,另外板载GPS/BD模块,满足了用户对采集多种不同通信接口设备数据以及时间地理信息显示的需求。多源数据采集板卡主要由STM32核心电路、2路CAN总线接口、2路RS485接口、4路RS232接口、8输入/8输出GPIO端口、板载GPS/BD模块以及电源电路组成。多源数据采集板卡硬件结构如图1所示。
STM32作为多源数据采集板卡的控制核心,控制协调各路通信总线接口的数据收发,以及与上位机进行交互,实现上位机对设备终端数据的采集、显示与控制等功能;2路CAN总线分别独立,并在板卡两侧各有1路接口,通信速率范围为500 kb/s~1 Mb/s;2路独立RS485总线,波特率9 600 b/s到115 200 b/s可配置,可挂载多个RS485总线通信的传感器模块,均分布在板卡左侧;4路RS232接口,波特率9 600 b/s到230 400 b/s可调,左右两侧各2路独立接口;16路GPIO端口,左侧8路输出,右侧为8路输入;GPS/BD模块主要完成时间地理位置信息的采集,通信速率9 600~115 200 b/s可配置,数据更新频率1~20 Hz可配置;电源电路包括12 V转5 V、12 V转3.3 V以及12 V转24 V三部分。
2.1 STM32核心电路设计
该部分选用了STM32F429ZIT6为微控制器,其使用高性能的ARM Coetex-M4 32位的嵌入式RISC内核,工作频率高达180 MHz,内置2 MB的Flash和256 KB的SRAM存储器,丰富的增强I/O端口和联接到两条APB总线的外设;包含2个 12位的ADC,3个通用16位定时器,以及3个I2C和SPI,4USARTs/4 UARTs和2个CAN通信接口[5]。其中板卡通信要求至少7个串口与2个CAN总线。此外,该芯片采用1.7~3.6 V低电压供电,支持睡眠、停机和待机3种省电模式,具有功耗低、实时性强等优点。核心电路结构如图2所示。
核心电路主要包括STM32F429及其复位电路、晶振电路、BOOT启动电路以及调试下载接口电路。其中复位电路采用10 kΩ电阻上拉方式,当按键按下时,RESET与地导通,产生低电平实现复位;为了让STM32得到更高的处理速度,晶振电路采用了25 MHz无源晶振;BOOT电路决定了STM32以何种方式被启动,此处提供了用户闪存存储器启动与从内嵌SRAM启动,默认为前者方式启动,可利用跳帽选择;调试下载接口则选用了SWD方式,其为2线串行通信,只需排针引出,节省空间。
2.2 CAN总线接口设计
CAN总线由于其高性能、高可靠性及独立的设计,而被广泛用于工业现场控制系统中[7-9]。由于STM32内部集成了CAN总线控制器,因此外部电路仅需CAN总线收发器即可实现通信。这里选用了TD321SCAN系列的SMD单路通用型CAN隔离收发模块,它是一款采用IC集成化技术,实现了电源隔离、信号隔离、CAN收发和总线保护于一体的CAN总线收发模块,可实现3 000 V DC电气隔离,传输波特率范围为5 kb/s~1 Mb/s;极大满足了工业级的指标要求。该模块+3.3 V供电,与STM32之间接口无缝连接,具有功耗低的优点。此外,为了提高总线通信的可靠性,在该模块外添加了端口浪涌防护电路,当模块应用于较为恶劣的现场环境时,如高磁场干扰、大能量雷击等场合,可保护模块不被损坏。CAN总线接口电路如图3所示。
2.3 RS485总线设计
在该电路中,使用了TD321S485H-A系列的SMD单路高速RS485隔离收发模块(自动切换),其主要功能是将逻辑电平转换为RS485协议的差分电平,实现信号隔离。该模块+3.3 V供电,传输波特率可达500 kb/s,满足要求。同样,在模块外添加了端口保护电路,SP00S12是一款信号浪涌抑制器,可用于各种信号传输系统,抑制雷击、浪涌、过压等有害信号,对设备信号端口进行保护,尤为适合CAN、RS-485等通信领域的浪涌防护。因此,选择SP00S12可有效保证RS485总线通信的可靠性。RS485总线电路如图4所示。
2.4 RS232通信接口设计
该接口电路采用了型号为RSM232D的双路隔离RS-232收发器,它支持3.15 V~5.25 V超宽压输入电源供电,波特率可达235 kb/s。与普通的RS232芯片相比,它电磁抗干扰EMS极高,隔离耐压2 500 V DC。由于该模块内部TOUT/RIN线没有EDS保护器件,当应用于环境比较恶劣的场合时,可能造成通信不稳定的情况。因此,在模块TOUT/RIN线端外加了TVS管、防雷管、屏蔽双绞线以及同一网络单点接大地等保护措施,有效保护了RS232总线端口。具体电路如图5所示。
2.5 GPIO端口设计
GPIO端口分为8路输入、8路输出端口,5~24 V为逻辑高电压,0~5 V为逻辑低电压。显然电平与MCU电平不匹配,需要电压转换芯片进行电平转换。考虑到端口的稳定性,端口采用了小体积的TLP127光耦芯片,完成电压转换的同时,也实现了电气隔离。此外,TLP127内部集成了耐高压达林顿管,输出端口可耐压值可达300 V DC,同时,它最高可输出150 mA的电流Ic使它具有了较强的驱动和隔离能力。GPIO输入输出端口隔离电路如图6所示。
2.6 GPS/BD模块设计
该模块主要实现对GPS定位信息进行获取,并传输到STM32中进行处理。市场主要有几款主流的GPS/BD模块[10],如ATK-NEO-6M、ATK-1218-BD等。经对比,ATK-1218-BD模块在数据更新率、传输波特率、定位精度等性能上均要优于其他模块,因此选择该模块来提取地理位置信息。ATK-1218-BD是一款高性能GPS/北斗双模定位模块,其兼容+3.3 V/5 V单片机系统,定位精度2.5 mCEP,数据更新速率1~20 Hz、串口通信波特率4 800~230 400 bps可配置。另外,模块自带可充电后备电池,可以掉电保持星历数据[11-12]。ATK-1218-BD模块同外部设备通信接口采用UART(串口)方式,输出的GPS/北斗定位数据采用NMKA0183协议[13],控制协议为SkyTraq。因此使用前,需采用SKyTraq提供的GNSS_Viewer软件对该模块的更新速率、串口波特率等参数进行配置。该模块与单片机连接方式如图7所示。
2.7 电源电路设计
根据各端口模块以及MCU的供电要求,需要将12 V工作电源转化为+3.3 V、+5 V、+24 V隔离电源。为了提高电源的转换效率,降低热损耗,采用了一款内置集成电路高端高压功率MOSFET的降压型开关电源芯片MP1584,输入超宽电压4.5 V~48 V DC,最大电流输出可达3 A,输出电压值可根据匹配电阻调整得到+3.3 V、+5 V的电压,相应地输入输出滤波电容均采用MLCC电容可减少纹波干扰。+24 V隔离电源主要应用于GPIO输出端,作为输出的参考电平,考虑到体积小、功耗等要求,选用B1224_XT-2WR2隔离芯片,该芯片可将12 V电压隔离升压至24 V,且输入输出隔离电压达1 500 V DC,效率达84%,外围电路简单,仅需两个滤波电容即可。电源电路结构如图8所示。
3.1 程序设计分析
该设计以KEIL MDK5为软件开发环境,操作系统为Windows 7。核心处理器采用了32位ARM Cortex-M4内核的STM32F429ZIT6芯片,主频可达180 MHz,只要程序结构良好,板卡全端口工作负荷下,依然能处于稳定的运行状态。
3.2 测试程序流程
MCU程序采用模块化结构设计,主要模块包括初始化模块、启动看门狗模块、各通信协议中断模块、定时器中断处理模块和主程序模块。由于篇幅所限,下面主要对主程序部分程序进行分析,主程序流程图如图9所示。
系统程序启动时先进行系统化,配置好各总线端口的波特率以及中断优先级,初始化GPIO端口及GPS/BD模块并设置看门狗。接着初始化各类标志位,启动看门狗中断程序。由于在总线数据传输方面采用硬件握手方式,双向的数据传输依靠中断方式来判断数据的到来或响应信号的到来,保证了不同总线上的数据正常、透明、可靠传输。因此,此时各通信总线端口已进入中断读取数据状态。当程序进入主循环后,首先获取GPS/BD模块的经纬度信息,采集8路GPIO_In口的电平状态,接着RS485_1与上位机进行三次应答,将每次应答获取的数据进行截取保存,并对数据判断,满足则GPIO_Out0输出固定频率脉冲。然后解析上位机传来的CAN指令,执行相应的程序,初次为健康查询即检查各端口通信是否正常,若正常则将8路GPIO_In端口状态、RS485_1读取的数据、RS485_2三次应答截取的数据、RS232的数据以及GPS/BD模块获取的经纬度信息按约定要求解析放入RS232_TXBUFF,并由电源同侧的两路RS232发送给上位机进行数据的处理与显示。运行期间,利用定时器中断不断执行喂狗任务,上位机可发送CAN指令停止喂狗进行复位。此外,若板卡由于不可控因素导致程序跑飞,此时无法喂狗,程序自动复位,有效地防止了板卡因程序崩溃而无法工作的现象。
4.1 指标测试
本多源数据采集板卡的技术指标主要为工作电压、最大功耗、各总线通信波特率等。实测表明,板卡在测试技术要求范围内的配置下均能正常工作。指标测试结果如表1所示。
4.2 整体性能验证
为了验证数据采集板卡的整体性能,将板卡各端口与工控机匹配端口相连接,模拟板卡通过多个端口采集多源传感器数据信息,进行汇总并输出,并通过CAN总线与上位机指令进行交互。通过上位机分析板卡的输出数据并界面显示,确定板卡各端口接收到的信息无误,板载GPS/BD数据正确,多端口收发无阻塞,无竞争,可持续运行并按约定逻辑响应上位机通过CAN总线端口发送的指令。此外,经72 h长时间持续工作测试,板卡一直处于正常稳定的工作状态。本文设计了一种基于STM32的多源数据采集板卡,实现了CAN、RS485、RS232等多种接口的通信,且均电气隔离,使板卡减小干扰,通信更为可靠。板卡采用STM32F429芯片为控制核心,较强的数据处理能力,使板卡具有较好的性能;采用多种总线端口,可连接各种不同总线接口的传感器设备,具有良好的可扩展性;板载GPS/BD模块,记录时间地理信息,方便用户确定设备位置坐标;采用DC-DC隔离电源,电源转换效率高,热损耗小,具有功耗低的优点。此外,板卡采用铝框外壳固定,安装方便且抗振牢固。
参考文献
[1] 韩王晨光,闫续.USB-CAN-RS232-RS485总线转换控制器设计[J].中国外资,2014(3):284-284.
[2] 周绪贵,查凤.基于STM32F103的CAN/RS232转换板卡的设计与应用[J].工业控制计算机,2014,27(5):49-50.
[3] 韩成浩,高晓红.CAN总线技术及其应用[J].制造业自动化,2010,32(2):146-149.
[4] 刘大鹏.基于STM32单片机的CAN-USB转换器设计[J].工业技术创新,2014(5):589-593.
[5] 刘义平,公飞.基于STM32的CAN总线接口设计与实现[J].信息与电脑,2016(8):154-157.
[6] 任瑞通.基于RS485和CAN总线的带式输送机监控系统设计[J].煤矿现代化,2018(6):131-134 .
[7] 王晨辉,吴悦,杨凯.基于STM32的多通道数据采集系统设计[J].电子技术应用,2016,42(1):51-53.
[8] 曾璐阳.基于STM32的CAN总线/RS232接口转换器的设计[J].中国设备工程,2017(6):111-112.
[9] 周静雷,罗瑞丰,孙长城.基于STM32的数据采集存储系统设计[J].信息技术,2016(8):138-140.
[10] 李伟成,彭松,郭亮,等.基于STM32系列开发板的一种高性能GPS模块应用开发与研究[J].电子技术,2015,44(11):11-14.
[11] 阮帅,张文旭,孙家骥,等.GP S/BDII双模导航接收机设计与实现[J].应用科技,2016,43(4):50-55.
[12] 周孟强,童忠晴,李刚.基于STM32的北斗/GPS定位系统的设计[J].电子制作,2018(13):13-14.
[13] 吴彦霖,刘瑞敏,王兴隆,等.基于STM32的GPS授时系统设计[J].价值工程,2016,35(5):117-119.
作者信息:
王广君1,2,姜建金1,2,马成勇1,2
(1.中国地质大学(武汉)自动化学院,湖北 武汉430074;
2.复杂系统先进控制与智能自动化湖北省重点实验室,湖北 武汉430074)
原创声明:此内容为AET网站原创,未经授权禁止转载。