cutfall 发表于 2025-6-25 22:54

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

本帖最后由 cutfall 于 2025-6-25 22:55 编辑

正在尝试使用DMA方法读取多个ADC通道。我无法解读数值。
还测试了DMA和轮询方法,但没有工作。uint32_t value; 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= HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1); HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
value= 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转换            

plsbackup 发表于 2025-7-4 20:34

DMA请求可能在ADC转换完成之前就被触发,或者DMA传输在ADC转换开始之前就开始。

updownq 发表于 2025-7-5 20:11

检查ADC的时钟配置。ADC的工作频率

beacherblack 发表于 2025-7-5 22:55

利用串口打印或其他方式输出关键变量值

fengm 发表于 2025-7-6 10:51

循环模式下,缓冲区长度需大于等于DMA一次性传输的数据量。

kkzz 发表于 2025-7-6 14:28

使用扫描模式(ADC_ScanConvMode_Enable)来读取多个通道。

wangdezhi 发表于 2025-7-6 16:02

在多通道模式下,需要配置每个通道的采样时间和转换顺序。

kmzuaz 发表于 2025-7-7 14:20

ADC的多通道扫描模式可能没有正确配置,或者ADC的规则组和注入组设置不正确。

probedog 发表于 2025-7-7 16:24

ADC扫描模式没启用?

flycamelaaa 发表于 2025-7-7 18:27

估计是DMA配置错误吧。

powerantone 发表于 2025-7-7 18:28

检查DMA数据方向、内存增量模式或数据宽度配置是否有误。

stormwind123 发表于 2025-7-7 19:48

可能是通道顺序与规则组配置不匹配。

classroom 发表于 2025-7-7 20:30

更新HAL库版本到最新版本。

jcky001 发表于 2025-7-7 20:31

检查时钟配置还有通道顺序。

jackcat 发表于 2025-7-10 10:26

临时禁用多通道扫描,仅测试单个通道

wangdezhi 发表于 2025-7-10 12:07

DMA通道或ADC通道可能与其他外设存在资源冲突。

sheflynn 发表于 2025-7-10 13:35

避免因采样时间不足导致数据错误。
页: [1] 2
查看完整版本: 使用DMA读取多个ADC通道工作不正常