一、串口协议
串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。串口通讯 (Serial Communication)是一种设备间非常常用的串行通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 通讯协议,我们以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。协议规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。
二、RS-232 信号线
在最初的应用中, RS-232 串口标准常用于计算机、路由与调制调解器 (MODEN ,俗称“猫”) 之间的通讯 ,在这种通讯系统中,设备被分为数据终端设备 DTE( 计算机、路由 ) 和 数据通讯设备 DCE( 调制调解器 ) 。我们以这种通讯模型讲解它们的信号线连接方式及各个信号线的作用。在旧式的台式计算机中一般会有 RS-232 标准的 COM 口 ( 也称 DB9 接口 )。
三、USB/TTL转232
(1)TTL与232串口互转:
单片机串口(TTL电平)想和电脑串口(232电平)通信,就需要使得他两的电平逻辑一样才可以通信。这时候,就需要用到转换TTL–232电平的芯片,常用的有MAX232、MAX3232、SP232、SP3232等。MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,不同引脚实现TTL转RS-232或RS-232转TTL的功能。连接方式为:单片机串口—232芯片–串口
(2)USB转232串口:
USB经过PL2303转成了TTL串口,中间那四个窟窿可以引出,TTL再经由MAX232转换为RS-232电平,9针串口引出。
四、实验一
STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收
1.选择芯片,STM32F103C8
2.配置SYS
3.配置RCC
4.配置NVIC
5.配置USART
6.时钟设置
7.生成项目,打开main.c文件,再main函数中将while循环修改为如下
HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
HAL_Delay(1000);
8.编译,使用串口烧录进芯片
编译成功,烧录成功
9.使用串口调试助手XCOM
可见,stm32向windows不停地发送“hello windows ”。
五、实验二
在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送
1.在实验一中生成的main函数中,将其修改为如下代码
uint8_t receivedChar;
if (HAL_UART_Receive(&huart1, &receivedChar, 1, 0xffff) == HAL_OK)
{
switch (receivedChar)
{
case '#': // Pause sending message
HAL_UART_Transmit(&huart1, (uint8_t *)"stop", 16 , 0xffff);
break;
case '*': // Resume sending message
HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
HAL_Delay(1000); //??1s
break;
default: // Continue sending message
HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
HAL_Delay(1000); //??1s
break;
}
}
2.编译运行,烧录进芯片
3.XCOM串口调试
六、Keil的软件仿真逻辑分析仪
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少
1.点击调试,打开Keil仿真逻辑分析仪,选择USART1
总结
通过本次实验,我了解了串口协议和RS-232标准,以及RS232电平与TTL电平的区别;对于"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理也初步了解;并且成功通过STM32CubeMX建立了简易的串口通信工程,在主函数中修改相关函数,实现了STM32芯片与windows之间的串口通信。虽然过程中也遇见诸多问题,诸如烧录时无法成功,串口调试的连接等等,但成功解决问题后,对相关知识的掌握也更加牢固。