杨 浩,李红岭,杜彬杰,杜新东,谢飞飞,田江龙
(甘肃农业大学 机电工程学院, 甘肃 兰州 730070)
51系列的MCU为8位处理器,运行速度慢,集成资源较少,采用冯诺依曼存储结构,需要外围电路[1~3],适合初学者,功能没有STM32强大,STM32为32位处理器采用哈佛结构,速度快,集成度高,有丰富的外围的接口,I2C、SPI、ADC、RTC、Timer、CRC、DMA、USART等多种外设,STM32单片机有固件函数库,所以程序模块化,接口简单[4,5]。
本实验开发板以STM32F103RCT6为控制核心,因为STM32F103RCT6具有64针脚256K字节的闪存存储器,并且每个I/O口具有两个32位配置寄存器,两个数据寄存器,每个I/O口有7种工作方式,系统时钟最大可达到72MHz、自带两个12位ADC转换器并且其每个最多有16个通道、4个16位通用定时器,两个高级定时器、内置RTC定时器用于计时,并板载多种实验电路,帮助同学们验证电子设计程序以及竞赛项目[6,9]。
实验开发版以STM32F103RCT6单片机作为控制器,外围硬件电路为:时钟电路、电源电路、复位电路、跑马灯电路、按键输入电路、ADC转化电路、LCD显示电路、PWM波输出电路、I2C通信电路。STM32F103RCT6单片机通过按键电路、ADC、I2C接收信息处理后,发出信号给LED和LCD液晶屏幕给与显示,并输出PWM信号给电机使其做出相应的控制动作(图1)。
图1 实验板硬件组成框图
跑马灯实验的实验目的是让同学们了解I/O口
作为输出时其程序的配置过程,以及了解I/O的驱动能力,本实验板设置有两个LED显示电路,有不同的I/O口驱动,硬件电路上每个LED灯珠一段直接连接I/O口上另一端经电阻连接于电源正极,当I/O口输出低电平是LED导通并且发光,接口电路如图2所示。
图2 LED实验电路
按键实验的实验目的是让同学们了解I/O口作为输入时的配置过程,以及如何通过程序来检测到按键状态。按键的一端接地一端直接连接在控制I/O上,接口电路如图3所示。
图3 按键实验电路
液晶显示模块为2.8吋的薄膜晶体管液晶显示器,通过STM32的普通I/O口模拟8080总线来控制TFTLCD并且支持65K色显示,显示分辨率为320×240。接口为16位的80并口,硬件接口电路如图4所示。
图4 LCD液晶显示接口电路
其中CS:TFTLCD片选信号。
WR:向TFTLCD写入数据。
RD:从TFTLCD读写数据。
D[15:0]:16位双向数据线。
RST:硬复位TFTLCD。
RS:命令/数据标志(0,读写命令:1,读写数据)。
PWM信号主要用以对电机或舵机控制本开发板中,专门设计了步进电机的舵机输出接口,步进电机包含转速控制端口和使能控制端、方向控制端,硬件接口电路如图5所示。
图5 PWM信号输出接口电路
STM32的开发需要多个软件配合,编译软件为KEIL公司的MDK5,或是MDK4不同封装的芯片需要不同的软件,MDK5的功能是很强大的。使用C语言进行开发,集成编写、编译、连接、在线调试、仿真于一体。这里已最简单的跑马灯来介绍相关软件。
(1)定时器初始化流程图如图6所示。
图6 定时器初始化流程图
(2)PWM波输出主程序。
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
delay_init(); //延时函数初始化
...
while(1)
{
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare2(TIM3,led0pwmval);
}
}
本次设计符合教学要求[10~12],实验内容与教学内容密切配合,实验开发板中板载了多种实验电路,并且为了降低学习难度,提高同学们的学习兴趣,每个实验都配套了实验程序,不仅可实现如跑马灯、按键、ADC模数转换、LCD显示、定时器的PWM波的输出以及I2C通信等传统的单片机教学课程内容实验,还有摄像头模块、音频输入输出、以太网接口、USB-HID接口、SD卡接口等基础教学内容中涉及不多的实验,可用于同学们的SRTP项目设计和竞赛培训,为学生电子协会活动等更深层次的学习提供便利[13~15]。