1.串口通信
串口通信是一种设备间非常常用的串行通行方式,其简单便捷,大部分电子设备都支持。
2.RS-232标准: 主要规定了信号的用途、通信接口以及信号的电平标准。
3.RS232电平与TTL电平的区别:
电压范围差异 RS232电平使用正负电压表示逻辑状态,通常为正电压表示逻辑0,负电压表示逻辑1;TTL电平使用高低电压表示逻辑状态,通常为高电压(如+5V)表示逻辑1,低电压(如+0.8V)表示逻辑0。
信号极性差异 RS232电平的信号极性与电压有关,逻辑0和逻辑1的电压极性相反;TTL电平的信号极性固定,逻辑0为低电平,逻辑1为高电平。
传输距离差异 RS232电平适用于较长距离的通信,可达数百米;TTL电平适用于短距离通信,通常限制在几十米以内。
4."USB/TTL转232模块(以CH340芯片模块为例)的工作原理:
"USB/TTL转232"模块是一种转换器,用于将USB接口转换为串口RS-232电平或TTL电平。以CH340芯片模块为例,其工作原理如下:
通过USB接口与计算机连接。
CH340芯片将USB信号转换为TTL电平信号。
如果需要将TTL电平转换为RS-232电平,CH340芯片将TTL电平通过电平转换电路转换为RS-232电平信号。
通过转换后的RS-232电平或TTL电平,实现与RS-232设备或TTL逻辑电平设备的连接。
通过CH340芯片的驱动程序,在计算机上创建虚拟串口,使计算机可以通过虚拟串口与外部设备进行串行通信。
综上所述,"USB/TTL转232"模块通过CH340芯片将USB信号转换为TTL电平信号,并可选地将TTL电平转换为RS-232电平,从而实现USB与RS-232设备或TTL逻辑电平设备之间的串行通信。
任务一、
STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
STM32cubx创建工程文件
使用高速外部时钟
设置USART
时钟设置
导出Keil文件
在main.c文件的主函数while循环中添加以下代码:
HAL_UART_Transmit(&huart1, (uint8_t *)“hello windows!\r\n”, 16 , 0xffff);
HAL_Delay(1000);
实验结果:
任务二、
在完成以上任务基础,继续扩展功能:当上位机给stm32发送一个字符“#”后,stm32暂停发送“hello windows!”;发送一个字符“*”后,stm32继续发送;
在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; } }
实验结果:
任务三、
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,并分析时序状态正确与否,计算波特率实际为多少。
参考链接:
http://t.csdnimg.cn/GXfwu
通过查看peripherals中的USART1可看到其波特率实际为115107baud
实验总结:
通过本次实验,我了解了串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。STM32的发送,接收字符,使用Keil的软件仿真逻辑分析仪功能观察串口输出波形,使我能够能熟练的应用STM32.