最近做一个项目,STM32F407 ADC采样。STM32F407电源电压和参考电压是都是2.5V(两个独立电源),因为设计需要(换挡采样,测试小量程,调大增益),采样电压可能会超出2.5V。STM32F407 ADC口无法实现钳位。比如测量小于2.5V电压信号,ADC值正常,测量等于2.5或稍微大于2.5V信号,输出的值是0xFFFF,满量程,正常。但是当测试离2.5V较大时(比如4.2V),输出的是小于0XFFFF(比如可能是0X1455什么的),好像输入信号越大,ADC值越小(没有具体观察过) 下图是官方文档中ADC接口的图纸: 应该是有钳位电路,为啥不管用。我这边手头有同样电路,仅仅MCU不一样,是STM32F103的,电压可以牵制在3.4V左右,当输入ADC电压是4.1左右,ADC采样值是0xFFFF,正常, 比较奇怪是为啥STM32F103可以实现钳位,而STM32F407不行。哪位大神帮忙解惑下,谢谢! 我的ADC电路如下: 是一个有源滤波电路,AIN3_SENSOR接运放,AIN3接MCU的ADC口。比如STM32F407的板子的AIN3和AIN3_SENSOR,总是保持一致,比如信号是4V,前后一样。 而STM32F103的板子的前端是4V,后端(AIN3)就是3.4V顺利钳位。 |
你可以用万用表量一下ADC引脚对VDD的二极管。
如果你输入高压建议IO口串电阻,并且使用外部大功率的钳位二极管。
有道理,超过电源电压会有机会烧毁引脚的。同时超过模拟电压源会引起注入电流干扰ADC工作,所以得到的转换值也不会准确的