咚了个咚 发表于 2025-2-28 23:03

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

使用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

仿真时可能存在优化问题,关闭编译器优化,变量在调试时可见。
页: [1]
查看完整版本: ADC3模数转换数据不变,断电改变