STM32中的USART通信
在嵌入式通信中,我们比较常用的通信方式有USART,I2C,SPI等,这次来简单地总结最经典也最常用的USART通信方式。
串口通信(物理层):
首先是最常见的串口通信,在STM32中,我们使用的串口通信是TTL电平标准,使用2.4-5V表示逻辑1,0-0.5V表示逻辑0(在STM32中,TTL电平为3.3V逻辑1,0V逻辑0),当然也有其他的一些串口标准,比如说RS232——一种传输距离更加远的串口标准。
TTL与RS232的典型示例(图片源自网络):

串口通信(协议层):
串口通信是一种全双工的通信方式,一般我们会使用TXD,RXD两根信号线,分别为发送与接收。
串口通信的数据包由起始位,多个数据位,校验位和停止位组成。
起始位:由一个逻辑0组成。停止位:由0.5-2个逻辑1表示。数据位:长度通常被发送,接收双方约定为5-8位长。
数据校验位:通常有偶校验(有效数据位和校验位逻辑1的总和为偶数)奇校验(类同,和为奇数)0校验(校验位0)1校验(校验位1)
STM32中的USART:
USART:同步异步收发器。UART:异步收发器。我们平时学习开发使用到的基本上都是UART,其剪裁掉了同步功能,更加简单。
使用UART时,上位机上会显示一些数据选项:

其中,波特率,数据位,停止位都是是双方约定的,在UART_Init(串口初始化)中定义,部分代码如下:
USART_InitStructure.USART_BaudRate = 115200 ; //波特率,这里为115200 USART_InitStructure.USART_WordLength=USART_WordLength_8b; //数据帧字长 8位 USART_InitStructure.USART_StopBits=USART_StopBits_1; //配置停止位 1个 USART_InitStructure.USART_Parity=USART_Parity_No; //校验位,无校验位
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //不使用用硬件流控制 USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; //收发一体 USART_Init(USART2,&USART_InitStructure); //完成初始化 USART_Cmd(USART2,ENABLE); //使能串口
使用UART的其他注意事项:需要共地线。在串口转USB接口中,常使用CH340等芯片转接。

浙公网安备 33010602011771号