[技术问答] 学习N76E003时候有个疑问,什么是能带隙

[复制链接]
2374|12
 楼主| huahuagg 发表于 2017-11-14 18:15 | 显示全部楼层 |阅读模式
BSP里有个例子
IAP_Read_Bandgap\Code
查了一下,那个单子叫能带隙,不知道什么意思。
 楼主| huahuagg 发表于 2017-11-14 18:15 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 Read actual bandgap value by IAP command
  14. //***********************************************************************************************************
  15. #include "N76E003.h"
  16. #include "Common.h"
  17. #include "Delay.h"
  18. #include "SFR_Macro.h"
  19. #include "Function_define.h"

  20. double  Bandgap_Value,Bandgap_Voltage;                        //please always use "double" mode for this
  21. UINT8 BandgapHigh,BandgapLow;
  22.                
  23. void READ_BANDGAP()
  24. {

  25.                 set_IAPEN;
  26.                 IAPAL = 0x0C;
  27.     IAPAH = 0x00;
  28.     IAPCN = READ_UID;
  29.     set_IAPGO;
  30.                 BandgapHigh = IAPFD;
  31.                 IAPAL = 0x0d;
  32.     IAPAH = 0x00;
  33.     IAPCN = READ_UID;
  34.     set_IAPGO;
  35.                 BandgapLow = IAPFD;
  36.                 BandgapLow = BandgapLow&0x0F;
  37.                 clr_IAPEN;
  38.                 Bandgap_Value = (BandgapHigh<<4)+BandgapLow;
  39.                 Bandgap_Voltage = 3072/(0x0fff/Bandgap_Value);
  40. }

  41. void main(void)
  42. {
  43.         InitialUART0_Timer3(115200);
  44.         READ_BANDGAP();
  45.         printf ("\n Bandgap voltage = %e", Bandgap_Voltage);
  46.         printf ("\n Bandgap SFR  = 0x%bx", BandgapHigh);
  47.         printf ("\n Bandgap SFR  = 0x%bx", BandgapLow);
  48.         while(1);
  49. }
捉虫天师 发表于 2017-11-14 19:06 | 显示全部楼层
N76E003内嵌12位逐次逼近寄存器型(SAR)的模拟数字转换器(ADC)。模数转换模块负责将管脚上的模
拟信号转换为12位二进制数据。N76E003支持8信道单端输入模式。内部带隙电压(band-gap voltage)为
1.22V,同时也可用作内部ADC输入端。所有模拟电路复用同一组采样电路和同一组采样保持电容。该
组采样保持电容为转换电路的输入端。然后转换器通过逐次逼近的方式得到有效结果并存放在ADC结果
寄存器中。
捉虫天师 发表于 2017-11-14 19:07 | 显示全部楼层
对于N76E003,为了得到更准确的内部带隙电压(band-gap)输入ADC转换值,建议在读取时,放弃模块使
能后的头三笔资料。而后,只要不关闭ADC模块,ADC转换结果都是如规格所列。提醒:程序中如果关
闭了ADC模块,请记得下次打开时,需要再次丢弃3笔。
捉虫天师 发表于 2017-11-14 19:07 | 显示全部楼层
明白了吧,手册上有的。
捉虫天师 发表于 2017-11-14 20:43 | 显示全部楼层
一个参考电压的值。
21mengnan 发表于 2017-11-14 21:03 | 显示全部楼层
在中文手册里面有这个内容,是在ADC那个地方,应该是一路输入,好比是个参考,1.22V吧。好像是这个。
稳稳の幸福 发表于 2017-11-15 16:58 | 显示全部楼层
ADC的一个参考输入
稳稳の幸福 发表于 2017-11-15 16:58 | 显示全部楼层
看手册,一个单独的通道。
dongnanxibei 发表于 2017-11-15 20:35 | 显示全部楼层
认真看手册啊,不要单纯的看例子,配合看
zhuotuzi 发表于 2017-11-16 15:54 | 显示全部楼层
相信楼主已经弄明白了,已经会用这个通道了。
 楼主| huahuagg 发表于 2017-11-21 20:53 | 显示全部楼层
最近研读了手册,发现,还是要基础打牢啊,要不然好多都无法理解。
whtwhtw 发表于 2019-4-16 17:16 | 显示全部楼层
带隙其实是为系统提供一个电压参考,类似于高精度Vref。读取UID中的带隙电压矫正值,然后ADC读取带隙电压,利用这2个数可以算出电源精确电压和其它ADC通道的精确电压
您需要登录后才可以回帖 登录 | 注册

本版积分规则

159

主题

1430

帖子

2

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