[其他ST产品] DMA传输的ADC采样数据总是上一次的数据,具体情况如下

[复制链接]
1697|17
 楼主| jcky001 发表于 2023-7-3 09:52 | 显示全部楼层 |阅读模式

//数据采集回调函数 void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc) { if(adc_ReadOk == 0x55) { HAL_ADC_Stop(&hadc1); HAL_ADCEx_InjectedStop_IT(&hadc1);

HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&ADC[0],701);
sys_WaitTime = 0;
adc_ReadOk = 0xaa;//数据采集完毕HAL_ADC_Start(&hadc1);

HAL_ADC_Start(&hadc1);
HAL_ADCEx_InjectedStart_IT(&hadc1);
} }

前置代码为:HAL_ADC_Start(&hadc1);和HAL_ADCEx_InjectedStart_IT(&hadc1);

问题是这样的,我通过模拟看门狗检测电压变化,当超限时将DMA把ADC采样到的数据传输出去,但是经过debug调试和示波器的观察,我可以明显的看出ADC[]数组里面的值是上一次电压变化的值。

而开机后,第一次触发看门狗进行DMA传输到ADC[]的值都为0.
两只袜子 发表于 2023-7-4 09:00 | 显示全部楼层
首先确定DMA 搬运 ADC的值是否正常?
cr315 发表于 2023-7-5 09:00 | 显示全部楼层
目前DMA传输结果正常吗?
AloneKaven 发表于 2023-7-5 21:08 | 显示全部楼层
DMA是不有问题啊?
失物招領 发表于 2023-7-8 21:40 | 显示全部楼层
那你把初始化的顺序调换一下试试呢?
她已醉 发表于 2023-7-8 23:12 | 显示全部楼层
这种问题我还没遇到过,一般DMA不都算实时的了吗

将爱藏于深海 发表于 2023-7-9 01:23 | 显示全部楼层
你这搬运的不太对劲啊,是不是逻辑没设计对

故意相遇 发表于 2023-7-9 03:24 | 显示全部楼层
我记得用HAL配置的时候,会出现问题,出现顺序不对,采集数据不对的问题

风凉 发表于 2023-7-9 07:27 | 显示全部楼层
你还是找个FAE咨询一下吧,他们估计遇到的这个问题比较常见

未说出口的像你 发表于 2023-7-9 09:05 | 显示全部楼层
按理不都是你ADC采集之后,触发DMA搬运吗?

我吃小朋友 发表于 2023-7-9 11:52 | 显示全部楼层
你是不是需要先ADC开始,再DMA开始啊

月亮一键变蓝 发表于 2023-7-9 14:31 | 显示全部楼层
我觉得你最好是ADC采集完成之后,再触发DMA比较好吧
春日负喧 发表于 2023-7-9 16:17 | 显示全部楼层
看逻辑没啥问题啊,你再仿真看看程序逻辑吧,看看执行顺序
西洲 发表于 2023-7-9 20:18 | 显示全部楼层
你这传输的上一次数据可不太行啊
MessageRing 发表于 2023-7-9 23:17 | 显示全部楼层
这逻辑是不是反了啊
Clyde011 发表于 2024-1-16 15:08 | 显示全部楼层
Uriah 发表于 2024-1-16 18:07 | 显示全部楼层

单片机一般都有内部程序区和数据区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1650

主题

5706

帖子

6

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