UART:
universal asynchronous receiver and transmitter 通用异步收发器
总线信号:TX , RX
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。
USART:
universal synchronous asynchronous receiver and transmitter 通用同步异步收发器
总线信号: TX, RX, CK
USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。
特点:
全双工操作(相互独立的接收数据和发送数据);
同步操作时,可主机时钟同步,也可从机时钟同步;
独立的高精度波特率发生器,不占用定时/计数器;
支持5、6、7、8和9位数据位,1或2位停止位的串行数据桢结构;
由硬件支持的奇偶校验位发生和检验;
数据溢出检测;
帧错误检测;
包括错误起始位的检测噪声滤波器和数字低通滤波器;
三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;
支持多机通信模式;
支持倍速异步通信模式。
支持同步模式,因此USART 需要同步始终信号USART_CK(如STM32单片机),通常情况同步信号很少使用,因此一般的单片机UART和USART使用方式是一样的,都使用异步模式。
USART和UART的区别
USART和UART之间的一个区别是可以为串行数据提供时钟的方式。 UART在内部向微控制器生成其数据时钟,并通过使用起始位转换将该时钟与数据流同步。没有与数据相关的输入时钟信号,因此为了正确接收数据流,接收器需要提前知道波特率应该是什么。USART可以设置为以同步模式运行。在此模式下,发送外设将生成一个时钟,接收外设可以从数据流中恢复,而无需提前知道波特率。或者,链路将使用完全独立的线路来承载时钟信号。使用外部时钟可使USART的数据速率远高于标准UART的数据速率,上限可达4 Mbps。
第二个主要区别是外设可以支持的协议数量。 UART很简单,只提供其基本格式的一些选项,例如停止位数和偶数或奇数奇偶校验。 USART更复杂,可以以与许多不同标准协议相对应的形式生成数据,例如IrDA,LIN,智能卡,RS-485接口的驱动程序启用和Modbus等。 USART也具有与UART相同的异步功能
两者使用情况
USART和UART外设具有明显不同的功能,可以使用在不同的情况下,开发人员可以在标准微控制器上找到两个外围设备。例如,采用针对低功耗设计的微控制器,例如STM32系列。 STM32器件具有片上USART和UART外设。 USART意味着在“高”能耗期间进行所有“繁重的”串行通信。但是,当微控制器处于睡眠状态且处于低功耗模式时,UART外设可以处理低速通信,同时降低能耗。
USART和UART是否相同?从技术上讲,答案是否定的。 USART通常具有更多功能,标准UART和生成时钟数据的能力允许USART以远低于UART功能的波特率运行。 USART确实包含了UART的功能,并且在许多应用中,尽管具有USART的强大功能,开发人员将它们用作简单的UART,忽略或避免这些强大外设的同步时钟生成功能。难怪有这么多人使用这些术语,就像它们是同义词一样。
UART协议
UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。
其中各位的意义如下:
起始位:先发出一个逻辑"0"的信号,表示传输字符的开始。
数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符,从Z低位开始传送。
奇偶校验位:数据位加上这一位后,使得"1"的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
空闲位:处于逻辑"1"状态,表示当前线路上没有资料传送。
波特率:衡量数据传送速率的指标。表示每秒钟传送的比特位