一、串口英文全称
首先从名字上看:
UART:universal asynchronous receiver and transmitter通用异步收/发器
USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器
从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?
其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。
二、异步通信含义
串行异步通讯通讯过程中无需同步时钟信号,设备间有时要约定波特率,有时可以不用约定,硬件成本低。异步通讯中,在异步通讯中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
异步通信中典型的帧格式是:1位起始位,7位(或8位)数据位,1位奇偶校验位,2位停止位。
异步通信是按字符帧传输的,相对于同步通信,异步通信在发送字符时,所发送的字符之间的时隙可以是任意的,接收方并不知道数据什么时候会到达,因此接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,时间间隔可以是任意的,在一字符帧中的所有比特是连续发送的。
发送端不需要在发送字符之前和接收端进行协调(不需要先进行比特同步)。接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。内部处理器在完成了相应的操作后,通过一个回调的机制,以便通知发送端发送的字符已经得到了回复。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的字符间同步,字符内比特位异步)
因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。通信双方需要对采用的信息格式(字符的位数、停止位的位数、有无校验位及校验方式等)和数据的传输速率作相同的约定。接收方是在数据的起始位和停止位的帮助下实现字符传送时的同步。这种传输通常是很小的分组,比如一个字符为一组,为这个组配备起始位和结束位。所以这种传输方式的效率是比较低的,毕竟额外加入了很多的辅助位作为负载,常用在低速的传输中。
三、同步通信含义
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。
它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。
同步通信要求发送和接收双方在进行数据传输时,保持完全的同步,因此,要求发收双方必须使用同频同相的同步时钟信号。只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后在同步时钟的控制下逐位发送/接收。这样,信息传输完全可以确定传输过程中每1位的位置。因此同步通信是一种比特同步通信技术。
如下图所示:
同步通信是一种连续传送数据的通信方式,一次通信传送一帧数据,每个信息帧用同步字符作为开始,字符间不加标识位。(这里的数据帧比异步通信中的字符帧要大得多,通常含有若干个数据字符)。当检测到有一串数位和同步字符相匹配时,就认为开始一个信息帧,于是,把此后的数位作为实际传输信息来处理。
同步通信以数据帧为单位,其格式包括:同步字符+数据+校验字符CRC。
四、同步和异步通信总结
(1)同步通信(比特位同步)
(2)异步通信(字符间同步,字符内比特位异步)
同步通信会利用一根额外的信号线,其实也就是时钟信号线,它往往是发送设备提供的时钟信号,发送设备和接收设备在发送设备提供的同一时钟频率下完成同步。
异步通信没有额外的一根信号线用于同步,接收者和发送者使用各自的时钟信号,接收者根据与发送者按事先约定的规来确定数据发送的开始与结束以及数据单位的持续时间。例如异步串行通信中,一般接收双方会确定一致的停止位,数据位的个数、波特率的大小以及是否采用奇偶校验位。接收方可以根据这些信息推测出准确的数据采样时间以接收正确的数据。如果是同步通信则不需要这些额外的用于同步的数据位(开始位,结束位,奇偶校验位)。