实验任务
一. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。
二. 用stm32CubeMX,配合Keil,使用HAL库方式,设置USART1 波特率为115200,1位停止位,无校验位,完成下列任务:
(1)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
(2)在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送;
一、串口协议和RS-232标准
1.串口协议
串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。 在串口通信中,常用的协议包括RS-232、RS-422和RS-485。
2.RS-232标准
RS-232(ANSI/EIA-232标准)是常用的串行通信接口标准之一。可用于许多用途,如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表,用于驱动和连线的改进。
二、RS232电平与TTL电平的区别
TTL电平和RS232电平是两种较为常见的串口电平标准,他们之间的主要区别在于电压级别和信息传输方式。
TTL电平是一种数字电平标准。在TTL电平中,逻辑1通常表示高电平,约为3 3V至5V,逻辑0表示低电平,约为0V至0.4V。TTL电平通常用于数字电路之间的通信,例如单片机与其他外设之间的通信。
RS232电平是一种串行通信标准。在RS232电平中,逻辑1通常示负电平(约为-3V至-15V) ,逻辑0表示正电平(约为+3V至+15V)。RS232电平通常用于长距离的串行通信,例如计算机与外部设备(如调制解调器、打印机等)之间的通信。
三、"USB/TTL转232"模块
1.USB转232
USB转TTL芯片有很多,例如:CH340、PL2303、CP2102、FT232等。开发板上,板载USB转TTL芯片为CH340,所以只需要用USB连接线把电脑和开发板连起来,就可以下载程序和进行串口通信了。连接方式:单片机TTL串口—USB转TTL芯片–USB口。
2.TTL转232
单片机串口(TTL电平)想和电脑串口(232电平)通信,就需要使得两个电平逻辑一样才可以通信。这时候,就需要用到转换TTL–232电平的芯片,常用的有MAX232、MAX3232、SP232、SP3232等。MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,不同引脚实现TTL转RS-232或RS-232转TTL的功能。连接方式为:单片机串口—232芯片–串口。
四、用HAL库编写hello Windows!
1.新建项目
打开STMCubeMX,新建一个项目
选择芯片
设置USART1,将串口的工作模式选为异步,开启USART1全局中断
创建项目
2.在keil中编写代码
(1)在主函数中设置接收中断
函数语法说明:
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
调用此函数后,对应串口的接收中断会开启,当发送数据时会触发这个中断。程序接收数据后关闭中断,因此将此函数放入循环中,形成一个死循环。
(2)中断发送函数
函数语法说明:
HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_int pData, uint16_t Size)
函数将使能串口发送中断,完成指定数量的数据发送后会关闭发送中断。
(3)在主函数while循环中写入代码
uint8_t rcData = '*';
while (1)
{
HAL_UART_Receive_IT(&huart1,&rcData,1);//接收中断使能
if(rcData == '#')
{
}
else if(rcData == '*')
{
uint8_t hello[20]="hello world!\n";
HAL_UART_Transmit_IT(&huart1,hello,20);
HAL_Delay(500);
}
}
3.烧录
(1)实物图
(2)在keil中生成hex文件后,在FLYMCU中选中,BOOT0的跳线帽连接方式由0变为1
点击开始编程并按下复位键
(3)烧录成功后再把BOOT0的跳线帽连接方式还原
4.配置XCOM
(4)打开XCOM串口通信软件,对其进行配置,将波特率设置为115200。
5.运行结果
打开串口并点击复位键开始运行,输入‘#’,停止发送,输入‘*’继续发送。(结果做了加速处理)
五、波形观察
1.配置
点击魔术棒完成下列配置
添加要观察的引脚
2.波形运行结果
观察到高电平的持续时间约为8.875us
观察到低电平的持续时间约为87.75us
六、总结
本次实验主要学习了串口协议和RS-232标准,RS232电平与TTL电平的区别,"USB/TTL转232"模块的工作原理。利用STM32MX结合keil,使用HAL库来完成USART串口通信中断,完成STM32系统给上位机(win10)连续发送“hello windows!”,win10采用“串口助手”工具接收并观察波形。
参考
https://baike.baidu.com/item
http://t.csdnimg.cn/388qv
http://t.csdnimg.cn/tIiTd