求助帖:32G8K64芯片,初始化后直接读取ADC值为4096
代码截图:void ADC_GPIO_Init(void)
{
P1_MODE_IN_HIZ(GPIO_P1); //P11 Touch_ADC置位高阻态,ADC1
P0_MODE_IN_HIZ(GPIO_P3); //P02 GND_ADC置位高阻态,ADC11
P5_MODE_IN_HIZ(GPIO_P4);
// P11 = 0;
}
//========================================================================
void ADC_config(void) //ADC初始化
{
ADC_InitTypeDef ADC_InitStructure; //结构定义
ADC_InitStructure.ADC_SMPduty = 15; //ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
ADC_InitStructure.ADC_CsSetup = 0; //ADC 通道选择时间控制 0(默认),1
ADC_InitStructure.ADC_CsHold = 1; //ADC 通道选择保持时间控制 0,1(默认),2,3
ADC_InitStructure.ADC_Speed = ADC_SPEED_2X16T; //设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
ADC_InitStructure.ADC_AdjResult = ADC_RIGHT_JUSTIFIED; //ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
ADC_Inilize(&ADC_InitStructure); //初始化
ADC_PowerControl(ENABLE); //ADC电源开关, ENABLE或DISABLE
// NVIC_ADC_Init(DISABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
}
使用官方ADC库函数进行初始化,直接读取P54端口(ADC2),该端口悬空。读取的值为4096
各位大佬,是哪个地方弄错了?
这是4095,不是4096
4095是12位ADC的最大值
可能是IO模式不是高阻并且输出了高电平导致的,或外部连接了VCC
打开ADC电源后,要等待1ms以上的ADC电源稳定时间 基准电压接了吗?
万用表测量基准电压、输入电压分别多少V? 梁工 发表于 2025-2-22 10:41
基准电压接了吗?
万用表测量基准电压、输入电压分别多少V?
我知道出问题的地方了,在做GPIO初始化的时候把GPIO_Pin_1写成了,GPIO_P1直接在初始化的时候就弄错了,谢谢~ DebugLab 发表于 2025-2-21 01:51
这是4095,不是4096
4095是12位ADC的最大值
可能是IO模式不是高阻并且输出了高电平导致的,或外部连接了VCC ...
多谢指正,我是在IO初始化的时候粗心写错了,将 GPIO_Pin_1写为GPIO_P1,检查的时候不容易发现 我也碰到了跟你一样的问题,不管量什么电压,ADC读取的值要么0,要么就是10位的最大值1024
你解决了吗?
页:
[1]