了解串口协议和RS-232标准,STM32系统连续发送“hello windows!”。
文章目录
一、了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。
1.1 串口通信协议概念
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。
1.2 RS-232标准
RS232采用负逻辑电平,定义如下:
电平状态 | 电压 |
---|---|
0(space) | +3 ~ +15V |
1(mark) | -15 ~ -3V |
非法状态 | -3 ~ +3V |
1.3TTL标准
输出 L: <=0.8V ; H:>=2.4V。
输入 L: <=1.2V ; H:=>2.0V
TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。
1.4 "USB/TTL转232"模块(以CH340芯片模块为例)的工作原理
TXD:发送端,一般表示为自己的发送端,正常通信必须接另一个设备的RXD。
RXD:接收端,一般表示为自己的接收端,正常通信必须接另一个设备的TXD。
正常通信时候本身的TXD永远接设备的RXD!
自收自发:正常通信时RXD接其他设备的TXD,因此如果要接收自己发送的数据顾名思义,也就是自己接收自己发送的数据,即自身的TXD直接连接到RXD,用来测试本身的发送和接收是否正常,是最快最简单的测试方法,当出现问题时首先做该测试确定是否产品故障。也称回环测试。
二、STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
1.创建工程
配置RCC
配置SYS
配置USART1
点击project manager
点击创建工程
在生成的文件中打开keil文件
在main.c文件中找到while,添加如下代码
HAL_UART_Transmit(&huart1,(uint8_t*)"hello windows ",14,0xFFFF);
HAL_Delay(1000)
打开串口助手,配置参数
打开串口,运行
QQ视频20231026195045
2.发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送;
和上一个工程相同步骤,创建工程
编辑程序
全局变量
uint8_t A[10];
int flag = 1;
uint8_t TxBuffer[]="hello windows";
中断
HAL_UART_Receive_IT(&huart1,A,1);
中断回调
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART1)
{
if (A[0] == '#')
{
flag = 0;
}
else if (A[0] == '*')
{
flag = 1;
}
HAL_UART_Receive_IT(&huart1, A, 1);
}
}
发送
while (1)
{
if(flag==1)
{
HAL_UART_Transmit(&huart1, TxBuffer, 14, 0xFFFF);
HAL_Delay(1000);
}
}
打开串口助手
QQ视频20231026195052