[技术问答] N76E003_BSP_Keil_C51_V1.0.6文件夹中ADC_Bandgap例程

[复制链接]
428|14
 楼主 | 2018-9-12 18:57 | 显示全部楼层 |阅读模式
本帖最后由 一度芳如华 于 2018-9-12 19:21 编辑

N76E003_BSP_Keil_C51_V1.0.6文件夹中ADC_Bandgap例程中

  语句” P12_Quasi_Mode; “,是什么意思,或者说它的作用是什么?

  在串口打印输出Bandgap的高低位采样之后,语句” clr_GPIO1; “、” set_GPIO1; “又分别是是什么意思?
(PS:#define   clr_GPIO1  P12=0、#define   set_GPIO1  P12=1),内部带隙电压(bang-gap)与P1.2引脚又有什么联系?

  根据其数据手册来看,在选择ADC通道AIN0~AIN7时,需要将所选对应通道的引脚配置为”输入高阻模式“,;

  对比在选择ADC INternal bandgap通道时,那么是不是可以理解为在采样内部带隙电压(band-gap)时,需要把P1.2引脚配置为”准模式“。

  上面是我针对数据手册”12-位模数转换-(ADC)“章节中所讲,使用ADC完成采样所需要配置过程时,个人理解为在选择AIN0~AIN7通道和Internal Band-gap通道进行对比时所表现出来的差异地方。

附例程源代码:
void main (void)
{
  P12_Quasi_Mode;               //For GPIO1 output, Find in "Function_define.h" - "GPIO INIT"
  InitialUART0_Timer1(115200);
  Enable_ADC_BandGap;             //Find in "Function_define.h" - "ADC INIT"
  while(1)
    {
   clr_ADCF;
   set_ADCS;                 // Each time ADC start trig signal
      while(ADCF == 0);
   printf ("\n Value = 0x%bx",ADCRH);
   printf ("\n Value = 0x%bx",ADCRL);
   clr_GPIO1;
//   Timer0_Delay1ms(100);
   set_GPIO1;
    }
}
| 2018-9-12 21:04 | 显示全部楼层
后面那个GPIO1,作用闪灯,前面是定义模式为双向。可能是写错了吧。
| 2018-9-12 21:06 | 显示全部楼层
不过你运行试试看,看到底会不会闪烁,意思是那么个意思。
| 2018-9-12 21:24 | 显示全部楼层
没影响,那个是指示,看了你的备注。那个设置就是为了让IO作为指示呢。应该会很闪烁厉害。
| 2018-9-12 22:05 | 显示全部楼层
不配置那个,也是正常的。那个你要看官方的那个开发板是怎么个原理图是不是有个LED
| 2018-9-12 22:10 | 显示全部楼层

看这个开发板的原理图了吗?那个端口是个LED,明白了吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-9-12 22:27 | 显示全部楼层
1000 = 内部带隙电压(band-gap)1.22V. (需BODEN=1,band-gap才会有效)
ADC转换输入管脚需要特别配置,通过ADCHS[2:0] 来选择采样所需要的ADC通道连接到采样电路上。同时,用
户需要通过PxMn寄存器把采样所用的管脚配置为“输入高阻模式” (input-only high impedance) 。配置后用于
ADC管脚与数字输出电路将断开,但数字输入电路仍然可以工作,因此数字输入将可能产生漏电流。所以还需要
通过配置AINDIDS寄存器相应位来关闭数字输入缓冲区。如上配置后,ADC输入脚将变成纯模拟输入电路
-------------------------------
| 2018-9-12 22:27 | 显示全部楼层
上面那手册说的只是为了外部测量,让数字电路跟ADC电路分开,而跟内部检测无关。
| 2018-9-12 22:35 | 显示全部楼层
应该内部的跟IO就无关了。
 楼主 | 2018-9-13 09:11 | 显示全部楼层
zhuomuniao110 发表于 2018-9-12 21:04
后面那个GPIO1,作用闪灯,前面是定义模式为双向。可能是写错了吧。

感谢了。
我把语句“  //   Timer0_Delay1ms(100); ” 去掉注释,并在语句“ set_GPIO1; ”后 新增语句“ Timer0_Delay1ms(100); ”,P1.2引脚所对应的LED1的确开始闪烁了。
 楼主 | 2018-9-13 09:17 | 显示全部楼层
幸福小强 发表于 2018-9-12 22:05
不配置那个,也是正常的。那个你要看官方的那个开发板是怎么个原理图是不是有个LED ...

感谢了。
因为学习的第一个例程是“ ADC_Bandgap ”,突然出现了这个P12的配置就以为跟ADC所用引脚配置有关。
 楼主 | 2018-9-13 09:19 | 显示全部楼层
幸福小强 发表于 2018-9-12 22:10
看这个开发板的原理图了吗?那个端口是个LED,明白了吗

了解了。
被您标出来的LED1似乎是在P13引脚上。您发现了它原理图的小bug了
 楼主 | 2018-9-13 09:22 | 显示全部楼层
gejigeji521 发表于 2018-9-12 22:27
上面那手册说的只是为了外部测量,让数字电路跟ADC电路分开,而跟内部检测无关。 ...

感谢了。
所以说在选择内部带隙电压时,就不用考虑引脚输入输出的考虑了,对吧?
 楼主 | 2018-9-13 09:22 | 显示全部楼层
捉虫天师 发表于 2018-9-12 22:35
应该内部的跟IO就无关了。

感谢了。
嗯嗯,明白了。
| 2018-9-13 14:58 | 显示全部楼层
主要是楼主太认真,想的多,其实是个好事。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表