您的位置:首页 > 综合 >

R&D奇谭 第2期:USART的同步和异步区别?

TopSemic嵌入式交流群里,有个群友问了一个关于串口同步和异步通信的问题,引起了大家激烈的讨论,在此分享给大家。

wm :

各位,我用stm32的串口来给电脑传输数据,到底用的同步通讯还是异步通讯?


(资料图片)

Mr.杜 :

异步

wm :

@Mr.杜 何以见得?

.舒灿:

分清同步和异步的本质,你就会有见得了

wm :

我知道他们的区别,但是我不知道哪儿控制着他们

0114 0112 0127:

cubemx 配置

蓝色雨:

串口无论怎么控制都是异步的啊

wm:

@蓝色雨,USART可以进行同步通讯

蓝色雨:

先理解一下同步和异步的概念,不传输时钟的通讯都是异步的

0114 0112 0127:

@蓝色雨,这个跟站的角度有关,不是这么说的。

我们暂且不关注如何配置同步和异步工作方式,先关注到底什么是同步与异步,对此大家已经有不同的理解。

这个问题,其实这么多年,我也没搞清楚。

wuya:

串口同步、异步,我也没搞清楚过,用的都是异步。有用过同步的大神吗?

APaul:

刚毕业时,面试的问我异步电路和同步电路哪个更好?工作十年后,再次被面试的问同步通信的事情,我说光纤这个没时钟信号应该是异步的,他说这是同步的,后来关于同步还是异步的理解就变复杂了。

扬帆起航:

我也被问过,一直就没弄明白

看来不清楚这个问题的人大有存在。

APaul:

一根线的通信隐含时钟,其实要本地时钟采样对齐才能得到数据,一般是过采样或相位偏移采样处理的,这个FPGA中做通信的用的多。一般的串口通信要波特率一样,也是接收端要16倍采样处理的,这些有人说是同步的,因为这是基于频率的,也有人说是异步的,因为没有一个时钟线用来边沿采样。

那么STM32这个串口的具体例子来说,一般说串口不带时钟线就是异步的,而SPI那种带时钟线就是同步的。UART也可配成带时钟线的用法,类似SPI,也就成了同步串口了,这么说大家都可以理解。

wuya:

什么情况下 stm32 串口需要带时钟线呢?

APaul:

一般不用,因为所有的串口,尤其是计算机的串口,都没时钟线。

只有那种非要把它当SPI来用的情况,才配成同步的,这是可能是波特率可以高很多吧

带时钟线的串口,就是类似SPI的,比如接收端上升沿采样,发送端下降沿改变输出,一次传一个字节等等

异步通信,或者说是隐含时钟的同步通信,没单独的时钟线,发送方和接收方的本地时钟频率肯定有差异,这需要过采样后根据多倍的01变化来解决频率差的问题。串口波特率是有个误差范围的,接收方 可以在一定范围内承受频率差异。

HQY:

@Apaul,大佬,通俗易懂。

之前搞了那么多年,只是知道USART 和 UART 是有同步区别的,这么一说才发现差差异点有一个CLK,竟然从没注意过

wm:

只有带clk 显得才能说同步啊

Guo:

我觉得用数据恢复的时钟不能叫同步。

同步应该收发用同一个时钟。

APaul:

可以这么简单的说,但在一些通信上,比如光纤,或者基于bit流的RS485通信,都会说是隐含时钟的同步通信。

wm:

@APaul 隐含时钟具体是指用过采样来确定每一位么

APaul:

差不多这意思吧

蓝色雨:

有种正交编码的方式,数据线上隐含时钟信号。

MIPI的LP模式就是这样的

wm:

那这样说所有的通信都是同步

APaul:

宽泛的理解就是双方必须基于相同的频率才能通信,不然任何方法都不能正确判断出bit来,这就是同步

蓝色雨:

就像CAN通讯里有同步域和位填充来保证时钟同步,但是本质上还是异步通讯的

wm:

@Apual,相同的频率指什么?

APaul:

频率的一定范围内的误差,可以通过边沿重对齐,过采样去抖动来解决,这样就要求数据必须不断的变化,变化才能隐含时钟。

要是给个直流电平过去,告诉它我这发的是一串1,它打死也认不出这是多少个1来,变化的隔间大到一定程度,时钟对齐就失效了,哪怕错了1个bit,往往导致一帧数据都错了,所以由误码率的说法,也有帧同步的概念。

相同的频率就是那个约定好的波特率

总结一下:

1. USART中的同步通信,需要发送方和接收方共用一个clock。换句话说,发送方提供一个clock或其他timing signal,接收方从而知道什么时候去读取下一位数据。

在同步传输方式下,数据在一条线上传输,clock在另外一条线上传输。

同步通信通常效率更高,因为只传输实际数据,而无需其他bits,像start bit、stop bit 等。

2. USART中的异步通信,不需要发送方发送时钟信号即可通信。但是需要收发双方事先在某些方面做好约定,以用于同步,比如增加起始位、结束位、奇偶校验位等,需要事先知道波特率。

3. 不管哪种通信方式,其实都涉及到同步的概念,从这个角度来说,也都可宽泛的称之为同步通信。

关键词: