关键词 ADμC812 A/D转换 C51驱动程序
1 ADμC812单片机内部ADC简介
1.1 ADC电路
ADμC812内部的ADC转换块包含一个5μs转换时间、8通道、12位、单电源的A/D转换器。A/D转换器由电容式DAC的常规逐次转换器组成。ADC具有单独的模拟电源和参考电压,可最大限度地减少数字电路的干扰。转换器接受的模拟电压输入范围为0~+VREF;片内提供高精度、低漂移并经厂家校准的2.5 V基准电压。ADμC812内集成的ADC转换模块有其特殊性,如果应用不当,轻则影响ADC的性能,重则电路完全不能工作,甚至烧毁器件。下面对基准电压和模拟输入电压作详细的介绍。
(1) 基准电压
ADμC812内A/D转换器的2.5 V基准电压既可由片内提供,也可由外部基准经VREF引脚提供。若使用内部基准,则在VREF和CREF引脚与AGND之间都应当连接0.1μF电容以便去耦。这些去耦电容应放在紧靠VREF和CREF引脚处。为了达到规定的性能,建议在使用外部基准时,该基准应当在2.3 V和模拟电源AVDD之间。图1 给出使用外部基准电源时的应用电路。
图1 使用外部基准电源时的应用电路
由于片内基准高精度、低漂移且经工厂校准,并且当ADC使能时,在 VREF引脚会出现此基准电压。因此,在进行系统扩展时,可将片内基准作为一个2.5 V的参考电源来使用。若要把片内基准用到微转换器之外,则应在 VREF引脚上加以缓冲并应在此引脚与AGND之间连接0.1 μF电容。
图 2 示出了把片内基准用到微转换器之外时的应用电路。
图2 片内基准用到微转换器之外时的应用电路
在实际应用中应当特别注意,内部VREF将保持掉电直到ADC外围设备模块之一被它们各自的使能位上电为止。
(2) 模拟输入
与其它ADC芯片相比,ADμC812的ADC模块有一个缺点,就是ADC正常工作的模拟输入范围为0~+2.5 V,而允许输入的电压范围只能为正电压0~+5V。经实验证明,若输入的模拟电压超过 +2.5 V(最大值为+5 V),ADC的采样结果为最大值(0FFFH),虽然结果不对,但并没有影响 ADμC812正常工作;但是,一旦输入负的模拟电压,则会影响ADμC812正常工作,表现为ADC的基准电压(VREF = +2.5 V)消失和采样结果不正确,且若长时间输入负电压,将有可能损坏芯片。 因此,在实际应用中,若发现启动ADC之后VREF端无电压,则应立即将芯片复位,并检查模拟输入信号的采集放大部分。在确保进入ADμC812的模拟信号在0~+2.5 V范围内之后,才能再次启动ADC。实际应用时,应保证输入的模拟电压为正电平。
一般情况下,ADC的输入缓冲放大器采用0~5 V的电源工作,这样,可以保证ADC的输入在ADμC812的A/D转换器的安全输入范围内,如图3所示。如果实际情况不许可,ADC的输入缓冲放大器的电源超出0~5 V,则应采用图4所示钳位电路,可保证ADC的输入在ADμC812 的A/D转换器的安全输入范围内。注意,ADC的输入端有一个0.01μF的电容,这个电容是为了保证ADC的转换精度。
图3 ADC输入缓冲放大器电源 图4 ADC的输入钳位电路
1.2 控制ADC工作的特殊功能寄存器
ADC的工作由三个特殊功能寄存器控制,即ADCCON1、ADCCON2和ADCCON3。
① ADCCON1寄存器控制转换与采集时间、硬件转换模式以及掉电模式。
寄存器地址:FFH;
寄存器缺省值:20H;
位可寻址: 否。
② ADCCON2寄存器控制ADC通道选择和转换模式。
寄存器地址:D8H;
寄存器上电缺省值: 00H;
位可寻址:是。
③ ADCCON3寄存器对用户软件给出ADC忙标志指示。
寄存器地址:F5H;
寄存器上电缺省值: 00H;
位可寻址:否。
1.3 ADC的工作模式
(1) 典型运用
当特殊功能寄存器ADCCON1~3完成设置后,ADC将转换模拟输入并在特殊功能寄存器ADCDATAH/L中提供ADC12位结果字。用通道选择位写寄存器ADCDATAH的高4位以识别通道。
(2) ADC的DMA模式
ADμC812片内ADC设计成5μs完成一次采样,在中断驱动子程序中要求用户在5μs时间内完成中断服务、读ADC转换结果并为进一步的后续处理存储作准备等全部工作。如果没有完成,则下一次的ADC采样可能丢失。因此,在ADμC812不能支持中断速率的应用中,可采用ADC DMA模式。
通过DMA使能位(ADCCON2.6),使能ADC DMA模式,它允许ADC在每次设置寄存器ADCCON后连续采样。每次采样结果被写入外部静态RAM,无需ADμC812内核的任何干预。这种方式确保ADC处于全速更新速率时,ADμC812能捕获连续的采样流。
2 使用ADμC812内部ADC的C51驱动程序
下面将给出两个使用ADμC812内部ADC的C51驱动程序。程序“ADC_pol.c”采用查询工作方式,程序“ADC_int.c”采用中断工作方式。
(1) 查询工作方式下ADμC812内部ADC的C51驱动程序
使用查询工作方式时,通过测试ADCI位以决定A/D转换是否结束。由ADμC812扩展的特殊功能寄存器(SFR)ADCCON1、ADCCON2和ADCCON3进行配置。典型设置如下:
① 置ADCCON1.7(MD1) = 0, ADCCON1.6(MD0) = 1,使ADC处于正常工作方式。
② 置ADCCON1.5(CK1) = 1, ADCCON1.4(CK0)=1,选择A/D转换时钟宽度为主时钟宽度的8倍。
③ ADCCON1.3(AQ1)=1,ADCCON1.2(AQ0)=1,用于选择采样/保持放大器获取输入的模拟信号的周期数为8个ADC时钟。
④ ADCCON2.7(ADC1)=1,A/D转换中断允许。
⑤ ADCCON2.5(SCONV)=1,连续转换允许。
⑥ ADCCON2.3~2.0用于选择A/D转换通道和温度传感器。
按上述方法设置好以后,每完成一个通道的 A/D转换,转换后的值就会存放在ADCDATAH的低4位和ADCDATAL中。程序“ADC_pol.c”见本刊网络补充版(http://www.dpj.com.cn)。
(2) 中断方式下ADμC812内部ADC的C51驱动程序
本软件的数据采集系统为8通道顺序采集,ADμC812的时钟频率为11.0592 MHz,CPU用中断方式管理A/D转换器。当一个A/D转换完成时,向CPU发请求信号,CPU响应中断,中断处理子程序负责对转换的数据进行读出并送往result_ADC[8]数组中,然后通道号加1。当8个通道全部转换结束后,将所有的结果送往UART。程序“ADC_int.c”见本刊网络补充版(http://www.dpj.com.cn)。
结语
ADμC812是真正意义上的完整的数据采集系统芯片,是集数据转换电路、微控制器、闪存于一体的数据采集系统。它的高性能和高精度转换技术,使数据采集系统实现高性能和微型化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)