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

[复制链接]
 楼主| 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转换              
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 | 显示全部楼层
避免因采样时间不足导致数据错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

41

帖子

0

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