1、,10 .电压基准 ADC 和DAC 模块工作都需要一个电压基准。 C8051F系列单片机的电压基准电路片内电压基准源和片外电压基准输入电路。 电压基准电路为控制ADC 和DAC 模块工作提供了灵活性。 10. 1电压基准(C8051F020/2),有三个电压基准输入引脚,允许每个ADC 和两个DAC 使用外部电压基准或片内电压基准输出。 通过配置Vref 模拟开关,ADC0 还可以使用DAC0 的输出作为内部基准,ADC1 可以使用模拟电源电压作为基准。,内部电压基准电路由一个1.2V、15ppm/(典型值)的带隙电压基准发生器和一个两倍增益的输出缓冲放大器组成。 内部基准电压可以通过VRE
2、F 引脚连到应用系统中的外部器件或电压基准输入引脚。,建议在VREF 引脚与AGND 之间接入0.1 F 和4.7 F 的旁路电容。,REF0CN: 电压基准控制寄存器(见上页),位7-5: 未用。读 = 000b,写 = 忽略。 位4: AD0VRS:ADC0 电压基准选择位 0:ADC0 电压基准取自VREF0 引脚。 1:ADC0 电压基准取自DAC0 输出。 位3: AD1VRS:ADC1 电压基准选择位 0:ADC1 电压基准取自VREF1 引脚。 1:ADC1 电压基准取自AV+。,REF0CN: 电压基准控制寄存器,位2: TEMPE:温度传感器使能位 0:内部温度传感器关闭。
3、1:内部温度传感器工作。,位1: BIASE:ADC/DAC 偏压发生器使能位(使用ADC 和DAC 时该位必须为1) 0:内部偏压发生器关闭。 1:内部偏压发生器工作。 位0: REFBE:内部电压基准缓冲器使能位 0:内部电压基准缓冲器关闭。 1:内部电压基准缓冲器工作。内部电压基准提供从VREF 引脚输出。,REF0CN: 电压基准控制寄存器(见下页),REF0CN 中的BIASE 位使能片内电压基准发生器,而REFBE 位使能驱动VREF引脚的缓冲放大器。 当被禁止时,带隙基准和缓冲放大器消耗的电流小于1A(典型值),缓冲放大器的输出进入高阻状态。 如果要使用内部带隙基准作为基准电压发
4、生器,则BIASE 和REFBE 位必须被置1。如果不使用内部基准,REFBE 位可以被清0。 注意:如果使用ADC 或DAC,则不管电压基准取自片内还是片外,BIASE 位必须被置为逻辑1。如果既不使用ADC 也不使用DAC,则这两位都应被清0以节省功耗。,温度传感器接在ADC0 输入多路开关的最后一个输入端。REF0CN 中的TEMPE 位用于使能和禁止温度传感器。当被禁止时,温度传感器为缺省的高阻状态,此时对温度传感器的任何A/D 测量结果都是无意义的。,表10.1 电压基准的电气特性,10. 2 电压基准(C8051F021/3),内部电压基准电路由一个1.2V、15ppm/(典型值)
5、的带隙电压基准发生器和一个两倍增益的输出缓冲放大器组成。 内部基准电压可以通过VREF 引脚连到应用系统中的外部器件或VREFA 输入引脚。 注意:只有一个输入引脚。,建议在VREF 引脚与AGND 之间接入0.1 F 和4.7 F 的旁路电容。 VREFA 引脚只为ADC0 和ADC1 提供电压基准输入。,通过配置VREF 模拟开关,ADC0 还可以使用DAC0 的输出作为内部基准。 ADC1 可以通过VREF 多路开关使用模拟电源电压作为基准。,REF0CN: 电压基准控制寄存器,表10.2 电压基准的电气特性,例:DAC输出阶梯波,写DAC0H时,更新DAC0 /- /DAC0转换程序
6、/- /- /INCLUDES /- #include /- /C8051F020的16位SFR定义 /- sfr16 DAC0 = 0 xd2; /DAC0数据寄存器 /- #define UP 0 x010 #define T 1000 void dlms (int count); /延时程序说明 void config (void); /配置程序说明 /- /主程序 /-,void main (void) int i; config(); for (i=0;i=4095;i+Up) /形成阶梯波 DAC0 = i; /送数字量到DAC0直接更新输出 dlms(T); /- /延时程序 /
7、- void dlms(int count) int j; while(count- != 0) for (j=0;j100;j+); ,/- /配置程序 /- void config (void) int n; /- /配置看门狗 /- WDTCN = 0 x07; /看门狗控制寄存器 WDTCN = 0 xDE; /禁止看门狗 WDTCN = 0 xAD; /- /配置振荡器 /- OSCXCN = 0 x67; /外部晶振,11.0592M for (n=0;n255;n+); /等待外部晶振启动 while (OSCXCN /选择外部时钟源,允许是中丢失检测,/- /配置内部参考源 /
8、- REF0CN = 0 x 02; /内部参考源工作 /- /配置DAC0 /- DAC0CN = 0 x80; /使能DAC0,写DAC0H更新,数据右对齐 DAC0L = 0 x00; /DAC0数据寄存器初值 DAC0H = 0 x00; ,OSCXCN:外部振荡器控制寄存器,位7: XTLVLD:晶体振荡器有效标志 (只在XOSCMD11x 时有效) 0:晶体振荡器未用或未稳定。 1:晶体振荡器正在运行并且工作稳定。 位6-4: XOSCMD2-0:外部振荡器方式位 00 x:关闭。XTAL1 引脚内部接地。 010:系统时钟为来自XTAL1 引脚的外部CMOS 时钟。 011:系统
9、时钟为来自XTAL1 引脚的外部CMOS 时钟的二分频。 10 x:RC/C 振荡器方式二分频。 110:晶体振荡器方式。 111:晶体振荡器方式二分频。,位3: 保留。读 = 无定义,写 = 忽略。 位2-0: XFCN2-0:外部振荡器频率控制位。 000-111:见下表,OSCICN:内部振荡器控制寄存器,位7: MSCLKE:时钟丢失检测器使能位 0:禁止时钟丢失检测器。 1:使能时钟丢失检测器; 位4: IFRDY:内部振荡器频率准备好标志 0:内部振荡器频率不是按IFCN 位指定的速度运行。 1:内部振荡器频率按照IFCN 位指定的速度运行。 位3: CLKSL:系统时钟源选择位 0:选择内部振荡器作为系统时钟。 1:选择外部振荡器作为系统时钟。 位2: IOSCEN:内部振荡器使能位 0:内部振荡器禁止。 1:内部振荡器使能。 位1-0: IFCN1-0:内部振荡器频率控制位 00:内部振荡器典型频率为2MHz。 01:内部振荡器典型频率为4MHz。 10:内部振荡器典型频率为8MHz。 11:内部振荡器典型频率为16MHz。,。,第10章 电源基准 内容结束,谢 谢 !,