[技术问答] 请教N76e003的ADC的Bandgap例程中的问题?

[复制链接]
1162|6
 楼主| mail_cj 发表于 2020-12-15 09:36 | 显示全部楼层 |阅读模式
现在正在学习ADC编程,阅读了“N76E003之ADC带隙电压(Band-gap)”网友介绍的这篇大作,其中读取UID后面的保存芯片中的BANDGAP值的内容不是太理解,请大家帮忙看一下:
                set_IAPEN;
                IAPCN = READ_UID;
                IAPAL = 0x0d;
                IAPAH = 0x00;
                set_IAPGO;
                BandgapLow = IAPFD;
                BandgapMark = BandgapLow&0xF0;
                       
                if (BandgapMark==0x80)
                {
                                BandgapLow = BandgapLow&0x0F;
                                IAPAL = 0x0C;
                                IAPAH = 0x00;
                                set_IAPGO;
                                BandgapHigh = IAPFD;
                                Bandgap_Value = (BandgapHigh<<4)+BandgapLow;
                                Bandgap_Voltage_Temp = Bandgap_Value*3/4;
                                Bandgap_Voltage = Bandgap_Voltage_Temp - 33;                        //the actually banggap voltage value is similar this value.
                }
                if (BandgapMark==0x00)
                {
                                BandgapLow = BandgapLow&0x0F;
                                IAPAL = 0x0C;
                                IAPAH = 0x00;
                                set_IAPGO;
                                BandgapHigh = IAPFD;
                                Bandgap_Value = (BandgapHigh<<4)+BandgapLow;
                                Bandgap_Voltage= Bandgap_Value*3/4;
                }
                if (BandgapMark==0x90)
                {
                                IAPAL = 0x0E;
                                IAPAH = 0x00;
                                set_IAPGO;
                                BandgapHigh = IAPFD;
                                IAPAL = 0x0F;
                                IAPAH = 0x00;
                                set_IAPGO;
                                BandgapLow = IAPFD;
                                BandgapLow = BandgapLow&0x0F;
                                Bandgap_Value = (BandgapHigh<<4)+BandgapLow;
                                Bandgap_Voltage= Bandgap_Value*3/4;
                }
                clr_IAPEN;

请问上面为什么要分为三种情况处理,分别是:
              if (BandgapMark==0x80)...
              if (BandgapMark==0x00)...
              if (BandgapMark==0x90)...
???????
xiaoxiong1988 发表于 2020-12-15 17:25 | 显示全部楼层
可能有三个版本,每个版本的计算方式不一样,在这里区分开就好,具体还需要问原厂.
xiaoqizi 发表于 2021-1-9 12:28 | 显示全部楼层
这个值有什么作用啊
木木guainv 发表于 2021-1-9 12:30 | 显示全部楼层
如何读取不同的版本呢
磨砂 发表于 2021-1-9 12:34 | 显示全部楼层
哪种计算方式更好呢
晓伍 发表于 2021-1-9 12:38 | 显示全部楼层
这三种方式的特点是什么呢
八层楼 发表于 2021-1-9 12:43 | 显示全部楼层
这三种方式都有相对应的适用范围吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

47

帖子

0

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