肖艳军,毛 哲,温 博,周 围,孙凌宇,孟召宗,刘伟玲
仪器设备研制与应用
基于STM32的综合实验平台设计
肖艳军,毛 哲,温 博,周 围,孙凌宇,孟召宗,刘伟玲
(河北工业大学机械工程学院,天津 300131)
设计了以STM32单片机为核心的单片机实验平台,作为对51单片机学习的补充。采用模块化设计,考虑到学生学习能力以及需对STM32片上外设的掌握程度,设计了相应模块以及对应的17个实验。插孔式连接方式使实验模块之间连接更加可靠稳定。该实验平台已在单片机教学中使用,提高了学生对单片机的学习兴趣,锻炼了学生的自主创新能力以及工程实践能力。
STM32;模块化设计;实验平台
单片机作为仪器类专业本科生的必修内容,而且在各行各业中应用广泛[1-4]。目前本科阶段所教授的微控制器对象一般为51单片机[5-6]。随着嵌入式技术的发展,传统的8位单片机无论在片上资源及功能上都渐渐无法满足市场需求。所以,单片机实验教学课程急需改革,需要注入新的活力[7-9]。
STM32系列单片机是ST(意法半导体)公司推出的基于ARMv7架构的32位单片机,与51单片机相比,STM32片上资源丰富,功能更加强大,具有极高的性价比[10-11]。在学习过51单片机的基础上,通过库函数开发的方式,可以快速地学习并掌握STM32[12]。目前市面虽有很多STM32的开发板,但这些开发板为减小PCB面积、减小生产成本,其外设与单片机引脚的连接方式已经固定,不能根据具体需要来随意支配单片机的I/O口,不能最大程度地锻炼学生的实践与操作能力。且I/O口都以插针的形式引出,连接不可靠。基于以上原因,本文设计了基于STM32F1系列单片机的综合实验平台并设计了相关实验。
以使学生通过实验能够熟练掌握STM32各种片上外设为原则,以实现理论教学与实践训练相结合为目标,结合我校“工学并举”的办学特色,基于模块化理念,设计了各种功能模块。
基本功能模块为保证实验板正常工作的模块,包括单片机最小系统、电压转换模块、BOOT模块以及USB转TTL模块。
1.1.1 单片机最小系统
STM32的最小系统与51单片机的类似,都包括晶振、复位、电源以及单片机。区别是STM32晶振一般为8 MHz,电源电压为3.3 V。此外,在单片机OSC32_IN以及OSC32_OUT之间还需接入一振荡频率为32.768 kHz的晶振,该晶振可作为STM32-RTC(实时时钟)的外部时钟源。在VBAT引脚接入备用电源,单片机掉电后,实时时钟可继续计时。最小系统原理图如图1所示。
图1 单片机最小系统原理图
1.1.2 电压转换模块
由图1可知,单片机所需工作电压都为3.3 V,实验板通过USB口供电,USB所提供的电压为5 V,所以通过电压转换模块将电压转换为3.3 V,电压转换模块通过ASM1117-3.3 V芯片将5 V电压输入转换为3.3 V电压输出,为单片机提供工作电源。
1.1.3 BOOT模块
STM32单片机有2个引脚BOOT0与BOOT1,单片机在上电时通过检测这2个引脚电平的高低以决定其启动方式,启动方式的不同决定启动区域的不同。具体启动方式见表1。
内部Flash启动即正常启动方式,程序下载到单片机内部即存储到内部Flash中,该启动模式下,单片机将自动执行内部Flash中所存储的程序。
系统存储器为单片机中一块特殊的存储区域,在出厂时就被固化了一段启动程序。在系统存储器被 选为启动区域时,程序烧录软件可以通过,可以通 过该程序与单片机进行通信,将程序下载到内部 Flash中。
表1 STM32启动模式表
内部SRAM没有存储功能,掉电后数据消失,但其速度较Flash快,且无需擦除,所以可以在程序调试时使用该启动项,将程序下载到SRAM中进行调试,调试完成后再将程序下载到Flash中。
1.1.4 USB转TTL模块
在整个实验平台中,USB既是电源又是与PC进行通信的通信接口,所以,通过CH340芯片实现USB转TTL,这样单片机就可以通过USB接口与PC进行通信,实现串口下载程序。
1.1.5 JTAG/SWD下载接口
通过该接口可以使用下载/仿真器进行程序下载与硬件仿真。
其他功能模块主要为依据STM32片上外设所设计,以体现其功能与用法。
(1)LED灯模块。可通过LED灯的亮灭判断I/O口输出电平的高低。
(2)数码管模块。通过I/O口控制数码管显示。
(3)蜂鸣器模块。通过I/O口控制蜂鸣器发声。
(4)按键模块。通过I/O口检测高低电平来判断按键是否被按下。
(5)光敏电阻、热电阻模块。光敏电阻以及热电阻分别可根据光强的大小以及温度的高低改变自身阻值,再通过A/D转换得到其阻值,即可得到光强与温度的大小,同时,STM32芯片内部集成有温度传感器,可将两者测得的温度值进行对比。
(6)串口通信模块(RS485与RS232通信接口)。集成了工业上常用RS232与RS485通信接口,通过MAX232芯片以及MAX3485芯片将TTL电平与232与485电平之间进行转换,使单片机能够与支持232与485接口的设备进行通信,如组态触摸屏等。
(7)外部存储器模块,包括Flash与EEPROM。采用AT24C20 EEPROM芯片,可通过I2C接口与芯片通信实现数据存取。Flash采用W25X16芯片,可通过SPI接口与芯片进行通信实现数据存取。
(8)无线射频模块。使用NRF24L01芯片,可通过I2C通信控制。
(9)蓝牙模块。使用HC-05芯片,单片机通过串口与之通信收发数据。
(10)红外接收模块。可与遥控器等红外设备进行通信。
(11)音频模块。使用VS1053芯片,单片机可通过SPI接口与其通信实现音频播放与录音保存的功能。
(12)SD卡模块。通过STM32的SDIO与之通信实现数据存取。
(13)高精度AD转换模块。采用HX711 芯片,该芯片为24位高精度A/D转换芯片。配合称重传感器可实现高精度测量。
(14)LCD模块。用于连接液晶屏进行显示。
图2为该实验箱实物图。
图2 实验箱实物图
编程软件使用Keil MDK软件,Keil软件是一款单片机C语言开发软件,且同时支持汇编语言开发。根据所支持的单片机的种类分为4种:Keil C51、Keil MDK、Keil C251以及Keil C166(见图3)。Keil MDK支持的是ARM系列的单片机。
图3 KEIL官网提供的4款Keil软件下载
STM32作为32位单片机,其内部的寄存器数量多且大都为32位,若仍直接通过编程对寄存器操作进行编程,则不仅编程工作量大,而且可移植性较差。为此,ST公司提供了STM32的标准固件库,开发者只需调用固件库中的函数即可实现对寄存器的操作,这样就使程序的编写更加高效且可移植性好,不同的STM32芯片所编写的程序只需稍加修改甚至不必修改便可互相移植。
既然需要库函数,那么在创建工程时就需要添加所需要用到的库函数文件,在使用的STM32芯片型号不经常变更的情况下,比如实验板上的芯片型号是不会变化的,为了避免每次创建工程时都需要添加库函数文件,可以直接创建一个具有完整库函数文件的工程模板,在需要建立新工程时,只需将模板复制1份即可。在官方提供的库函数文件Project文件夹中,提供了一个芯片型号为STM32F100系列的工程模板,见图4,可参照该模板建立自己的工程模板。
图4 固件库中提供的工程模板
2.3.1 ISP下载与调试
ISP下载是通过USB转TTL模块将程序下载到芯片。在程序下载前,需配置BOOT引脚电平,使单片机进入内部存储器启动模式,下载完成后再更改BOOT引脚电平使单片机进入内部Flash启动模式并开始执行程序。该过程较为繁琐,所以,在USB转TTL模块中,通过CH340芯片的DTR与RTS控制BOOT引脚,如图5所示,不同的电路选择不同的方式进入内部存储器启动模式。这样,只需在程序下载上位机配置DTR与RTS 2个引脚即可,实现一键下载。程序编写完成且编译出HEX文件后,在ISP下载软件中选择要下载的文件下载即可。
ISP下载没有调试的功能,只能将程序下载到单片机后观察单片机的程序运行情况。但在下载程序之前,可以在Keil软件中进行软件模拟,不通过单片机,直接在Keil软件中观察程序运行的情况。
图5 ISP下载软件中的DTR与RTS选项
2.3.2 仿真器下载与调试
与ISP下载相比,仿真器下载不需要配置BOOT引脚,只需在Keil软件中进行与仿真器相关配置即可。配置完成后,也不需要专用的下载软件,点击Keil软件中LOAD按钮即可下载,见图6。若需要硬件调试,在程序编译完成之后,点击Keil软件中DEBUG按钮即可,程序会自动通过仿真器下载到单片机中。调试时可以实现单步运行,复位等功能,还可具体追踪某一参数的数值变化等。
图6 Keil软件中的LOAD与DEBUG选项
为使学生能够充分理解学习STM32单片机,配合所设计模块,设计了基础实验项目,如表2所示,高级实验项目见表3。
表2 实验箱基础实验项目表
表3 实验箱高级实验项目表
基础实验是为学习STM32片上外设所设计的,一般只涉及单一外设的实验,由于GPIO外设的特殊性,所有实验都要使用到。高级实验是综合多个外设所形成的综合性实验,或者是实验难度较大的实验。其中自主设计实验为开放性实验,不限实验所用器件,学生根据所学知识与实验平台资源和外部资源,设计出一个完整的测控系统。
图7为学生自主搭建的温度检测与控制系统,检测环境温度并通过STM32的高级定时器输出不同占空比的PWM波经L298N控制直流电机的转速。同时通过示波器观察STM32输出的波形变化。
图7 学生搭建的温度检测与控制系统
本文围绕STM32单片机的片上外设以及单片机本科教学,设计了STM32实验平台与配套的实验,使本科阶段的单片机教学能够追赶嵌入式技术发展的潮流。新的教学内容与新的单片机也激发了学生对于单片机学习的兴趣,对仪器类专业综合实验平台的建设具有重要意义。
[1] 许京雷.嵌入式系统课程内容设置[J].中国教育技术装备,2017(8): 85–86.
[2] 张萍,马树军,史可福.基于51单片机的指纹电子密码锁的设计与实现[J].实验室研究与探索,2018, 37(8): 141–145, 168.
[3] 侯卫周,顾玉宗.一款单片机系统控制的温控智能水杯设计[J].实验室研究与探索,2017, 36(3): 70–74.
[4] 张仲明,郭东伟,吕巍,等.基于DS18B20温度传感器的温度测量系统设计[J].实验技术与管理,2018, 35(5): 82–85, 94.
[5] 王琳霖,王伟,曹国强,等.基于单片机的机电控制实训平台设计[J].实验技术与管理,2018, 35(4): 82–85.
[6] 朱向庆,黎东涛,苏超益,等.适合于项目教学法的三合一单片机实验箱设计[J].实验技术与管理,2013, 30(7): 55–59.
[7] 肖艳军,周围,杨泽青,等.测控专业单片机实验教学模式的探索[J].教育教学论坛,2016(46): 265–266.
[8] 肖艳军,杨泽青,周围,等.测控专业人才培养目标及培养模式创新性研究[J].实验技术与管理,2016, 33(3): 20–22.
[9] 肖艳军,孙英培,孟宪乐,等.关于单片机原理及应用和PLC课程的教学改革[J].科技信息,2014(8): 23–23.
[10] 满红,郑富荣,胡伟华,等.基于STM32单片机的教学用寻迹平衡车的设计与实现[J].机器人技术与应用,2018(4): 39–42.
[11] 杨刚,千博,陈建安,等.四轴飞行器嵌入式教学实验平台的构建[J].实验科学与技术,2018, 16(1): 132–136, 140.
[12] 盛庆华,杜永均,罗飞,等.基于STM32机械臂解魔方算法研究[J].实验室研究与探索,2017, 36(4): 29–32.
Design of comprehensive experimental platform based on STM32
XIAO Yanjun, MAO Zhe, WEN Bo, ZHOU Wei, SUN Lingyu, MENG Zhaozong, LIU Weiling
(School of Mechanical Engineering, Hebei University of Technology, Tianjin 300131, China)
The experimental platform of the SCM with STM32 as the core is designed as a supplement to the learning of 51 SCM. With the modular design and in consideration of students’ learning ability and the need to master the peripherals of STM32 chip, the corresponding modules and 17 corresponding experiments are designed. The socket connection mode makes the connection between the experimental modules more reliable and stable. The experimental platform has been used in the teaching of SCM, which improves students’ interest in learning SCM and trains their ability of independent innovation and engineering practice.
STM32; modular design; experimental platform
TP368.2;G484
A
1002-4956(2019)12-0072-05
10.16791/j.cnki.sjg.2019.12.017
2019-04-16
教育部产学研协同育人项目(201801013016);河北省高等学校教育改革研究与实践项目(2017GJJG026)
肖艳军(1976—),男,河北沧州,博士,教授,从事嵌入式系统应用、余热利用技术、新能源装备及其关键技术等研究。E-mail: x_yanjun2009@163.com
刘伟玲(1973—),女,河北邢台,博士,副教授,主要研究方向为测控仪器设计。