FSL_TICS_ZJJ 发表于 2014-2-19 10:42:23

【经验分享】使用kinetis芯片自测VDD电压

本帖最后由 FSL_TICS_Robin 于 2014-7-18 13:50 编辑

使用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).所以,这种方法适合初略测试。

如果大家还有其他好的方法,欢迎一起交流!
**** Hidden Message *****




PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营的飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。

FSL_TICS_ZJJ 发表于 2014-2-19 10:50:56

欢迎大家提出自己的好方法!

xinyinxing 发表于 2014-2-19 10:57:34

感谢楼主的经验分享!
看看代码。

ccje 发表于 2014-2-19 19:20:12

感谢楼主的经验分享!

laber_1912 发表于 2014-7-28 14:57:09

下载,学习下

swap2013 发表于 2014-7-29 13:49:38

省了取样电阻

swap2013 发表于 2014-7-29 13:52:39

如果是内部的bandgap电压引起的误差,
同一颗料,bandgap电压是相对稳定的吗?
如果是,可以做个校准,校准参数存好,电源电压就准了

FSL_TICS_Robin 发表于 2014-7-29 14:43:58

swap2013 发表于 2014-7-29 13:52
如果是内部的bandgap电压引起的误差,
同一颗料,bandgap电压是相对稳定的吗?
如果是,可以做个校准,校准 ...

从KL25的数据手册KL25P80M48SF0上看bandgap电压有范围最小0.97典型1.00最大1.03

fengyunyu 发表于 2014-8-3 21:51:16

思路很巧妙。

浪里白条 发表于 2014-8-4 08:20:51

还好有Vbg 来实现

lzl000 发表于 2014-8-6 10:48:09

飞思卡尔在pmu上很行啊

rockyyangyang 发表于 2014-9-5 14:22:02

回复看一下!      
页: [1]
查看完整版本: 【经验分享】使用kinetis芯片自测VDD电压