[应用相关] 串口连续接收同时写入FLASH数据不全

[复制链接]
4252|46
gygp 发表于 2024-7-17 17:57 | 显示全部楼层
如果没有合理地管理接收数据的缓冲区,例如没有及时清空缓冲区或者缓冲区大小不足,也可能导致数据丢失。
updownq 发表于 2024-7-19 12:20 | 显示全部楼层
在RAM中设置一个缓冲区,先将串口接收到的数据存储到缓冲区中。一旦缓冲区满或者接收到特定标志(例如结束符),再启动FLASH写入操作。这样可以避免在FLASH写入过程中丢失串口数据。
backlugin 发表于 2024-7-19 16:26 | 显示全部楼层
STM32的串口接收缓冲区可能不足以存储大量接收的数据,特别是当接收数据的速度远大于写入FLASH的速度时。
rosemoore 发表于 2024-7-23 22:22 | 显示全部楼层
DMA可以用来加速数据的移动,它可以在CPU处理其他任务时将数据从串口直接移动到内存或FLASH。使用DMA时,要注意缓冲区的大小和DMA的配置,以避免数据溢出或错误。
pentruman 发表于 2024-7-24 09:55 | 显示全部楼层
如果使用了DMA(Direct Memory Access)进行数据传输,但DMA配置不正确或者DMA通道资源紧张,也可能导致数据传输不完整。
ccook11 发表于 2024-7-24 16:33 | 显示全部楼层
在接收到数据后,将其存储在一个RAM缓冲区中。
当缓冲区达到一定阈值或在特定的时间间隔后,将数据从缓冲区写入FLASH。
在写入过程中,确保串口接收中断能够继续接收数据而不被阻塞。
Bowclad 发表于 2024-7-26 12:40 | 显示全部楼层
速度太快了吧,调慢一下发送数据看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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