Analog Comparator
一、简介
模拟比较器是一个外设,它能比较两个模拟电压的大小,并通过自身提供的逻辑输出端将比较结果以信号的形式输出。
模拟比较器可以将一个测试电压和一个独立的外部参考电压,共用的外部参考电压或共用的内部参考电压进行比较。它可以把比较结果输出到引脚上,也可以用于触发中断、触发ADC采样。它的中断产生逻辑是独立于ADC触发逻辑的,所以,AC可以基于一个事件产生一个中断,ADC可以基于另一个事件产生触发。比如说,让上升沿触发一次中断,让下降沿触发一次ADC。
比较器可以将测试电压和下面的其中一种电压进行比较
- 独立的外部参考电压
- 共用的外部参考电压
- 共用的内部参考电压
该芯片提供了两个独立的模拟比较器。
原理演示图
它的头文件是driverlib/comp.h
二、功能说明
比较器通过比较VIN-和VIN+来产生输出VOUT
VIN- < VIN+ , VOUT = 1
VIN- > VIN+ , VOUT = 0
VIN- 的输入源是外部输入,VIN+ 的输入源可以使Cn+,C0+,或者是内部参考源VIREF
三、函数介绍
ComparatorConfigure()
用来配置一个AC模块触发ADC模块的条件、触发中断的条件、和谁比较、正常输出还是反转输出ComparatorIntClear()
用于清除比较器中断标志,( 小贴士,因为在Contex-M处理器中写入有缓冲,所以执行函数之后过几个周期中断源才可能真正被清除,所以我们推荐在中断函数的一开始就清除中断标识)ComparatorIntDisable()
失能一个比较器中断ComparatorIntEnable()
使能一个比较器中断ComparatorIntRegister()
注册中断函数ComparatorIntStatus()
获取当前中断状态ComparatorIntUnregister()
注销一个中断函数ComparatorRefSet()
设定内部参考电压ComparatorValueGet()
获取当前比较器输出值,true表示比较器输出是高,false表示比较器输出是低
- 此外还需要用到一些GPIO函数来实现比较器功能
GPIOPinTypeComparator()
配置引脚用于模拟比较器输入(注意:数据手册中说调用这个函数时还需要PIOPinConfigure()
,但是例程中并没有调用此函数,查看pin_map中也没有对应的宏定义,可能并不需要调用这个函数吧)GPIOPinTypeComparatorOutput()
配置引脚作为模拟比较器输出
四、例程
1 | SysCtlPeripheralEnable(SYSCTL_PERIPH_COMP0); |