本帖最后由 FSL_TICS_A 于 2014-3-25 17:13 编辑
使用kinetis芯片自测VDD电压 本文以KL25为例,其他型号类似,讲解如何使用芯片内部的bandgap以及ADC相结合,实现对芯片VDD电压的检测,这样可以跟踪实际VDD的电压,防止芯片电压过低。尤其适用于电源使用的是电池的情况。 硬件平台: FRDM-KL25 代码平台:官方的LQRUG_bme_ex2 原理及思想: 当VDDA和VREFH连接在一起的时候,使用内部的bandgap 电压,这个电压为1V,作为ADC的输入,然后倒推实际的VDDA电压,这里配置转换模式为16位单端模式,倒推VDDA的公式为: VDDA=(Vbg*65535)/Conversion result (1) 其中:VDDA就是实际芯片的电压 Vbg:bandgap电压为1V Conversion result:以1Vbandgap为输入时,对应得到的AD转换结果。 实际代码配置: 本实验是在官方的LQRUG_bme_ex2的基础上加以修改,主要修改点有三点: 1,选择BANDGAP 为ADC的输入,则将ADC0_CHANB配置为0X1B.具体选择参考RM中的下图:
2:配置ADC的转换模式为单端16位模式 ADC0_CFG1 |= ADC_CFG1_MODE(3); 3:打开bandgap模块。 PMC_REGSC |= 0X01; //OPEN BANDGAP 经过以上3点配置,然后根据公式(1)的计算方法就可以实现电压的采集了。 代码请查看附件,或者自行根据官方例程修改。 实际测试结果为: 万用表测试:VDDA=2.92 软件测试结果如下:
和实际稍微有些偏差,原因是内部的bandgap电压范围为(0.97V 到1.03V).所以,这种方法适合初略测试。 如果大家还有其他好的方法,欢迎一起交流!
|