hi各位好,
我最近正在用一款量产的成品PCB板做项目,芯片型号是STM32F429BIT6。其中PA1管脚被用作ADC1 IN1,用于接入传感器(PCB已经量产,而且线束已经做好,所以一般来说没法改了,而且估计已经在使用了)。
但是我发现一个奇怪的现象,配置完ADC以后,这个管脚的读数一开始就是4092这样的数值。但也不是说ADC不好用,因为这个数字是变化的,有时候是4089,有时候是4091,会变化的。用这个管脚量什么都是4092,但是如果接GND数值是正确的,差不多只有个位数。
我排查了一圈发现了问题,但是我不知道是什么导致的。用万用表量了一下这个管脚,它自身是带3.3v正电的,即使代码中它被配为 GPIO_MODE_ANALOG 也是如此,修改 GPIO_InitStruct.Pull 为上拉或者下拉都不管用。
一开始我以为是我代码配置的问题,因为我是基于别人的代码修改的,但是我用CubeMX新建一个空白工程再配置PA1这个管脚,只读出ADC值不添加额外的代码,还是同样的问题,HAL库和LL库都是如此,管脚始终带正电。
由于怀疑的硬件电路问题,我又换了一块PCB板子,型号是F429VET6,这块板子是网上买的,什么都没接的那种。也用CubeMX新建工程,如法**制,也是一样的问题。当我全片擦除后再去测量,根据数据手册,GPIO应该默认是浮空状态,但是PA1管脚依然带3.3V电压!
请问这是为什么?应该怎么解决? |