STM32
直播中

恐龙之家

8年用户 806经验值
私信 关注
[问答]

异步通信与同步通信对比分析哪个好?

异步通信与同步通信对比分析哪个好?

回帖(1)

李子胡

2021-12-16 13:44:02
   发送数据寄存器TDR和发送移位寄存器:发送寄存器用来保存要发送的数据,一位寄存器用来将数据从LSB一位一位地移出去
   接收数据寄存器RDR和接收移位寄存器:接受数据移位寄存器将数据从LSB一位一位移入接收数据寄存器中,并保存在RDR中






发送数据的过程

先将一个字节的数据写入TDR,然后移位寄存器一位位地传输。下一次传输之前,要确保之前一个数据已经发送出去了,不然会覆盖之前还未发送出去的部分,造成数据丢包。
接收数据的过程

串口一旦读到了要接受数据的起始位,就开始将外界传过来的数据从移位寄存器一位一位地移入RDR中。接受下个字节之前,一定要将这次的数据读出来,不然会发生覆盖数据的现象。

异步通信

特点

1.以字符为单位传送信息。
2.相邻两字符间的间隔时间任意长。
3.异步通信没有时钟线的约束,通信双方都有自己的通信频率(波特率),且双方的波特率要相同,但波特率的相位可能不同。
4.异步通信的数据传输格式:1个起始位+数据(1个字符)+奇偶校验位+停止位。
  也就是说,异步通信每发送一个数据,都要发送上面的一串格式,这就造成了数据传输的效率大大降低了,它不能用来大数据的传输。
那为什么会是这种通信传输格式呢?


    由于异步通信没有时钟线SCLK的约束,使得通信双方的发送与接受不同步(接收方根本不知道你什么时候发送数据过来,也    不知道你发来的一串字符哪些才是有效的)。所以你发送每一个字符数据,你都得先发送一个起始位(告诉对方我要发数据       了),然后才是数据字符和奇偶校验(可选择),最后你要告诉对方我数据发送完了(发送停止位)。






由于接收方有自己的时钟,所以在传送字符的时候,发送方发送一位数据的时刻与接受一位数据的时刻很可能不是同一时刻(波特率相位不同),参考上图。如果一次传输中连续传送字符,就很可能出现一种现象:第一个字符还没被接收完,第二个字符就来了,第二个字符会将移位寄存器中第一个字符还没发送出去的几位给覆盖掉!
所以一次传输中只能传输一个字符!
同步通信






特点

1.数据传送是以数据块(多个字符组成数据块流)
2.在一个数据块(信息帧)内,字符与字符间无间隔
3.因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟SCLK
4.通信双方的时钟SCLK是连在一起的,提供同步时钟。
5.通信双方接受与发送是同步的(时刻相同)
数据传输格式






异步与同步通信的比较

1.异步通信双方之间没有SCLK的约束,同步通信双方的SCLK连在一起。
2.异步通信数据传输是以字符(一个字节)传输的,同步通信数据传输是以字节块(多个字节)传输的。
3.异步通信传输效率低,同步通信传输效率高(但复杂)。
4.异步通信字节传送的间隔是任意的,同步通信的字节传输是没有间隔的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分