打印
[其他ST产品]

DMA传输的ADC采样数据总是上一次的数据,具体情况如下

[复制链接]
1022|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

//数据采集回调函数 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是不有问题啊?

使用特权

评论回复
5
失物招領| | 2023-7-8 21:40 | 只看该作者
那你把初始化的顺序调换一下试试呢?

使用特权

评论回复
6
她已醉| | 2023-7-8 23:12 | 只看该作者
这种问题我还没遇到过,一般DMA不都算实时的了吗

使用特权

评论回复
7
将爱藏于深海| | 2023-7-9 01:23 | 只看该作者
你这搬运的不太对劲啊,是不是逻辑没设计对

使用特权

评论回复
8
故意相遇| | 2023-7-9 03:24 | 只看该作者
我记得用HAL配置的时候,会出现问题,出现顺序不对,采集数据不对的问题

使用特权

评论回复
9
风凉| | 2023-7-9 07:27 | 只看该作者
你还是找个FAE咨询一下吧,他们估计遇到的这个问题比较常见

使用特权

评论回复
10
按理不都是你ADC采集之后,触发DMA搬运吗?

使用特权

评论回复
11
我吃小朋友| | 2023-7-9 11:52 | 只看该作者
你是不是需要先ADC开始,再DMA开始啊

使用特权

评论回复
12
月亮一键变蓝| | 2023-7-9 14:31 | 只看该作者
我觉得你最好是ADC采集完成之后,再触发DMA比较好吧

使用特权

评论回复
13
春日负喧| | 2023-7-9 16:17 | 只看该作者
看逻辑没啥问题啊,你再仿真看看程序逻辑吧,看看执行顺序

使用特权

评论回复
14
西洲| | 2023-7-9 20:18 | 只看该作者
你这传输的上一次数据可不太行啊

使用特权

评论回复
15
MessageRing| | 2023-7-9 23:17 | 只看该作者
这逻辑是不是反了啊

使用特权

评论回复
16
Clyde011| | 2024-1-16 15:08 | 只看该作者

使用特权

评论回复
17
Uriah| | 2024-1-16 18:07 | 只看该作者

单片机一般都有内部程序区和数据区

使用特权

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

本版积分规则

1519

主题

4601

帖子

6

粉丝