打印
[STM32F1]

使用DMA读取多个ADC通道工作不正常

[复制链接]
334|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cutfall|  楼主 | 2025-6-25 22:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, DM, DMA, dc
本帖最后由 cutfall 于 2025-6-25 22:55 编辑

正在尝试使用DMA方法读取多个ADC通道。我无法解读数值。
还测试了DMA和轮询方法,但没有工作。
uint32_t value[2]; HAL_ADC_Start_DMA(&hadc1, value, 2); // start adc in DMA mode
//polling method
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
value[0]= HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1); HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
value[1]= HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1);
用的是DMA通道1的ADC 1。,不知道哪里配置不对


使用特权

评论回复
沙发
1988020566| | 2025-7-2 11:10 | 只看该作者
在CubeMX生成的代码中,MX_DMA_Init()应该在MX_ADC1_Init()之前调用。

使用特权

评论回复
板凳
sanfuzi| | 2025-7-2 13:01 | 只看该作者
DMA仅读取第一个通道数据,后续通道值不更新。

使用特权

评论回复
地板
wilhelmina2| | 2025-7-4 20:15 | 只看该作者
先启动DMA再启动ADC转换              

使用特权

评论回复
5
plsbackup| | 2025-7-4 20:34 | 只看该作者
DMA请求可能在ADC转换完成之前就被触发,或者DMA传输在ADC转换开始之前就开始。

使用特权

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

本版积分规则

25

主题

25

帖子

0

粉丝