完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
发送数据寄存器TDR和发送移位寄存器:发送寄存器用来保存要发送的数据,一位寄存器用来将数据从LSB一位一位地移出去 发送数据的过程 先将一个字节的数据写入TDR,然后移位寄存器一位位地传输。下一次传输之前,要确保之前一个数据已经发送出去了,不然会覆盖之前还未发送出去的部分,造成数据丢包。 接收数据的过程 串口一旦读到了要接受数据的起始位,就开始将外界传过来的数据从移位寄存器一位一位地移入RDR中。接受下个字节之前,一定要将这次的数据读出来,不然会发生覆盖数据的现象。 异步通信 特点 1.以字符为单位传送信息。 2.相邻两字符间的间隔时间任意长。 3.异步通信没有时钟线的约束,通信双方都有自己的通信频率(波特率),且双方的波特率要相同,但波特率的相位可能不同。 4.异步通信的数据传输格式:1个起始位+数据(1个字符)+奇偶校验位+停止位。 也就是说,异步通信每发送一个数据,都要发送上面的一串格式,这就造成了数据传输的效率大大降低了,它不能用来大数据的传输。 那为什么会是这种通信传输格式呢? 由于异步通信没有时钟线SCLK的约束,使得通信双方的发送与接受不同步(接收方根本不知道你什么时候发送数据过来,也 不知道你发来的一串字符哪些才是有效的)。所以你发送每一个字符数据,你都得先发送一个起始位(告诉对方我要发数据 了),然后才是数据字符和奇偶校验(可选择),最后你要告诉对方我数据发送完了(发送停止位)。 由于接收方有自己的时钟,所以在传送字符的时候,发送方发送一位数据的时刻与接受一位数据的时刻很可能不是同一时刻(波特率相位不同),参考上图。如果一次传输中连续传送字符,就很可能出现一种现象:第一个字符还没被接收完,第二个字符就来了,第二个字符会将移位寄存器中第一个字符还没发送出去的几位给覆盖掉! 所以一次传输中只能传输一个字符! 同步通信 特点 1.数据传送是以数据块(多个字符组成数据块流) 2.在一个数据块(信息帧)内,字符与字符间无间隔 3.因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟SCLK 4.通信双方的时钟SCLK是连在一起的,提供同步时钟。 5.通信双方接受与发送是同步的(时刻相同) 数据传输格式 异步与同步通信的比较 1.异步通信双方之间没有SCLK的约束,同步通信双方的SCLK连在一起。 2.异步通信数据传输是以字符(一个字节)传输的,同步通信数据传输是以字节块(多个字节)传输的。 3.异步通信传输效率低,同步通信传输效率高(但复杂)。 4.异步通信字节传送的间隔是任意的,同步通信的字节传输是没有间隔的 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
558浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:17 , Processed in 0.777494 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号