USART又称为通用同步异步收发器,是利用分数比特率发生器提供宽范围的比特率选择。STM32F10x系列的芯片都提供了功能比较强大的USART串口,基本上的串口功能都可以通过硬件来实现。
USART具有以下比较典型的特征:
1.全双工异步通信;
2.单线半双工通信;
3.发送方为同步传输提供时钟;
4.可配置的使用DMA的多缓冲器通信—在SRAM中利用集中式DMA缓冲接受/发送;
5.单独的接收器和发送器使能端;
6.检测标志,接受缓冲器满,发送缓冲器空,传输结束标志;
7.4个错误检测标志:溢出错误,噪音错误,帧错误,检验错误;
8.10带标志的中断源等。
任何USART双向通信都至少需要两个脚:接受数据输入(RX)和发送数据输出(TX)。
在异步模式下,总线在发送和接受前应该处于空闲状态。
在同步模式下需要用到SCLK引脚:发送器时钟输出。此引脚输出用于同步传输的时钟(在START和STOP位上没有时钟,软件可选,可以在最后一个数据位送出一个时钟脉冲)。时钟相位和极性都是软件可编程的。
发送器中,发送器会根据M位的状态发送8位或9位的数据字。当发送使能位(TE)被设置时,使能USART同步串口,这时发送移位肌寄存器中的数据在TX引脚上输出,相应的时钟脉冲在SCLK引脚输出。字符发送在TX引脚上首先移除数据的最低有效位,每个字符之间都有一个低电平的起始位,之后是停止位,其数目是可配置的。
Tips:在数据传输期间不能复位TE位,否则将破坏TX引脚上的数据,因为比特率计数器停止计数,正在传输的当前数据将会丢失,TE位被激活后将发送一个空闲位。
在单字节通信过程中,先读USART_SR寄存器,再写USART_DR寄存器,可以完成对TC位的清0.同时TC位也可以通过对TC位软件写0来清除,此清0方式只在多缓冲器通信模式下推荐实用。
设置SBK可以发送一个断开符号。断开帧长度取决于M位,如果设置SBK=1,在完成当前数据发送后,将在TX线上发送一个断开符号。断开复发发送完成时(在断开符号的停止位时),SBK被硬件复位。USART在最后一个断开帧的结束处插入逻辑1,保证能识别下一帧的起始位。
Tips:如果在开始发送断开帧之前软件又复位了SBK位,断开符号将不被发送。如果要发送两个联系的断开帧,SBK位应该在前一个断开符号的停止位之后置起。