打印
[技术问答]

请教N76e003的ADC的Bandgap例程中的问题?

[复制链接]
817|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 | 只看该作者
如何读取不同的版本呢

使用特权

评论回复
5
磨砂| | 2021-1-9 12:34 | 只看该作者
哪种计算方式更好呢

使用特权

评论回复
6
晓伍| | 2021-1-9 12:38 | 只看该作者
这三种方式的特点是什么呢

使用特权

评论回复
7
八层楼| | 2021-1-9 12:43 | 只看该作者
这三种方式都有相对应的适用范围吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

47

帖子

0

粉丝