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等芯片转接。

  

posted @ 2020-08-06 11:03  阿韬  阅读(591)  评论(0)    收藏  举报