OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1896|回复: 6

一个关于发送数据给UART的协议的问题

[复制链接]

7

主题

23

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-7-8
在线时间
9 小时
发表于 2019-8-9 09:53:37 | 显示全部楼层 |阅读模式
10金钱
请问大家,假设我现在使用串口调试助手XCOM发送字符串“abcde\r\n”给UART1_RX,那么理论上应该会一个字符一个字符的发送,进而产生多个中断。
我的问题是,串口调试助手在发送完一个字符'a'之后,怎么知道什么时候该发送'b',什么时候该发送'c'?
换句话说,串口调试助手凭借什么知道UART已经接收完了前一个数据?凭借什么知道什么时候发送b不会覆盖掉a,发送c不会覆盖掉b?


最佳答案

查看完整内容[请看2#楼]

stm32的串口寄存器只有一个字节,不读出来肯定被后来的数据覆盖
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1702
金钱
1702
注册时间
2012-5-10
在线时间
439 小时
发表于 2019-8-9 09:53:38 | 显示全部楼层
stm32的串口寄存器只有一个字节,不读出来肯定被后来的数据覆盖
回复

使用道具 举报

7

主题

23

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-7-8
在线时间
9 小时
 楼主| 发表于 2019-8-9 10:38:10 | 显示全部楼层
经过讨论,我觉得串口调试助手不知道两次发送数据之间的时间间隔,因而有可能会出现丢数据的情况。
回复

使用道具 举报

8

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-3-8
在线时间
114 小时
发表于 2019-8-9 11:08:31 | 显示全部楼层
设置波特率的作用是什么?设置数据位的作用是什么?设置发送方式的作用是什么?
回复

使用道具 举报

8

主题

182

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-3-8
在线时间
114 小时
发表于 2019-8-9 11:15:08 | 显示全部楼层
串口协议设置好的情况下,我作为发送方只需要按照固定波特率固定格式发数据就可以了,我并不关心你接收方处理不处理的了,因为协议是双方定好的。你如果想要确认对方收到了这个数据,那你去用IIC,IIC发送时是每一个字节后边需要应答位来进行下次发送的。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-8-9 13:37:46 | 显示全部楼层
一个只管发,谁管你有没有接收到
有没有接收到那是你的问题,想多了
一分耕耘一分收获。
回复

使用道具 举报

10

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2075
金钱
2075
注册时间
2016-8-15
在线时间
413 小时
发表于 2019-8-9 15:00:40 | 显示全部楼层
本帖最后由 流年丶 于 2019-8-9 15:02 编辑

一般使用串口发送数据,包含一个起始位,8个数据位,无校验位,一个停止位。大多数情况是这样设置的。串口调试助手按照设置一个一个发送数据,在第一个数据停止位发送完毕后,紧接着又开始下一个数据的起始位,周而复始,直到所有数据发送完毕。发送方并不管接收方是否接受到数据,反正我自己的数据发送完成就OK。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 21:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表