串口异步通讯的停止位和空闲位都是高电平,为什么要设置停止位位数

串口异步通讯的停止位和空闲位都是高电平,为什么要设置停止位位数

如图,两位停止位可以起到时钟同步的作用。

因为在一个字节的时间内,收发端的时钟不会相差太大,但是当收发数据多了之后,它们的差距会越来越大,所以,每传输8位数据之后,使用停止位做一次时钟同步,那么收发端的时钟差距被限定在一个区间内,不会造成数据读取错乱。

同步是怎样做到的?

检测到下调沿后,开始计时,1.5个时钟周期后,开始采样,这样采样的时间点刚好在一个位的中间。

 

这个图是否正确?

      在空闲位期间,应该不是定时采样,而是在监测下跳沿。如果是这样的话,只要有一个高电平的空闲就好,那么停止位到底是做什么用呢,一帧结束后只出现0.3个时钟周期的空闲位,马上开始传输数据,会有怎样的后果?

      根据当前所掌握的只是可以知道,这不会出现问题。但是如果前一帧数据最后一位是低电平的0,紧接着马上是另外一帧开始,中间没有空闲,那么就不会出现下跳沿,接收端无法感知新的一帧开始。规定起始位的作用就是保证不会出现这种情况,因为数据位结束后的空闲位长度是不可空的,所以就在事先规定好停止位的长度。