基于STM32的多串口通用底板的研究
2020-03-11崔永在张春慧李雪茜
崔永在 张春慧 李雪茜
摘 要:MCU STM32性能强、性价比高,因而广泛用于各种嵌入式设备;嵌入式设备种类繁多;串口硬件形式也变化多样;繁杂多样的串口配置也导致了STM32调试的问题;鉴于此;总结了各种开发场景下常用串口硬件接口、软件配置方法,尝试了一种基于多串口通用底板工具实现的免配置直接通过串口软件进行设备调试的方法;可以简化STM32开发过程,实现快速搭建硬件平台,调通互联设备。解决每个开发项目所面对调测问题,迅速形成原理样机,加快开发过程。
关键词:STM32串口连接;多串口调试;串口通用底板
1 引言
生活中智能手环、微型四轴、扫地机器人、工业自动化控制等大多基于STM32,可见随着物联网终端和便携设备的大量使用,会有越来越多的STM32设备被开发使用到更多场景下。串口作为MCU的重要外部接口,同时也是软件开发的重要调试手段,其重要性不言而喻[1] [8]。
考虑到现有网络和设备的状况,新技术的使用目前只能在部分领域和地区使用。而占主导地位的串行通信技术因其连接简单、使用灵活方便、数据传递可靠,造价低廉等优点,在工业监控、数据采集、智能控制和实时控制系统中得到普遍应用[2]。
正是串行通信的连线少、成本低,因此它在数据采集和控制系统中得到了广泛的应用,产品也是多种多样[3]。据调查,目前国际上已有上百种嵌入式设备,这一类产品的特点是体积较小,需要外部输入的信息和对外输出的信息多,因此要求单片机体积小且I/O多.然而串口的硬件却有多种形式,应用的外接的串口设备及配置方法不尽相同,操作却花式多样 [5]。正是因为这些问题而限制了它往更多的领域发展.这时就出现了技术瓶颈,需要我们找到其他的途径来获得期望得到的效果.能够有效的解决不同串口通信统一配置的问题,实现大量的串口与一个或多个主机之间的稳定,安全的串口通信[6]。
研究多串口通用底板技术可简化串口的双向通讯功能,传输数据,编程调试的繁琐操作,并且会大大缩短开发周期。用在串口数据采集通信系统中,编程效率与移植性将不断增强,同时适合于对通信质量要求较高,传输距离较远的应用场合[7]。
2 基本概述
多串口通讯底板技术集成常见的TTL与RS232两种形式的串口外,还可以直接提供给外接的设备直接使用,免除了硬件的连接和驱动的配置,保证系统拿到以后免配置直接可以通过串口软件直接进行设备的调试。
编程者可以通过上位机的串口助手,发送任意的指令进行测试。发送的指令可以通过上位机直接转发给STM32接收串口后,通过另一个串口转发给串口测试设备,然后从测试设备反馈的指令结果通过STM32反馈给上位机进行检测。
3 主要内容
STM32开发模块都具备可以配置使用的多个串口,一般有5-8个同步串口(USART)和异步串口(UART)。这些串口都可以用于对外连接调测设备,或者用于调测的信息显示。外连的设备包括各种卫星(北斗、铱星等)通信模块,无线通信模块(GPRS、3G、4G模块),传感器(烟雾、声音、震动等)。一般的串口硬件形式有两种,一种是TTL,另一种是RS232。两种形式主要区别在于信号电平不同[10]。
1.指令模式发送
根据目前串口对联设备测试指令的具体形式,以及可以用于发送测试的各种指令,形成系统测试的发送和反馈信息回路。同时,为了保证适应于各种情况下的开发,采用不封装具体指令的方式,使用可以发送任意指令的串口助手作为测试的人机界面接口,方便用户根据具体的要求测试连接的对接设备 [9]。
实现方式如下:
(1)通过串口检测的软件,通过指令方式发送指令到STM32。
(2)STM32串口接收到指令后,将指令直接发送给连接的另一个串口的设备。
(3)对接的设备对接收的指令执行,同时将指令执行结果反馈给STM32。
(4)STM32将对接测试设备反馈的指令信息,输出给测试用的串口显示界面。然后,完成整个系统的硬件连接,驱动配置和软件调测。
2. STM32驱动配置及开源软件设置
因为串口的硬件多种形式,为了同时可以对接TTL形式硬件接口,或者是RS232形式硬件接口,采用集成TTL和RS232转换模块的形式,通过跳线的方式来实现两者直接的信号电平转换。
2.1 STM32的硬件配置和中断转发方式
因为配置多个串口,需要将中断的等级设置好,本项目以5个串口为例,将串口中断都设置成组1中(NVIC_PriorityGroup_1),中断优先级为1,子优先级为0。为了便于调测使用,可以将其中的两个作为测试展示使用,其他的串口可以暂时关闭,在项目需要的时候,通过USART_ITConfig(USART_X, USART_IT_RXNE, ENABLE)的方式打开串口即可直接使用。
4 实验
在很多的实验与实际生产中,串口在 STM32 应用最多的是“打印”程序信息,一般在硬件设计时都会预留一USART 通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如何出错具体哪里出错等等。
实验结果
在实验中串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备得RXD接口,在协议层中规定了数据包的内容,具体包括起始位、主体数据(8位或9位)、校验位以及停止位,通讯的双方必须将数据包的格式约定一致才能正常收发数据。当开发板与上位机之间通过USB线连接,成功安装USB转串口驱动与CH341驱动后,可以把一些调试信息“打印”在电脑端的串口調试助手工具上。
(1)收发字符信息
以USART_SendData(pUSARTx,ch)函数为基础建立的函数可以向上位机发送数据,利用FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)读取发送数据寄存器的状态来 等待发送寄存器将数据成功发送。还可使用重定向后的printf()函数与getchar函数,向串口调试助手收发数据。如:在上位机上用串口调试助手发送一个字符X,STM32在收到字符后返回给上位机,显示"I got X",串口波特率设定为9600bps。使用printf()函数。
(2) 串口指令控制
通过串口调试工具向串口发送控制信号:1-小灯亮;0-小灯暗。即在串口中断(UART2)接收到之后进行处理,判断,如果接收到的字符为1,则控制小灯亮,如果接收到的字符为0,则控制小灯暗.同时USART2获得相关数据,再发送到STM32的LCD屏显示指令编码,以及照明持续的时间。
串口是绝大多数 MCU 中不可或缺的一个外设,同时也是我们开发中经常使用的一种调试手段,所以在STM32的应用中,利用某串口进行设备的调试,尤为重要。
4 结束语
为实现免配置直接可以通过串口软件直接进行设备的调试,本文设计了一个串口通用底板开发方式。该设计兼容了各种开发需求下通用的软硬件系统,可以通过串口收发数据,并具备输出显示调试串口,帮助在STM32和互联设备连接时,调试之间的连通信息。
参考文献:
[1] 张源, 卞鸿巍. 组合导航计算机高效多串口通讯技术实现[J]. 计算机测量与控制, 2009(06):149-151+175.
[2] 姚予疆. 通信设备接口协议手册[M].2005.
[3] 赵炯等. 串行数据传输协议的剖析研究.计算机工程.2004,5.
[4] 刘忠诚. 基于STM32的嵌入式多串口服务器的研究与设计[D].
[5] http://www.openedv.com/
[6] 刘忠诚. 基于STM32的嵌入式多串口服务器的研究与设计[D].
[7] 张淑清. 嵌入式单片机STM32设计及应用技术[M]. 国防工业出版社, 2015.
[8] 焦江丽, 李凤莲. 以ARM Cortex-M3为基础的STM32开发板的设计与实现[J]. 中国新通信, 2013, 000(009):94-96.
[9] 郭勇,何軍.STM32单片机多串口通信仿真测试技术研究[J].无线电工程, 2015.
[10] 牛洪涛. "RS—232电平与TTL电平之间的转换."?计算机与通信?12(1997):39-40.
[11]RICHARDBARNETT, LARRYO'CULL. 嵌入式C语言编程与Microchip PIC[M]. 清华大学出版社, 2005.
省级大学生创新创业训练计划项目:S201910453051
(泰山学院-物理与电子工程学院 271000)