你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USART查询方式接收数据时RXNE位存在延时的疑问

[复制链接]
moreking 提问时间:2015-7-2 09:48 /
用STM32F103CB,USART接收数据采用查询方式,判断寄存器USART_SR寄存器的RXNE位为1时读数据,接收单个数据时正常,但是连续来两个数据时就不行了。用示波器看波形发现在接收到一个数据后会再延迟一个数据的时间RXNE位才会置1,刚好错过了后面一个数据(接收一个数据时也有延时,只是后面没有跟数据,不影响),而ORE位也没有置1.我改用中断接收就没问题,示波器测波形可知接收完一个数据后立即就进入了中断。
按理查询RXNE位不应该有一个数据的延迟(延迟时间随波特率变化而变化,确认是比一个数据时间多一点点),USART1和USART3都试过,都一样。有谁知道这是什么原因吗?有没有解决方法?

收藏 评论3 发布时间:2015-7-2 09:48

举报

3个回答
回答时间:2015-7-2 10:36:12
应该是没有及时读取走数据导致丢失。建议还是用中断方式读取,这样减少丢失字符。
moreking 回答时间:2015-7-2 11:00:01
一直在判断RXNE位,变1立即读取数据,不存在没及时读取数据的问题。问题是RXNE位延时了一个数据(10bit)的时间后才变1
ningzb 回答时间:2015-7-3 09:27:31
建议你接收数据用中断,STM32系列的接受没有FIFO,查询方式,查询周期长的话,会丢数据,实际应用,稍微复杂一点的应用,都无法用查询实现

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版