现代电子技术
Modern Electronics Technique
May 2022Vol.45No.10
2022年5月15日第45卷第10期
通用同步异步收发器(Universal Synchronous /Asynchronous Receiver/Transmitter ,USART ),简称串口,为与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换提供了一种灵活的方法。万
物互联使世界更加精彩,在有线数据通信中,串口无疑是一个理想选择,其简单高效、灵活可靠,普遍存在于各主从设备当中[1⁃2]。串口通信是嵌入式系统教学的重点和难点,需要理解其通信原理,但更重要的是在实践中
DOI :10.16652/j.issn.1004⁃373x.2022.10.005
引用格式:黄克亚,余雷,李晓旭.STM32与PC 机USART 通信教学实验设计[J].现代电子技术,2022,45(10):21⁃25.
STM32与PC 机USART 通信教学实验设计
黄克亚,余
雷,李晓旭
(苏州大学机电工程学院,江苏苏州
215131)
要:为克服传统串行通信接口USART 实验设计存在的只注重软件不关注硬件、只进行验证不进行应用、只编写微
控制器程序不开发上位机软件等不足,文中设计STM32与PC 机串口通信教学实验。硬件设计采用CH340G 芯片实现USB 转串口功能,实现供电、下载、通信三者合一。软件设计方面,独立完成微控制器程序设计和上位机软件开发两部分工作,并提出一种串口通信应用层协议,合并2位控制位和6位数据位形成单字节数据帧,突破单次发送数据顺序和大小的限制。该协议具有简洁、高效、灵活等优点。实验在微控制器与上位机之间建立双向数据传输通道以实现网络时间同步,测试显示系统稳定、通信可
靠,可达到预期效果。实践结果表明,所设计实验软硬件兼顾,系统设计能力考察全面,具有较强的工程实践意义和良好的可扩展性。
关键词:串口通信;教学实验;通信协议;微控制器;PC 端程序设计;实验设计;数据传输中图分类号:TN911⁃34;TP23
文献标识码:A
上位机软件开发培训文章编号:1004⁃373X (2022)10⁃0021⁃05
Design of teaching experiment of USART communication between STM32and PC
HUANG Keya ,YU Lei ,LI Xiaoxu
(College of Mechanical and Electrical Engineering ,Soochow University ,Suzhou 215131,China )
Abstract :In order to overcome the shortcomings of traditional serial communication interface designed for USART (universal synchronous /asynchronous receiver /transmitter )experiment ,such as only focusing on software ,but not paying attention to hardware ,only verifying but not perfo
rming application ,only writing microcontroller program but not developing host computer software ,a teaching experiment of serial communication between STM32and PC is designed in this paper.In the hardware design ,the CH340G chip is used to realize the function that the USB is converted to serial port ,which can realize the
unification of power supply ,download and communication.In the software design ,the microcontroller program design and the upper computer software development are completed independently ,and a serial port communication application layer protocol is
proposed ,which can combine 2⁃bit control bits and 6⁃bit data bits to form a single byte data frame ,and break through the limitation of the order and size of single data transmission.The protocol has the advantages of simplicity ,efficiency and flexibility.For the experiment ,a bidirectional data transmission channel between the microcontroller and the upper computer is established to realize the network time synchronization.The testing results show that the system is stable ,has reliable communication ,and can achieve the expected effects.The practice results show that the designed experiments can give consideration to software and hardware ,the system design ability is comprehensively investigated ,and has strong engineering
practice significance and good expandability.
Keywords :serial port communication ;teaching experiment ;communication protocol ;microcontroller ;PC programming
design ;experimental design ;data transmission
收稿日期:2021⁃10⁃13修回日期:2021⁃11⁃26
基金项目:国家自然科学基金项目(61971297);江苏省自然科学基金面上项目(BK20201201);江苏省一流本科专业项目(2019电气)
21
现代电子技术
2022年第45卷
掌握其应用方法,因此好的教学实验设计尤为重要。串口通信实验可以是微控制器之间、微控制器与外部设备、微控制器与上位机之间的数据交换。由于嵌入式开发都需要在PC 机上编译应用程序,所以大部分的串口通信项目实例都是基于微控制器和PC 机的,本设计也不例外[3⁃4]。但是传统的串口实验往往较为简单,不具备工程实践意义,如PC 机向微控制器发送单个数据,微控制器收到后加1回传;只关注通信一方,即微控制器端,PC 端借助专用调试软件,如串口调试助手,不能帮助学生很好地理解通信双方数据传输要求[5⁃6]。为克服上述
实验设计中的不足,本文设计STM32与PC 机USART 串口通信教学实验。
1USART 串口通信原理
实验设计微控制器选择的是STM32F103ZET6芯
片,其为SM32F1系列大容量产品,外设资源丰富。实验电路串口选择USART1,工作于串行、异步、全双工制式[7]
。如果需要连接2个具有USART 接口的设备,则每个设备至少通过3个引脚与其他设备连接在一起,分别为接收数据输入(RxD )、发送数据输出(TxD )、2个设备之间的共地信号(GND ),其连接方式如图1所示。需要注意的是,2个USART 设备的TxD 和RxD 必须是交叉相连的[8]
图1两个USART 设备之间的互连
USART 异步通信数据传送按帧传输,一帧数据包
含起始位、数据位、校验位和停止位。最常见的帧格式由1个起始位、8个数据位、1个校验位和1个停止位组
成,帧与帧之间可以有空闲位。起始位约定为0,停止位和空闲位约定为1,典型通信时序如图2所示。发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其产生时钟[9⁃10]。
2串口通信硬件设计
USART 采用的电平标准决定了它的通信距离较
短,一般仅限于板级通信,早期微型计算机均配有RS 232串口,其与微控制器的USART 相连需要配一个
电平转换芯片,如MAX232。现在无论是笔记本还是台式计算机均很难到串口,取而代之的是USB 接口的普遍使用,同时USB 接口还可以提供稳定的5V 电源,所以本实验设计的MCU (微控制器)和PC 机串行通信是通过PC 机USB
口转换成串口完成的。
图2USART 异步通信时序图
图3所示为开发板串口通信电路,其核心为CH340G 芯片。该芯片为一个USB 总线的转接芯片,实现了USB 转串口或者USB 转打印口。在串口方式下,CH340G 提供常用的MODEM 联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。通过该电路即可将PC 机的USB 口转换为串行接口并分配端口号,PC 机通信软件通过这一虚拟串口即可实现数据透明传输[11⁃12]。图3中USART1_RxD 和USART1_TxD 分别连接微控制器串口1的数据接收引脚和数据发送引脚。三极管Q 1和Q 2可根据联络信号实
现微控制器在下载、复位、运行状态之间的自由切换,用
户体验非常好。
图3开发板串口通信电路
开发板串口通信电路既构建了MCU 和PC 机串行数据通道,又可以为开发板提供系统电源,还可以将嵌入式系统开发平台生成的目标程序下载到微控制器的运行存储器当中,具有在线编程(ISP )功能。电路集电源供电、串口通信、ISP 下载功能于一身,在开发板设计
22
第10期
当中获得广泛的应用。
3串口通信软件设计
本实验软件设计包括两部分程序:微控制器串口收
发程序和上位机串口收发程序。两部分程序运行于不同终端,分开设计;但相互关联,需要综合设计,才能协同工作。首先就需要对通信数据格式、内容和长度等进行约定,对应网络分层的顶层,属于应用层协议。3.1
应用层通信协议
实验实现如下功能:STM32微控制器通过串口和上位机建立通信连接,上位机获取本机时间,并通过串口发送给STM32微控制器;微控制器在收到上位机发送过来的一组数据后,提取出时、分和秒的数值,显示于数码管上,并将收到的数据个数发送至上位机。为了使通信双方能够理解收发数据的含义,常见的数据通信约定方法有:
1)依数据发送顺序确定数据性质,在本例中上位
机将时、分、秒依次向微控制器发送,微控制器收到的数据3个为一组,每组数中第一个数据为小时数值,第二个数据为分数值,第三个数据为秒数值。该方法简单易懂、容易实现,无额外开销,但是发送和接收数据数量和顺序严格定义,若由于干扰出现“丢帧”现象,数据将会完全混乱[13]。
2)在发送数据前加一个或多个字节的前导说明符,例如时数据前加一个“H ”控制符,组成两个字节数据一起发送,该方法数据发送和接收无顺序限制,“丢帧”不影响数据继续传输,但实现难度有所增加,带来部分额外数据开销[14⁃15]。
考虑到上述两种数据约定方法均存在一定的不足,结合项目实际情况,即本项目传输数据时、分、秒的最大数值范围为0~59,可以使用6位二进制表示,传输数据性质共有3种情况,可以使用2位二进制表示,将上述两部分数据合在一起正好是一个字节,作为一帧数据在串口通信链路上传输,每帧数据位定义及格式如图4
所示。
图4串口通信数据帧格式
三种数据通信协议特点及性能对比如表1所示。由表1可以看出,本实验设计所采用的控制位和数据位单字节组合数据帧通信格式具有简洁、高效、灵活等众
多优越性能,是本实验设计的创新点之一。
表1通信协议特点及性能对比
数据约定方法顺序确定数据添加前导控制符控制位和数据位组合
数据帧
大小/B 1≥21
顺序要求有无无
单次数据量/B 3≥2任意
通信效率高低高
可靠性差一般高
编程
难度简单复杂一般
3.2
MCU 端程序设计
微控制器端串口通信程序是采用基于中断的前后
台模式,没有数据通信请求运行主程序,本实验主程序是数字电子钟,当有串口数据请求时,即串口接
收中断发生,CPU 进入中断服务程序,处理串口中断。该模式在数据通信领域比较普遍,有利于提高CPU 执行效率,并可将通信程序集成到其他模块当中。3.2.1
主程序设计
主程序设计包括串口初始化和数码管动态显示程序两部分。本实验串口选用的是USART1,其操作步骤如下:
1)打开GPIOA 和USART1的时钟使能。
2)设置串口的I /O 口模式,要使用STM32的
USART1必需要将其TxD (PA9)初始化为复用推挽输出,将其RxD (PA10)初始化为浮空输入。3)初始化USART ,通信双方约定采用“96N 81”,
无硬件流控制格式,其参考程序如下:
USART_InitStructure.USART_BaudRate=9600;
USART_InitStructure.USART_Parity=USART_Parity_No ;USART_InitStructure.USART_WordLength=USART_
WordLength_8b ;
USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None ;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx ;
USART_Init (USART1,&USART_InitStructure );
4)开串口接收中断,并设置NVIC 参数。
3.2.2
中断服务程序设计
完成串口初始化程序之后,主程序即进入数码管动态显示时间的无限循环程序当中。在主程序执行过程中,若串口接收到数据,CPU 响应串口接收中断,运行中
断服务程序,接收上位机传来的时间数据,完成全局变量更新,并返回数码管显示,完成一次数据通信。
中断服务参考程序如下:
void USART1_IRQHandler (void ){static u8k=0;u8RxData ;
黄克亚,等:STM32与PC 机USART 通信教学实验设计
23
现代电子技术
2022年第45卷
RxData=USART_ReceiveData (USART1);//Time[0]:hour ,Time[1]:minute ,Time[2]:second Time[(RxData&0xC0)>>6]=RxData&0x3F ;USART_SendData (USART1,++k );while (USART_GetFlagStatus (USART1,USART_FLAG_
TXE )==Bit_RESET );
}
为了实现数字电子钟计时和设定功能,定时器秒中断和按键外部中断正常执行,在此不再赘述。3.3
PC 端程序设计
因为是串口通信程序设计,所以除了编写微控制器
端程序外,还需要编写上位机控制程序。上位机程序是在个人计算机上编写的,其开发方法和使用平台形式各异,本文采用Visual Basic 6.0进行串口程序设计,其他开发平台也是类似的。
首先在VB6.0软件中新建一个窗体,并添加相应控件,创建完成界面如图5
所示。
图5串口通信窗体创建界面
与本项目有关的控件主要有:窗体Form1,文本框数组Text1(0)~Text1(4),状态指示图标shpCOM ,组合列表框cboPort ,串口状态标签cmdOpenCom ,当前时间标签Label13,退出按钮Command2,发送时间按钮Command3,定时器Timer1,串口通信控件MSComm1等。上位机通信程序主要包括窗体载入、定时器中断、
发送时间、串口接收等。
1)窗体载入程序。窗体载入程序主要是寻可用串口,并对有效串口进行初始化。寻有效串口的方法是试图打开一个串口,若成功则有效,否则寻下一个串口。串口初始化包括设置通信格式、数据位数、事件产生方法等。特别注意的是,需要将串口控件DTREnable 和RTSEnable 两个属性值设为False ,否则系统会强制复位。
2)定时器中断程序。定时器设置为每秒中断一次,每次中断都将系统当前时间更新到时间显示标签上。
3)发送时间程序。串口通信以二进制格式进行
时,发送数据必须为数组形式,所以串口发送时间首先需要将时间的时、分、秒数值分别发送到数组的
三个元
素当中,然后调用串口发送方法发送即可。
4)串口接收程序。串口接收程序首先判断事件类
型,如果是一个串口接收事件,则接收一个数据数组,然后将数据数组转换成字符串,并显示在相应的文本
框中。
4串口通信调试
本实验的目标为将PC 机时间与网络同步,利用串
口将本机时间发送至微控制器,微控制器将接收到的时间动态显示于数码管上。本文实验可提供一种精确、快捷的时间设定方法,具有较强的工程实践意义,而且实验中使用的USART1是微控制器下载程序通信接口,没有增加任何硬件成本。4.1
PC 机时间网络同步
单击Windows 桌面任务栏日期时间显示区域,选择更改日期和时间设置选项,打开日期和时间对话框,在对话框中单击Internet 时间选项框,并进一步单击更改设置按钮,打开Internet 时间设置对话框,勾选“与Internet 时间服务器同步”复选框,并单击确定。至此,PC 机系统时间网络同步已经完成。当然,如果不选择网络时间同步也是可以的,只是此时个人计算机的系统时间设置可能不精确。
4.2
MCU 与PC 机通信
上位机开发的通信程序可以生成可执行文件“单片
机与PC 机通信.exe ”,具体的文件名和工程名有关,并且可以修改,生成的可执行文件可以独立运行。
打开开发板电源,下载串口通信程序,并复位运行。在PC 机上双击运行“单片机与PC 机通信.exe ”程序,并单击“发送时间”按钮,上位机系统时间数值就会发送到单片机,并显示于数码管上,单片机同时将收到数据的个数回传至PC 机,并显示于软件窗体的文本框当中。其操作界面如图6所示。4.3
串口通信控件注册
在很多串口通信软件中都会用到串口通信控件 ,本文编写的上位机通信软件也不例外,
该控件在有些WIN7或WIN10系统中没有注册,运行时会提示不到控件、错误,此时需要对控件进行注册。
具体步骤如下:
1)百度搜索或到微软下载 。2)将控件放到相应文件夹内,32位系统路径为“C :\Windows \System32”;64位系统路径为“C :
24
第10期
\Windows\Syswow64”。
3)然后在对应目录下到文件,单击鼠标右键,以管理员身份运行(关键),在命令窗口输入。
经过以上3步即可完成控件注册。
4.4串口助手调试
对于很多同学来说,可能没有掌握一门可视化编程语言,则解决这一问题较好的方法是使用串口调试助手。需要说明的是各种版本串口调试助手略有差别,但大同小异,可以举一反三。
具体调试步骤如下:
1)打开开发板电源,运行微控制器程序。
2)运行串口调试助手,并打开串口通信设置对话框,将其设置为“96N81”,无硬件流控制格式,默认即为该选项。
3)串口调试选项设置,设置结果如图7所示,其中
重要选项如红框线所示。
图6串口通信测试图图7串口设置及收发数据界面
4)串口收发通信,采用两种方式进行实验,第一种
方式为时、分、秒三个数值分开发送,第二种方式为时、
分、秒一起发送(用空格分隔),操作过程如图7所示。
设要设定的时间为“10:18:30”,加上控制位,则需要发
送十六进制数据“0A529E”,此处要注意发送和接收数
据均为十六进制,且输入和显示均没有“0x”或“H”等附
加格式。
串口调试助手在没有显示屏的单片机应用系统中
有着十分广泛的应用,可以利用函数重定向功能,调用
printf()函数,将开发板获取数据,通过串口输出到PC
机,为程序调试和串口通信提供极大方便。
5结语
本文设计一个综合性PC与微控制器串口通信教学
实验,实验设计包括硬件设计和软件设计两部分。硬件
设计采用CH340G芯片实现USB接口转串口功能,有效
地解决了目前PC机普遍不具备串口的问题,并实现了
供电、下载、通信三者功能,是一个很好的创新。软件设
计独立完成微控制器程序设计和上位机软件开发两部
分工作,提出一种串口通信应用层协议,合并2位控制
位和6位数据位形成单字节数据帧,突破单次发送数据
顺序和大小的限制,具有简洁、高效、灵活等优点。项目
在上位机与单片机之间建立双向串行通信链接,上位机
获取网络时间数值,将其发送给单片机,单片机接收并
提取时间数值,送入数码管显示,并回传接收到的数据
个数。通过该实验的学习和应用,学生基本可以掌握
STM32串行接口USART的原理和使用方法。
参考文献
[1]ST.STM32F10x standard peripheral library[EB/OL].[2021⁃09⁃
14].http://www.st.
[2]ARM.Cortex⁃M3devices generic user guide[EB/OL].[2021⁃11⁃
21].http://www.arm.
[3]黄克亚.ARM Cortex⁃M3嵌入式原理及应用:基于STM32F103
微控制器[M].北京:清华大学出版社,2020.
[4]王益涵,孙宪坤,史志才.嵌入式系统原理及应用:基于ARM
Cortex⁃M3内核的STM32F103系列微控制[M].北京:清华大学
出版社,2016.
[5]储开斌,江楠,冯成涛,等.基于STM32的调幅信号接收实验系
统设计[J].实验室研究与探索,2019,38(6):63⁃66.
[6]宣慧,孙佳昊,程实,等.基于I2C总线实验设计[J].实验技术与
管理,2020,37(1):52⁃55.
[7]潘浩.基于现场总线的异步串行通信接口转换系统设计[J].现
代电子技术,2020,43(21):17⁃20.
[8]鄢秋荣,王玉皞,王艳庆,等.面向软硬件协同设计的嵌入式系
统教学改革与实践[J].实验室研究与探索,2016,35(6):190⁃
193.
[9]岳昊嵩,张静,张秀磊,等.心率检测综合实验设计与实践[J].
实验技术与管理,2020,37(9):35⁃38.
[10]常娟,王立志,陈长兴,等.高频数控移相器及其检测系统实
验设计[J].现代电子技术,2019,42(16):179⁃181.
[11]刘阳.心理学实验设备同步触发装置研发与仿真测试[J].现
代电子技术,2020,43(5):159⁃162.
[12]廉佐政,王海珍.基于STM32的PWM输出实验设计[J].实验
技术与管理,2017,34(8):137⁃140.
[13]陈玉敏,谢玮,孟宪民.基于STM32的温度控制实验设计[J].
现代电子技术,2016,39(12):37⁃40.
[14]胡天立,肖培,宫鹤,等.总线结构的模块化嵌入式实验平台
设计与应用[J].现代电子技术,2020,43(24):75⁃78.
[15]韩琛晔.基于STM32嵌入式微处理器的农业气象物联网数据
采集系统设计[J].现代电子技术,2020,43(5):10⁃13.
作者简介:黄克亚(1982—),男,江苏淮安人,硕士,软件设计师,副教授,主要从事智能控制、嵌入式系统等研究工作。
余雷(1983—),男,安徽宣城人,博士,教授,博士生导师,研究方向为智能控制技术。
李晓旭(1982—),男,重庆人,博士,教授,硕士生导师,研究方向为谱、质谱及其联用仪。
黄克亚,等:STM32与PC机USART通信教学实验设计25

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。