[STM32G4] STM32G431 ADC 无法校准且无法正常工作

[复制链接]
 楼主| Treasure101 发表于 2025-4-26 11:00 | 显示全部楼层 |阅读模式
使用 STM32G431KB 连续转换模式的单通道 ADC。程序卡在进行校准的 while 循环中。还注意到ADC12_Common寄存器没用0b0001的值、即 clock 二分频。我从 PLLP 分频器分出42.5MHz 给ADC提供时钟。

void Initialization(void){        RCC->AHB2ENR |= RCC_AHB2ENR_GPIOBEN | RCC_AHB2ENR_ADC12EN;         GPIOB->MODER |= GPIO_MODER_MODER0; //Set PB0 as Analog         ADC12_COMMON->CCR |= (0b0001 << ADC_CCR_PRESC_Pos); //ADC Clock divided by 2        ADC1->CR &= ~(ADC_CR_DEEPPWD); //Disable ADC Deep-Power-Down mode        ADC1->CR |= ADC_CR_ADVREGEN; //Enable ADC Voltage Regulator        DummyDelay(5000);        ADC1->CR &= ~(ADC_CR_ADEN); //Disable ADC        ADC1->CR &= ~(ADC_CR_ADCALDIF); //Single Ended Mode Calibration        ADC1->CR |= ADC_CR_ADCAL; //Start Calibration        while(ADC1->CR & ADC_CR_ADCAL); //Wait Until Calibration Complete           ADC1->CFGR |= ADC_CFGR_CONT; //ADC continuous mode        ADC1->CFGR &= ~(ADC_CFGR_RES); //12-bit ADC        ADC1->SQR1 |= (1 << ADC_SQR1_L_Pos) | (15 << ADC_SQR1_SQ1_Pos); // Only 1 conversion for ADC channel 15         ADC1->CR |= ADC_CR_ADEN; //Enable ADC        while(!(ADC1->ISR & ADC_ISR_ADRDY)); //Wait Until ADC Enables  }
两只袜子 发表于 2025-4-27 13:30 | 显示全部楼层
可能是硬件连接问题,
elephant00 发表于 2025-4-27 13:32 | 显示全部楼层
寄存器未正确设置?
jcky001 发表于 2025-4-27 14:26 | 显示全部楼层
ADC时钟分频设置不当可能导致ADC无法正常工作。
cr315 发表于 2025-4-27 19:23 | 显示全部楼层
系统主频与ADC时钟不匹配?
laocuo1142 发表于 2025-4-27 20:09 | 显示全部楼层
ADC初始化顺序错误可能导致ADC无法正常工作。
classroom 发表于 2025-4-27 21:23 | 显示全部楼层
检查初始化顺序、采样时间设置、通道配置等,确保逻辑正确。
flycamelaaa 发表于 2025-4-27 22:00 | 显示全部楼层
采样时间可能设置的过短。
powerantone 发表于 2025-4-27 22:00 | 显示全部楼层
电源不稳定或噪声过大可能导致ADC无法正常工作。
probedog 发表于 2025-4-27 22:23 | 显示全部楼层
检查硬件连接。
stormwind123 发表于 2025-4-28 23:00 | 显示全部楼层
复位信号异常可能导致ADC初始化失败。检查复位信号是否正确,并在复位后重新初始化ADC。
shuyinhengxie 发表于 2025-8-4 14:12 | 显示全部楼层
解决了吗,我也遇到同样问题了是stmg474
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

45

帖子

1

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