1 USART概述
U-universal 通用的 S- synchronous 同步 A-asynchronous 异步 R-Receive 接收 T-transmit 发送
通用同步异步收发器(USART)是一个串行通信设备,通用同步异步收发器 (USART) 能够灵活地与外部设备进行全双工数据交换,有别于USART,有一个UART,它是在USART基础上裁剪掉了同步通信功能,只有异步通信。
2 UART含义
1) 指一种通信方式,是异步串行通信,简称“串口通信”,很多器件之间都可以实现UART通信
2) 指MCU上用于实现这种通信的专用接口
STM32有一种特殊的外设USART/UART是用于实现这种通信的接口
举例:电话通信是一种通信方式,要想实现这种电话通信方式,必须要有一个电话/座机/手机,就是通信所需的接口
我们平时使用的串口通信都是UART
满足外部设备对工业标准 NRZ 异步串行数据格式的要求。USART 通过小数波特率发生器提供了多种波特率。
它支持同步单向通信和半双工单线通信;还支持 LIN(局域互连网络)、智能卡协议与 IrDA(红外线数据协会)SIR ENDEC 规范,以及调制解调器操作 (CTS/RTS)。而且,它还支持多处理器通信。通过配置多个缓冲区使用 DMA 可实现高速数据通信
3 USART电平标准
STM32 电平标准:TTL电平标准
电脑端电平标准:USB电平标准
CH340是一个USB总线的转接芯片,可以实现USB转串口或者是USB转打印口
在串口方式下,CH340 提供常用的MODEM联络信号,CH340用于为计算机扩展一个异步串口,或者是将普通的串口设备直接升级为USB总线
4 USART数据帧
数据帧组成:起始位+数据位+校验位+停止位
1 起始位:告知接收方准备接收数据,0有效
2 数据位:可以被编程(5,6,7,8),一般选择8位
设置字长,字长可以被编程:数据位+校验位
3 校验位:奇偶校验 –》不用
4 停止位:可以被编程
5 USART库函数
1 USART初始化函数
函数原型 void USART_Init (USART_TypeDef *USARTx, USART_InitTypeDef *USART_InitStruct)
函数参数
参数1:USART_TypeDef *USARTx eg:USART1
参数2:USART_InitTypeDef *USART_InitStruct
函数功能
根据USART_InitStruct里面的成员参数初始化指定的USARTx
2 USART使能函数
函数原型 void USART_Cmd (USART_TypeDef *USARTx, FunctionalState NewState)
函数参数
参数一:USART_TypeDef *USARTx eg:USART1
参数二:FunctionalState NewState eg:ENABLE
函数功能
使能USART
3 清除标志位
函数原型 void USART_ClearFlag (USART_TypeDef *USARTx, uint16_t USART_FLAG)
函数参数
参数一:USART_TypeDef *USARTx eg:USART1
参数二:uint16_t USART_FLAG
函数功能 清除对应的标志位
4清除中断标志位
函数原型 void USART_ClearITPendingBit (USART_TypeDef *USARTx, uint16_t USART_IT)
函数参数
参数一:USART_TypeDef *USARTx eg:USART1
参数二:uint16_t USART_FLAG
函数功能 清除对应的中断标志位
5获取标志位状态
函数原型 FlagStatus
USART_GetFlagStatus (USART_TypeDef *USARTx, uint16_t USART_FLAG)
函数参数
参数一:USART_TypeDef *USARTx eg:USART1
参数二:uint16_t USART_FLAG USART的标志位
函数返回值 标志位状态 SET—1 RESET—0
6获取中断标志位状态
函数原型 ITStatus
USART_GetITStatus (USART_TypeDef *USARTx, uint16_t USART_IT)
函数参数
参数一:USART_TypeDef *USARTx eg:USART1
参数二:uint16_t USART_IT USART的中断标志位
函数返回值 标志位状态 SET—1 RESET—0
7发送数据
函数原型 void USART_SendData (USART_TypeDef *USARTx, uint16_t Data)
函数参数
参数一:USART_TypeDef *USARTx eg:USART1
参数二:uint16_t Data 要发送的数据
函数功能 USART发送数据
8接收数据
函数原型 uint16_t USART_ReceiveData (USART_TypeDef *USARTx)
函数参数 参数:USART_TypeDef *USARTx eg:USART
函数返回值 USART接收的数据
9引脚复用
函数原型 void GPIO_PinAFConfig (GPIO_TypeDef *GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
函数参数
参数一:GPIO_TypeDef *GPIOx 端口号 eg:GPIOA
参数二:uint16_t GPIO_PinSource 引脚eg: GPIO_PinSource9
参数三:uint8_t GPIO_AF 复用的具体外设eg:GPIO_AF_USART1
函数返回值 Void