[牛人杂谈] 如何读取N76E003 的Band-gap电压实际值?

[复制链接]
2315|7
 楼主| 643757107 发表于 2018-3-22 21:24 | 显示全部楼层 |阅读模式
本帖最后由 643757107 于 2018-3-22 21:25 编辑

N76E003的ADC可以选择内部Band-gap电压作为输入脚,能用来反推ADC的参考电压,得到更精准的ADC结果。

常温下,所有N76E003的Band-gap电压值会校准在1.17V ~ 1.27 V内。如果想要知道每颗N76E003的Band-gap实际电压值,可以通过读取UID地址后的2个bytes值来确认。

  • UID 后的2个bytes储存Band-gap的实际值,总共12个有效bit。
  • 第一个byte是高8位,第二个byte的低4位为12 bit的低4位。
  • 读取和计算步骤:
    • 用读取UID的方式,以IAP 读取Band-gap的值为例
    • 合并高8位和低4位
    • 使用下列公式换算成实际的电压值:

      公式:
      00.png




  • 计算范例:
    读取UID地址后的2个bytes值,第一个byte值为 0x64,第二个byte值为0x0E,合并为0x64E = 1614,换算电压值结果为:
01.png

 楼主| 643757107 发表于 2018-3-22 21:26 | 显示全部楼层
例程序:
  1. void READ_BANDGAP()

  2. {

  3. UINT8 BandgapHigh,BandgapLow;

  4. set_IAPEN;

  5. IAPAL = 0x0C;

  6.     IAPAH = 0x00;

  7.     IAPCN = READ_UID;

  8.     set_IAPGO;

  9. BandgapHigh = IAPFD;

  10. IAPAL = 0x0d;

  11.     IAPAH = 0x00;

  12.     IAPCN = READ_UID;

  13.     set_IAPGO;

  14. BandgapLow = IAPFD;

  15. BandgapLow = BandgapLow&0x0F;

  16. clr_IAPEN;

  17. Bandgap_Value = (BandgapHigh<<4)+BandgapLow;

  18. Bandgap_Voltage = 3072/(0x1000/Bandgap_Value);

  19. }
734774645 发表于 2018-3-23 12:55 | 显示全部楼层
可以作为ADC的一个通道读取出来。
玛尼玛尼哄 发表于 2018-3-23 16:58 | 显示全部楼层
那就是这个说,跟手册里的有轻微的不一样了
zhuomuniao110 发表于 2018-3-24 09:30 | 显示全部楼层
原来还可以读出来啊。
星星点灯69 发表于 2018-3-24 15:11 | 显示全部楼层
学习了
zhuotuzi 发表于 2018-3-25 16:07 | 显示全部楼层
牛X,一个函数搞定了,不需要什么初始化。。
dongliushui 发表于 2018-3-25 16:41 | 显示全部楼层
就是说这个跟标称还有一点不一样了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

223

主题

3955

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部