资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,3.6,比较器B,(,Comp,arator,_,B,),3.6 比较器B (Comparator_B),本节内容,Comp_B,概述,Comp_B,结构,Comp_B,功能使用,模拟输入端,模拟输入开关,比较器,参考电压发生器,输出电路,Comp_B,中断,Comp_B,库函数,Comp_B,应用举例,本节内容Comp_B 概述,比较器,B,概述,(,1/1,),比较器,B,是为精确的比较测量而设计的,如电池电压监测、产生外部模拟信号、测量电流、电容和电阻,结合其他模块还可实现精确的,A/D,模数转换功能。,比较器,B,是工业仪表、手持式仪表等产品设计中的理想选择。,5,系列之前的,MSP430,单片机仅有比较器,A,,,5/6,系列,430,单片机升级为比较器,B,。,Comp_B,是一个模拟电压比较器,涵盖了多达,16,通道的通用比较器功能。,比较器B 概述(1/1),比较器,B,概述,(,2/2,),Comp_B,模块主要特性有:,正向反向终端输入多路选择器,通过软件选择比较器输出的,RC,滤波,可输出到,TA,的捕获输入,软件控制端口输入缓冲,具有中断能力,可选的参考电压发生器、电压磁滞发生器,参考电压输入可选择共用参考电压,超低功耗的比较模式,低功耗模式支持中断驱动测量系统,比较器B 概述(2/2)Comp_B模块主要特性有:,比较器,B,结构,(,1/1,),比较器,B,的结构,如下图所示:,比较器,B,包括:,两个模拟量输入端,CB0,和,CB1,一个模拟比较器,参考电压发生器和输出滤波器,还有一些控制单元,比较器B 结构(1/1)比较器B 的结构,如下图所示:,比较器,B,功能使用,(,1/5,),比较器,B,的主要功能:,指出两个输入电压,CB0,和,CB1,的大小关系,然后设置输出信号,CBOUT,的值。如果,CB0CB1,则:,CBOUT,1,,否则,CBOUT,0,。,模拟输入端,参与比较的两个模拟信号通过正、负两个输入电压端,:CB0,和,CB1,进入比较器,B,,输入电流极小。这两个输入端可由用户软件设置,最终能够选择,6,种信号(,CB0,、,CB1,、,0.5VCC,、,0.25VCC,、三极管阀值电压和外部参考源),而且能够进行多种组合比较。,硬件提供的比较组合如下:,两个外部输入比较,每个外部输入与,0.5VCC,或,0.25VCC,比较,每个外部输入与内部基准电压比较,比较器B 功能使用(1/5)比较器B的主要功能:指出两,比较器,B,功能使用,(,2/5,),模拟输入开关,通过,CBIPSELx,及,CBIMSELx,位,用于选择两个比较器输入终端与相应端口管脚之间连接还是断开。比较器的输入终端可以分别进行控制。,通过配置,CBIPSELx/CBIMSELx,位可以实现:,将外部信号连接到比较器的正端或负端,内部参考电压到相应输出端口管脚选择一个路径,将外部电流源应用到比较器的正端或负端,内部多路选择器的两个端口到外部的映射,CBEX,位控制输入多路选择器,改变比较器正端或负端输入信号的顺序。另外,当比较器终端顺序发生改变时,比较器输出信号也发生反转,这使用户可以检测或补偿比较器输入端的偏置电压。,比较器B 功能使用(2/5),比较器,B,功能使用,(,3/5,),比较器,如比较器,B,的结构图所示,比较器位于模拟信号输入和滤波输出之间的部分。,比较器对正和负输入终端的模拟信号进行比较。如果正端信号大于负端,则比较器输出,CBOUT,为高。,其中与门负责将比较输出信号进行整形。,可以通过,CBON,位来关闭或打开比较器。,控制位,CBEX,选择正向或反向输出。,比较器B 功能使用(3/5),比较器,B,功能使用,(,4/5,),参考电压发生器,COMP_B,参考电压的,框图,如下图所示:,参考电压发生器用于,产生用于比较器任意,输入端的,VREF,。,如果外部信号用于两个,比较器输入端,应当关闭,内部参考电压发生器,从,而降低电流消耗。,比较器B 功能使用(4/5),比较器,B,功能使用,(,5/5,),输出电路,最终输出信号的上升沿或下降沿可以设置为具有中断能力。,如果不使用中断,可将输出信号送给内部其他模块,作为,其他模块的一个输入信号;还可以由外部引脚引出。,另外,比较器B 可以适合于低功耗应用,该模块可通过软件打开/关闭,不用时关闭以便电流消耗最小。,比较器B 功能使用(5/5),比较器,B,中断,(,1/1,),中断标志,CBIFG,,在比较器输出的上升沿或下降沿时都会置位,上升沿或下降沿由,CBIES,位选择。,如果,CBIE,及,GIE,位都置位,,CBIFG,标志将产生中断请求。,比较器B 中断(1/1),比较器,B,库函数,(,1/3,),比较器,API,分成,3,组函数:处理初始化和输出,处理中断,处理辅助功能。,处理初始化和输出的相关,API,:,COMPB_init(),COMPB_setReferenceVoltage(),COMPB_enable(),COMPB_disable(),COMPB_outputValue(),比较器B 库函数(1/3),比较器,B,库函数,(,2/3,),处理中断的相关,API,COMPB_enableInterrupt(),COMPB_disableInterrupt(),COMPB_clearInterrupt(),COMPB_getInterruptStatus(),COMPB_interruptSetEdgeDirection(),COMPB_interruptToggleEdgeDirection(),比较器B 库函数(2/3),比较器,B,库函数,(,3/3,),处理,辅助,功能的相关,API,COMPB_enableShortOfInputs(),COMPB_disableShortOfInputs(),COMPB_disableInputBuffer(),COMPB_enableInputBuffer(),COMPB_IOSwap(),比较器B 库函数(3/3),比较器,B,应用举例,(,1/9,),例,1,、使用,CompB,,比较输入电压和内部参考电压大小,如果大于内部参考电压,2.0V,,则,CBOUT,输出高电平,否则输出低电平,用,LED,亮灭来标识比较结果。,相关程序如下:,#include,void main(void),WDTCTL=WDTPW+WDTHOLD;,/,关闭看门狗定时器,P3DIR|=BIT0;,/P3.0,输出方向,P3SEL|=BIT0;,/,选择,P3.0/CBOUT,引脚为外设功能,/,配置 比较器,B,CBCTL0|=CBIPEN+CBIPSEL_0;,/,使能,V+,,输入通道,CB0,CBCTL1|=CBPWRMD_1;,/,正常电源模式,CBCTL2|=CBRSEL;,/VREF,应用到负端,比较器B 应用举例(1/9),比较器,B,应用举例,(,2/9,),/R-ladder off;bandgap ref voltage(1.2V),CBCTL2|=CBRS_3+CBREFL_2;,/supplied ref amplifier to get Vcref=2.0V(CBREFL_2),CBCTL3|=BIT0;,/,关闭输入缓冲,P6.0/CB0,CBCTL1|=CBON;,/,打开,CompB,_delay_cycles(75);,/,延时,用于,comp,判断电压大小,_bis_SR_register(LPM4_bits);,/,进入,LPM4,_no_operation();,/,空操作,用于调试,比较器B 应用举例(2/9),比较器,B,应用举例,(,3/9,),用库函数调用,实现例,1,相同功能,相关程序如下:,void main(void),/,关闭看门狗定时器,WDT_hold(_MSP430_BASEADDRESS_WDT_A_);,/,选择,P3.0/CBOUT,引脚为外设功能,GPIO_setAsPeripheralModuleFunctionOutputPin,(_MSP430_BASEADDRESS_PORT3_R_,GPIO_PORT_P3,GPIO_PIN0);,/,初始化比较器,B,/CB0,连接到正端,,/VREF,应用到负端,,/,正常电源模式,COMPB_init(_MSP430_BASEADDRESS_COMPB_,COMPB_INPUT0,COMPB_VREF,COMPB_POWERMODE_NORMALMODE,COMPB_FILTEROUTPUT_DLYLVL1,COMPB_NORMALOUTPUTPOLARITY);,比较器B 应用举例(3/9),比较器,B,应用举例,(,4/9,),/VREF,应用到负端,选择参考电压为,2V,/,参考电压为,2.0 V,/,上线,2.0*(32/32)=2.0V,/,下线,2.0*(32/32)=2.0V,COMPB_setReferenceVoltage,(_MSP430_BASEADDRESS_COMPB_,COMPB_VREFBASE2_0V,32,32);,/,使能,COMP,模块,COMPB_enable(_MSP430_BASEADDRESS_COMPB_);,/,延时,用于,comp,判断电压大小,_delay_cycles(75);,比较器B 应用举例(4/9)/,比较器,B,应用举例,(,5/9,),例,2,:利用,COMPB,中断处理能力:,Vcompare,与内部参考电压,1.5V,比较,如果超过,1.5V,,就置位,CBIFG,,进入中断处理函数。,相关程序如下:,#include,void main(void),WDTCTL=WDTPW+WDTHOLD;,/,关闭看门狗定时器,P1DIR|=BIT0;,/P1.0/LED,设为输出方向,/,打开,CompB,CBCTL0|=CBIPEN+CBIPSEL_0;,/,使能,V+,输入,CB0,通道,CBCTL1|=CBPWRMD_1;,/,正常电源模式,CBCTL2|=CBRSEL;,/VREF,应用到负端,/R-ladder off;bandgap ref voltage(1.2V),CBCTL2|=CBRS_3+CBREFL_1;,/,设置参考电压,Vcref=1.5V(CBREFL_2),CBCTL3|=BIT0;,/,关闭输入缓存,P6.0/CB0,_delay_cycles(75);,/,延时,用于,comp,判断电压大小,比较器B 应用举例(5/9),比较器,B,应用举例,(,6/9,),CBINT,/,清除中断标志,CBINT|=CBIE;,/,在,CBIFG(CBIES=0),上升沿使能,CompB,中断,CBCTL1|=CBON;,/,使能,比较器,B,_bis_SR_register(LPM4_bits+GIE);,/,打开全局中断,进入,LMP4,_no_operation();,/,空操作,用于调试,/Comp_B ISR,翻转,LED,#pragma vector=COMP_B_VECTOR,_interrupt void Comp_B_ISR(void),CBCTL1=CBIES;,/,翻转中断跳变沿,CBINT,/,清除中断标志,P1OUT=0 x01;,/,翻转,P1.0,比较器B 应用举例(6/9),比较器,B,应用举例,(,7/9,),用库函数调用,实现例,2,相同功能,相关程序如下:,void main(void),/,关闭看门狗定时器,WDT_hold(_MSP430_BASEADDRESS_WDT_A
展开阅读全文