[资料] 【经验交流】使用kinetis芯片自测VDD电压
452 查看
0 回复
 楼主 | 发布于 2020-10-09 | 只看楼主
分享到:
本文以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
软件测试结果如下:
ADC conversion for potentiometer started, press any key to stop ADC conversion

  R0A=   22534
  Vdd=    2908
  R0A=   22523
  Vdd=    2909
  R0A=   22533
  Vdd=    2908
  R0A=   22526
  Vdd=    2909
  R0A=   22516
  Vdd=    2910
  R0A=   22531
  Vdd=    2908
  R0A=   22528
  Vdd=    2909
  R0A=   22535
  Vdd=    2908
  R0A=   22517
和实际稍微有些偏差,原因是内部的bandgap电压范围为(0.97V 到1.03V).所以,这种方法适合初略测试。
 
如果大家还有其他好的方法,欢迎一起交流!

本帖有更多资源,需 登录 才可以下载,没有帐号?立即 注册

(0 ) (0 )
回复 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部