[STM32L0] STM32l072cz单片机串口USART发生错误接收不到数据

[复制链接]
2069|18
 楼主| probedog 发表于 2023-6-26 10:13 | 显示全部楼层 |阅读模式
这两天在做LoRa透传模块,发现USART2用起来有问题,不清楚是我哪里没配置好:
现象:
      我接收的数据包最大57个字节,所以我用HAL_UART_Receive(&Sensor_UartHandle,receive_tab,64,50);去固定收64字节,50ms的timeout时间,但每次都是接收正确几包数据后,就出错了,一旦USART发生错误了,就再也接收不到数据了:
从图中可以看出:
前面的3包数据没问题,第四包就没收完整了,到了第5包就只收了一个字节,后面再也收不到数据了,
我也在时时读此USART的错误状态:
uart_status = HAL_UART_GetError(&Sensor_UartHandle);
但是从打印来看,根本就没有错误发送,就是*pData++ = (uint8_t)(huart->Instance->RDR & (uint8_t)uhMask);读不到数据。
我自然的想到修改timeout时间,从50改到500,情况依旧,在网上看到有人不停的去初始化USART,我就在每次接收一次之后就去init下此USART,我以30ms一包的频率往芯片里发也没问题了。
不知道各位遇到这样的问题没,究竟是什么原因导致串口收不到数据呢?
香水城 发表于 2023-6-30 08:14 | 显示全部楼层
代码里除了UART接收外 还有别的事情吗? 尤其可能影响UART接收的事情。

是否发生接收溢出?

还有 有无可能是发送端的问题?
Undshing 发表于 2023-7-1 23:12 | 显示全部楼层
接收有问题吗?
一只眠羊 发表于 2023-7-13 23:14 | 显示全部楼层
你不如用协议的头和尾来判断数据是否接收完成
将爱藏于深海 发表于 2023-7-15 22:50 | 显示全部楼层
接收不到数据了?

风凉 发表于 2023-7-15 23:11 | 显示全部楼层
估计是第四包收到数据之后,就没清除标记吧,导致现在数据一直收不到了

春日负喧 发表于 2023-7-16 01:11 | 显示全部楼层
是不是有数据溢出导致呢?

温室雏菊 发表于 2023-7-16 03:22 | 显示全部楼层
主要是研究为什么第四包的数据就不完整了呢?

西洲 发表于 2023-7-16 05:03 | 显示全部楼层
是不是因为超时导致的数据不完整啊?

未说出口的像你 发表于 2023-7-16 07:05 | 显示全部楼层
感觉像串口死掉了一样

失物招領 发表于 2023-7-16 09:45 | 显示全部楼层
是不是串口的标记没清掉啊?

白马过平川 发表于 2023-7-16 11:53 | 显示全部楼层
其实你用协议的方式来收数据是比较OK的
捧一束彼岸花 发表于 2023-7-16 14:02 | 显示全部楼层
你程序可能在配置方面有点不对

Henryko 发表于 2023-7-16 22:24 | 显示全部楼层
是不其他程序影响了串口了
Stahan 发表于 2023-7-17 22:35 | 显示全部楼层
有没有可能发送端只发出了这些
MessageRing 发表于 2023-7-18 23:38 | 显示全部楼层
是不没清除标志位啊
SantaBunny 发表于 2023-10-25 09:55 | 显示全部楼层
你可以用协议的头和尾来判断数据是否接收完成
laocuo1142 发表于 2024-3-25 11:03 | 显示全部楼层
核实USART的配置参数,如波特率、数据位、停止位、校验位等是否与发送方匹配。
classroom 发表于 2024-3-25 20:00 | 显示全部楼层
检查硬件连接
powerantone 发表于 2024-3-25 21:30 | 显示全部楼层
检查中断配置
您需要登录后才可以回帖 登录 | 注册

本版积分规则

493

主题

3361

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部