USART中文是通用同步/异步串行接收/發送器。
人们常常称为多串口卡识别不了(要知道串行通信口USART和串行总线接口SPI是完全不同的接口设备)
USART在当代的通用计算机上几乎消失殆尽了,因为其通信速率、距离、硬件特性等不适合PC的要求
取而代之的是“通用串行通信口” ,也就是USB口
但在嵌入式应用领域,USART仍无法取代
- 可实现全双工的异步通信。
- 配备分频数波特率发生器:波特率可编程发送和接收共用,最高达4.5Mbps
- 可编程数据长度(8位或9位)。
- 鈳配置停止位支持1或2个停止位。
- 可充当LIN总线主机发送同步断开符;还可充当LIN总线从机,检测断开符当USART配置成LIN总线模式时,可生成13位斷开符;可检测10/11位断开符
- 发送方为同步传输提供时钟。
- 配备IRDA、SIR编码/解码器:在正常模式下支持3/16位的持续时间
- 智能卡模拟功能:智能卡接口支持ISO7816-3标准里定义的异步智能卡协议;支持智能卡协议里的0.5和1.5个停止位填充。
- 可实现单线半双工通信
- 可使用DMA多缓冲器通信:支持在SRAM里利用集中式DMA缓冲接收/发送字节。
- 具有单独的发送器和接收器使能位
- 3种检测标志:接收缓冲器满标志;发送缓冲器空标志;传输结束标志標志。
可以看出STM32的USART除了其最根本的串行通信功能之外,配合STM32的DMA单元可以得到更为快速的串行数据传输而众多的错误检测功能足以保证USART通信的稳定与可靠性。
使用PC向STM32的USART发送一个字节的数据而后STM32将此数据传回给PC端。
RS232电平转换电路
- 配置RCC寄存器组使用PLL输出72MHz时钟并作为主时钟源。
- 配置GPIOA端口设置GPIOA.9为第2功能推挽输出模式,GPIOA.10为浮空输入模式
- 配置USART设备,主要参数为:使用9600bps波特率、8位数据长度、1个停止位且无校验位、全双工模式
- 如果使用1152009600等常用数值作为波特率参数,则请注意一定偠把PLL输出设为72MHz并且作为主时钟使用,否则波特率需要重新计算
- 读者要明确USART和GPIO是两种不同的设备,USART是“借用”了GPIO设备作为自己的输出通噵所以不仅要打开USART的时钟,也要打开相应GPIO的时钟同时将对应的GPIO引脚设置为第2功能模式。
下一篇写本篇程序代码用到的库函数