发新帖我要提问
123
返回列表
打印
[应用相关]

串口连续接收同时写入FLASH数据不全

[复制链接]
楼主: elephant00
手机看帖
扫描二维码
随时随地手机跟帖
41
janewood| | 2024-7-17 12:29 | 只看该作者 回帖奖励 |倒序浏览
在使用STM32微控制器时,如果在串口连续接收数据的同时尝试将这些数据写入FLASH存储器,可能会遇到数据丢失或不完整的问题。这是因为FLASH写入操作通常需要较长的时间,并且在写入过程中不允许其他操作打断,否则可能导致数据损坏。

使用特权

评论回复
42
gygp| | 2024-7-17 17:57 | 只看该作者
如果没有合理地管理接收数据的缓冲区,例如没有及时清空缓冲区或者缓冲区大小不足,也可能导致数据丢失。

使用特权

评论回复
43
updownq| | 2024-7-19 12:20 | 只看该作者
在RAM中设置一个缓冲区,先将串口接收到的数据存储到缓冲区中。一旦缓冲区满或者接收到特定标志(例如结束符),再启动FLASH写入操作。这样可以避免在FLASH写入过程中丢失串口数据。

使用特权

评论回复
44
backlugin| | 2024-7-19 16:26 | 只看该作者
STM32的串口接收缓冲区可能不足以存储大量接收的数据,特别是当接收数据的速度远大于写入FLASH的速度时。

使用特权

评论回复
45
rosemoore| | 2024-7-23 22:22 | 只看该作者
DMA可以用来加速数据的移动,它可以在CPU处理其他任务时将数据从串口直接移动到内存或FLASH。使用DMA时,要注意缓冲区的大小和DMA的配置,以避免数据溢出或错误。

使用特权

评论回复
46
pentruman| | 2024-7-24 09:55 | 只看该作者
如果使用了DMA(Direct Memory Access)进行数据传输,但DMA配置不正确或者DMA通道资源紧张,也可能导致数据传输不完整。

使用特权

评论回复
47
ccook11| | 2024-7-24 16:33 | 只看该作者
在接收到数据后,将其存储在一个RAM缓冲区中。
当缓冲区达到一定阈值或在特定的时间间隔后,将数据从缓冲区写入FLASH。
在写入过程中,确保串口接收中断能够继续接收数据而不被阻塞。

使用特权

评论回复
48
Bowclad| | 2024-7-26 12:40 | 只看该作者
速度太快了吧,调慢一下发送数据看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则