[STM32H7] ADC3模数转换数据不变,断电改变

[复制链接]
3474|12
 楼主| 咚了个咚 发表于 2025-2-28 23:03 | 显示全部楼层 |阅读模式
使用STM32Cube IDE,stm32h7中的ADC3_DMA采集信号。程序仿真时,ADC值没有变化。将PC2连接到VDD,则得到ADCConvertedValue=4089保持不变,断点重新上电,然后变为4092。不断点的情况下接地,数值不变,仍然4092。断点重新上电,则ADCConvertedValue=0。在仿真中每次只出现一个数值然后不变。

公羊子丹 发表于 2025-3-3 07:47 | 显示全部楼层
你的 ADC3 是在哪种模式下运行的?如果是单次转换模式,可能 ADC 只转换了一次,导致数值不变,可以试试连续转换模式。
周半梅 发表于 2025-3-3 07:49 | 显示全部楼层
你用的是 DMA 还是普通查询模式?如果是 DMA,确保 HAL_ADC_Start_DMA() 已正确调用,并且 ADC 配置为循环模式。
帛灿灿 发表于 2025-3-3 07:50 | 显示全部楼层
你的 PC2 引脚配置正确吗?确认它是 Analog 模式,而不是 Input 或 Output,否则可能影响 ADC 采样。
童雨竹 发表于 2025-3-3 07:52 | 显示全部楼层
试试看手动触发 ADC 读取,比如调用 HAL_ADC_PollForConversion(),看看数值是否会更新。
万图 发表于 2025-3-3 07:53 | 显示全部楼层
你有没有检查 ADC3->DR 寄存器?如果 DR 里面的值一直不变,可能是 ADC 没有正确启动或 DMA 传输异常。
Wordsworth 发表于 2025-3-3 07:54 | 显示全部楼层
试着在循环里打印 ADC 采样值,并在采样前加 HAL_Delay(10),看看采样值是否仍然保持不变。
Bblythe 发表于 2025-3-3 07:56 | 显示全部楼层
你的 Clock Prescaler 设对了吗?H7 的 ADC 需要适当降低时钟分频,否则可能会导致采样异常。
Pulitzer 发表于 2025-3-3 07:57 | 显示全部楼层
你有没有初始化 VREF+ ?如果 VREF 配置不正确,ADC 可能会测量到异常值,检查 HAL_SYSCFG_AnalogSwitchConfig() 配置。
Uriah 发表于 2025-3-3 07:59 | 显示全部楼层
试试看在 CubeMX 里开启 ADC 内部温度传感器或 VREFINT,读取这些内部基准电压,看是否正常变化。
Clyde011 发表于 2025-3-3 08:00 | 显示全部楼层
你可以试试直接用 HAL_ADC_GetValue() 读取 ADC3 数据,而不依赖 DMA,看看是否是 DMA 传输问题导致的数值不变。
jcky001 发表于 2025-3-18 11:06 | 显示全部楼层
可能是配置错误、时钟未正确启用
elephant00 发表于 2025-3-18 11:07 | 显示全部楼层
检查ADC和DMA的配置是否正确,尤其是通道、时钟源、采样时间等。
两只袜子 发表于 2025-3-18 17:03 | 显示全部楼层
检查DMA的传输方向和数据宽度是否匹配ADC的输出。
cr315 发表于 2025-3-18 19:00 | 显示全部楼层
DMA或ADC初始化问题。
laocuo1142 发表于 2025-3-18 19:30 | 显示全部楼层
仿真环境下,可能需要手动触发ADC转换。
flycamelaaa 发表于 2025-3-18 20:13 | 显示全部楼层
仿真器的设置是否支持实时外设仿真。
powerantone 发表于 2025-3-18 21:20 | 显示全部楼层
查看代码中的ADC校准步骤是否被正确执行,因为STM32H7的ADC需要校准才能达到准确值。
stormwind123 发表于 2025-3-18 22:00 | 显示全部楼层
检查DMA缓冲区是否被正确初始化,是否有数据覆盖或未处理的情况。
probedog 发表于 2025-3-18 22:30 | 显示全部楼层
仿真时可能存在优化问题,关闭编译器优化,变量在调试时可见。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

82

帖子

0

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