[应用相关] STM32串口使用DMA方式进行接收,打印的数据和发送的数据不一致

[复制链接]
3033|27
月亮一键变蓝 发表于 2024-11-3 04:00 | 显示全部楼层
数据处理函数要弄好,确保数据处理函数正确处理接收到的数据,避免数据不一致
未说出口的像你 发表于 2024-11-3 05:00 | 显示全部楼层
调试工具问题,确保串口调试工具发送的数据格式正确,避免发送的数据格式与接收端不匹配
我吃小朋友 发表于 2024-11-3 06:00 | 显示全部楼层
时钟配置,确保系统时钟和外设时钟配置正确,避免时钟配置错误导致数据传输不一致
失物招領 发表于 2024-11-3 07:00 | 显示全部楼层
中断优先级设计问题,确保DMA中断的优先级配置正确,避免中断优先级冲突导致数据处理不及时
她已醉 发表于 2024-11-3 08:00 | 显示全部楼层
不一致的话,是不是缓冲区溢出了?你缓冲区设计大点呢
春日负喧 发表于 2024-11-3 09:00 | 显示全部楼层
不建议在中断中加过多的程序处理函数哈
哈根达斯uz 发表于 2024-11-14 22:53 来自手机 | 显示全部楼层
中查询已接收到的数据并进行处理
公羊子丹 发表于 2025-1-24 14:14 | 显示全部楼层
你用的是环形缓冲区吗?DMA接收的时候最好用环形缓冲区,这样不会因为覆盖数据而出错。
周半梅 发表于 2025-1-24 14:15 | 显示全部楼层
我也遇到过类似问题,后来发现是波特率设置不一致,检查一下你的波特率是不是跟调试工具一致?
帛灿灿 发表于 2025-1-24 14:17 | 显示全部楼层
DMA模式下要注意空闲中断,可以用USART的IDLE中断来判断数据接收完成,这样会更稳定。
童雨竹 发表于 2025-1-24 14:18 | 显示全部楼层
检查一下是不是数据有错位的问题,有时候发送和接收缓冲区的起始位置没对上也会出现这种情况。
万图 发表于 2025-1-24 14:19 | 显示全部楼层
你while(1)里查询数据的方法是怎么写的?可能是逻辑处理有问题,建议贴一下代码。
Wordsworth 发表于 2025-1-24 14:20 | 显示全部楼层
是不是接收缓冲区不够大?发送的数据量如果超过缓冲区大小,就会导致数据丢失。
Bblythe 发表于 2025-1-24 14:22 | 显示全部楼层
如果用的是RTOS的话,注意检查DMA的优先级设置,不然可能会被其他任务抢占。
Pulitzer 发表于 2025-1-24 14:23 | 显示全部楼层
看下你的DMA配置,有没有可能是数据的对齐方式或者数据宽度设置错了?
Uriah 发表于 2025-1-24 14:24 | 显示全部楼层
你用的什么调试工具?有些工具在发送数据时会带一些不可见字符,检查下是不是这个原因。
Clyde011 发表于 2025-1-24 14:26 | 显示全部楼层
数据发出和打印之间的流程太复杂了?建议先单独验证DMA接收是否正常,再一步步排查。
地瓜patch 发表于 2025-1-24 15:05 来自手机 | 显示全部楼层
打印以后,清一次缓冲区,再接受
芯路例程 发表于 2025-1-25 18:25 | 显示全部楼层
数据处理功能必须良好,以确保数据处理功能正确处理接收到的数据,避免数据不一致
AutoMotor 发表于 2025-1-25 21:00 | 显示全部楼层
不建议在中断中添加过多的程序处理功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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