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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版