第10章 模拟比较器和ADC接口

上传人:野鹰 文档编号:15581851 上传时间:2017-11-05 格式:DOC 页数:18 大小:1.27MB
返回 下载 相关 举报
第10章 模拟比较器和ADC接口_第1页
第1页 / 共18页
第10章 模拟比较器和ADC接口_第2页
第2页 / 共18页
第10章 模拟比较器和ADC接口_第3页
第3页 / 共18页
第10章 模拟比较器和ADC接口_第4页
第4页 / 共18页
第10章 模拟比较器和ADC接口_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《第10章 模拟比较器和ADC接口》由会员分享,可在线阅读,更多相关《第10章 模拟比较器和ADC接口(18页珍藏版)》请在金锄头文库上搜索。

1、基于 AVR 的单片嵌入式系统原理与实践应用华东师范大学 电子系 马 潮 10-1第 10 章 模拟比较器和 ADC 接口模拟比较器和模数转换 ADC 是单片机内部最常见的两种支持模拟信号输入的功能接口。大部分 AVR 都具备这两种类型的接口。本章将以 ATmage16 芯片为例,介绍这两种模拟接口的原理和应用设计方法。10.1 模拟比较器ATmega16 的模拟比较器可以实现对两个输入端:正极 AIN0 和负极 AIN1(对应于ATmage16 的引脚 PB2、PB3)的模拟输入电压进行比较。当 AIN0 上的电压高于 AIN1 的电压时,模拟比较器输出 ACO 被设为“1” 。比较器的输出

2、还可以被设置作为定时计数器 1 输入捕获功能的触发信号。此外,比较器的输出可以触发一个独立的模拟比较器中断。用户可以选择使用比较器输出的上升沿、下降沿或事件触发作为模拟比较器中断的触发信号。比较器的方框图和周围电路如图 10-1 所示。图 10-1 模拟比较器的方框图10.1.1 与模拟比较器相关的寄存器和标志位与模拟比较器相关的寄存器是 SFIOR、ACSR。用户通过这两个寄存器的相关位实现对模拟比较器的设置和控制。1) 特殊功能 IO 寄存器SFIOR第 10 章 模拟比较器和 ADC 接口华东师范大学 电子系 马 潮 10-2寄存器 SFIOR 中的第 3 位 ACME 为模拟比较器多路

3、使能控制位。当该位为逻辑“1”,同时模数转换(ADC)功能被关闭(ADCSRA 寄存器中的 ADEN 使能位为“0”)时,允许使用 ADC 多路复用器选择 ADC 的模拟输入端口作为模拟比较器反向端的输入信号源。当该位为零时,AIN1 引脚的信号将加到模拟比较器反向端。2) 模拟比较器控制和状态寄存器ACSR位 7 6 5 4 3 2 1 0 $08( $028) ACD ACBG ACO ACI ACIE ACI ACIS1 ACIS0 ACSR 读 /写 R/W R/W R R/W R/W R/W R/W R/W 复 位 值 0 0 N/A 0 0 0 0 0 ACSR 是模拟比较器主要的

4、控制寄存器,其中各个位的作用如下: 位 7ACD:模拟比较器禁止当该位设为“1”时,提供给模拟比较器的电源关闭。该位可以在任何时候被置位,从而关闭模拟比较器。在 MCU 闲置模式,且无需将模拟比较器作为唤醒源的情况下,关闭模拟比较器可以减少电源的消耗。要改变 ACD 位的设置时,应该先将寄存器 ACSR 中的 ACIE位清零,把模拟比较器中断禁止掉。否则,在改变 ADC 位设置时会产生一个中断。 位 6ACBG:模拟比较器的能隙参考源选择当该位为“1”时,芯片内部一个固定的能隙(Bandgap)参考电源 1.22V 将代替 AIN0的输入,作为模拟比较器的正极输入端。当该位被清零时,AIN0

5、的输入仍然作为模拟比较器的正极输入端。 位 5ACO:模拟比较器输出模拟比较器的输出信号经过同步处理后直接与 ACO 相连。由于经过同步处理,ACO 与模拟比较器的输出之间,会有 12 个时钟的延时。 位 4ACI:模拟比较器中断标志位当模拟比较器的输出事件符合中断触发条件时(中断触发条件由 ACIS1 和 ACIS0 定义),ACI 由硬件置“1” 。若 ACIE 位置“1” ,且状态寄存器中的 I 位为“1”时,MCU 响应模拟比较器中断。当转入模拟比较中断处理向量时,ACI 被硬件自动清空。此外,也可使用软件方式清零 ACI:对 ACI 标志位写入逻辑“1”来清零该位。 位 3ACIE:

6、模拟比较器中断允许当 ACIE 位设为“1” ,且状态寄存器中的 I 位被设为“1”时,允许模拟比较器中断触发。当 ACIE 被清“0”时,模拟比较器中断被禁止。 位 2ACIC:模拟比较器输入捕获允许当该位设置为“1”时,定时计数器 1 的输入捕获功能将由模拟比较器的输出来触发。在这种情况下,模拟比较器的输出直接连到输入捕获前端逻辑电路,从而能利用定时器/计数器 1 输入捕获中断的噪声消除和边缘选择的特性。当该位被清零时,模拟比较器和输入捕获功能之间没有联系。要使能比较器触发定时器/计数器 1 的输入捕获中断,定时器中断屏蔽寄存器(TIMSK)中 的 TICIE1 位必须被设置。 位 1、0

7、ACIS1、ACIS0:模拟比较器中断模式选择这 2 个位决定哪种模拟比较器的输出事件可以触发模拟比较器的中断。不同的设置参位 7 6 5 4 3 2 1 0 $30( $050) ADTS2 ADTS1- ADTS0- - ACME PUD PSR2 PSR10 SFIOR 读 /写 R/W R/W R/W R R/W R/W /W /W 复 位 值 0 0 0 0 0 0 0 0 基于 AVR 的单片嵌入式系统原理与实践应用华东师范大学 电子系 马 潮 10-3见表 10-1。表 10-1 模拟比较器中断模式选择ACIS1 ACIS0 中 断 模 式0 0 比较器输出的上升沿和下降沿都触发

8、中断0 1 保留1 0 比较器输出的下降沿触发中断1 1 比较器输出的上升沿触发中断注意:当要改变 ACIS1、ACIS0 时,必须先清除 ACSR 寄存器中的中断允许位,以禁止模拟比较器中断;否则,当这些位被改变时,会发生中断。3) 模拟比较器的多路输入用户可以选择 ADC7.0 引脚中的任一路的模拟信号代替 AIN1 引脚,作为模拟比较器的反向输入端。模数转换的 ADC 多路复用器提供这种选择的能力,但此时必须关闭芯片的ADC 功能。当模拟比较器的多路选择使能位(SFIOR 中的 ACME 位)置“1” ,同时 ADC 被关闭时(ADCSRA 中的 ADEN 位置“0” ) ,由寄存器 A

9、DMUX 中的 MUX2:0位所确定的引脚将代替AIN1 作为模拟比较器的反向输入端,如表 10-2 所示。如果 ACME 被清零,或 ADEN 被置 1,则 AIN1 仍将为模拟比较器的反向输入端。10.1.2 模拟比较器的应用设计模拟比较器的基本应用就是对两个输入端(AIN0、AIN1)的模拟电压进行比较,例如对系统电源电压的监测等。例 10.1 系统电源电压的监测1) 硬件电路在一些使用电池供电的便携和手持式系统中,系统需要对电源电压进行监测,一旦电压低于某个值时,就要给出警告,提示用户更换电池或对电池进行充电。图 10-2 是一个简单的电源电压监测电路。电源电压经过 R1、R2 分压后

10、,作为监测电压输入端与PB3(AIN1)连接。模拟比较器的 AIN0 采用芯片内部 1.22V 的固定能隙(Bandgap)参考电源作为比较参考电压。假定系统正常工作电压范围为 3V-5V,当电源电压低于 3.6V 时就要给出低电压提示。图中使用 PB2 控制一个 LED 发光作为低电压提示。当电源电压高于 3.7V 时,PB3(AIN1)表 10-2 模拟比较器多路输入选择ACME ADEN MUX2.0 模拟比较器反向输入端0 x xxx AIN11 1 xxx AIN11 0 000 ADC01 0 001 ADC11 0 010 ADC21 0 011 ADC31 0 100 ADC4

11、1 0 101 ADC51 0 110 ADC61 0 111 ADC7第 10 章 模拟比较器和 ADC 接口华东师范大学 电子系 马 潮 10-4引脚的电压大于 1.22V,比 AIN0 的 1.22V 高,此时寄存器 ACSR 中的 AC0 为“0” 。而当电源电压低于 3.6V 时,PB3(AIN1)引脚的电压降到 1.2V 以下,比 AIN0 的 1.22V 低,此时寄存器 ACSR 中的 AC0 为“1” 。因此,AC0 标志位反映了电压高低的情况。图 10-2 系统电源电压监测电路2) 软件设计下面给出一个简单的电源监测程序,程序循环检测 AC0 的值,当 PB3 的电压低于1.

12、22V 时,PB2 输出低电平,LED 发光,表示低电压报警提示。/*File name : demo_10_1.cChip type : ATmega16Program type : ApplicationClock frequency : 4.000000 MHzMemory model : SmallExternal SRAM size : 0Data Stack size : 256*/#include void main(void)PORTB.2 = 1; /PB2 设置为输出,控制 LEDDDRB.2 = 1;/ 模拟比较器初始化:ACSR=0x40; /允许模拟比较器,AIN0

13、设置为内部 Bandgap 参考电压 1.22Vwhile (1) /循环检测 AC0 位基于 AVR 的单片嵌入式系统原理与实践应用华东师范大学 电子系 马 潮 10-5if (ACSR.5)PORTB.2 = 0; / AIN0 AIN1,低电压报警在上面简单程序中使用了模拟比较器的功能,实现了对电源电压的监测。在 AVR-51 多功能实验板上模拟时,PB3(AIN1)的输入电压可以通过板上 D 区获得。用连接线直接将PB3 与 JD1 连接,通过调节电位器 WD1 的阻值,观察 LED 的现象。当 LED 刚发光时,测量JD1 的电压在 2.2V 左右。3) 模拟比较器使用注意点 芯片

14、RESET 后,模拟比较器为允许工作状态。如果系统中不使用模拟比较器功能,应将寄存器 ACSR 的 ACD 位置 1,关闭模拟比较器,这样可以减少电源的消耗。 使用模拟比较器时,应注意比较器的两个输入端口 PB2、PB3 的设置。当 PB2/PB3作为模拟输入端使用时,PB2/PB3 应设置为输入工作方式,且上拉电阻无效,这样就不会使 PB2/PB3 上输入的模拟电压受到影响。 当 AIN0 设置为使用芯片内部 1.22V 的固定能隙(Bandgap)参考电源时,PB2 口仍然可以作为通用 I/O 端口使用,这样就能节省一个 I/O 引脚。在上面的例子里,AIN0 就是设置为使用芯片内部 1.

15、22V 的固定能隙(Bandgap)参考电源,这样就可将 PB2 口释放出来,作为普通 I/O 口用来驱动 LED 了。例 10.2 利用模拟比较器构成 ADC更巧妙的例子是可以利用模拟比较器和一些简单的外围电路,设计构成一个 ADC 转换系统。感兴趣的读者可以参看本章提供的参考文献 avr_app_400.pdf。10.2 模数转换器 ADC外部的模拟信号量需要转变成数字量才能进一步的由 MCU 进行处理。ATmega16 内部集成有一个 10 位逐次比较(successive approximation)ADC 电路。因此使用 AVR 可以非常方便的处理输入的模拟信号量。ATmega16 的 ADC 与一个 8 通道的模拟多路选择器连接,能够对以 PORTA 作为 ADC 输入引脚的 8 路单端模拟输入电压进行采样,单端电压输入以 0V(GND)为参考。另外还支持16 种差分电压输入组合,其中 2 种差分输入方式(ADC1,ADC0 和 ACD3,ADC2)带有可编程增益放大器,能在 A/D 转换前对差分输入电压进行 0dB(1) ,20dB(10)或46dB(200)的放大。还有七种差分输入方式的模拟输入通道共用一个负极(ADC1) ,此时其它任意一个 ADC 引脚都可作为相应的正极。若增益为 1或 10,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号