CMP功能介绍及应用实例

电子说

1.3w人已加入

描述

CMP特性 

比较器迟滞程度可配

定时器输出作为比较器消隐源

比较器输出极性可配

比较器输出速度可配

比较器同相和反相输入源可选:

— I/O引脚

— 内部参考电压和三个系数分压值(1/4,1/2,3/4)

支持输出重定向功能:

— 普通I/O

— 定时器断路输入TMRx_BRK

— 定时器输入捕获TMR_CH

— 定时器输出比较参考值清零TMR_CH_CLR

结合EXINT产生中断,从低功耗模式唤醒

CMP可用于多种功能,包括:

由模拟信号触发从低功耗模式唤醒

模拟信号调节

与定时器的PWM输出结合使用时,组成逐周期的电流控制环路

CMP功能介绍 

CMP功能框图

图1. CMP功能框图

CMP

迟滞

寄存器CMP_CTRLSTS的CMPHYST[1:0]控制比较器迟滞输出,该功能可避开噪声信号带来的虚假传输信号,如果不需要迟滞,可以关闭掉。 图2. 比较器迟滞

CMP

输出消隐功能

寄存器CMP_CTRLSTS的CMPBLANKING[2:0]位用于选择比较器消隐窗口的来源,该功能可以用于防止电流调节在PWM起始时刻产生的尖峰电流。 图3. 比较器输出消隐

CMP

干扰滤波器

干扰滤波器可以用来滤除毛刺和噪声干扰。

滤波器的敏感性由H_PULSE_CNT和L_PULSE_CNT 位控制。滤波器的敏感性会影响相同的连续采样的数量,在滤波器输入上检测到此类连续采样时,才能将某信号电平变化视为有效切换。例如H_PULSE_CNT=2和L_PULSE_CNT=1时干扰滤波器时序图,如下:

图4. 干扰滤波器时序图

CMP

注:因为滤波器采样数据需要时钟,系统在深度睡眠模式下关闭比较器时钟,因此,要让比较器在深度睡眠模式下工作,必须在进入深度睡眠模式前关闭滤波器(G_FILTER_EN寄存器中的GFE=0)。

CMP中断

比较器输出从内部连接到扩展中断和事件控制器,能够产生中断或事件。该机制还可以用于退出低功耗模式。

比较器通过EXINT线21来产生中断或事件。

应用实例 

下面介绍了比较器的三个应用实例,分别是:

输出消隐功能

干扰滤波功能

深度睡眠模式唤醒

这三个实例演示了比较器的用途,并介绍了它们与定时器等外设联合工作的方式,为了方便用户快速入门使用AT32F421xx的比较器,本文档介绍的三个应用实例的工程代码都可以在BSP软件包的AT32F421_Firmware_Library_V2.x.xprojectat_start_f421examplescmp中获取到,以下三个实例对应工程名称分别为:blanking,glitch_filter和deep_sleep_mode。

注:所有project都是基于keil 5而建立,若用户需要在其他编译环境上使用,请参考AT32xxx_Firmware_Library_V2.x.xprojectat_start_xxx emplates中各种编译环境(例如IAR6/7,keil 4/5)进行简单修改即可。

输出消隐功能

前面提到了输出消隐的功能,下面来看一下这个功能的具体用法,首先我们需要在TMR1/3/15中选择一个TMR_CHx来作为比较器的消隐窗口,这里需要相应的配置好CMP_CTRLSTS中的CMPBLANKING位来进行选择。由于没有单独的使能位,只要此位非0就表示开启了blanking功能。这里我们选择TMR1_CH1的输出比较PWM模式1来作为CMP的消隐窗口,外部输入100kHz的方波来模拟CMP同相输入端。则可以得到如下波形: 图5. 输出消隐波形

CMP

   

干扰滤波功能

对于干扰滤波功能也使用TMR来做一个辅助测试,使用TMR1的PWM模式来模拟CMP同相输入信号,然后完成对CMP比较后的输出波形的滤波。配置方式如下:

配置TMR1_CH1为PWM模式2,频率468.7KHz,周期2.1333us,占空比50%

CMP滤波配置为H_PULSE_CNT=63,L_PULSE_CNT =0,即滤掉64个PCLK的高电平

连接TMR1_CH1(PA8)与CMP_NINV(PA1)

在主频120mHz时,每个PCLK周期为8.33ns,64个PCLK就是533.33ns,CMP滤波前高电平时长为1066.66ns,则CMP滤波后高电平占空比减半,即为25%占空比。但是,以上仅为理论值,实际测试发现最终输出会有误差,这是由于CMP输出有一定的偏移,在无滤波的情况下实际CMP输出的高电平长度会比输入多26ns,偏移量会随着输入频率的增加而增加,最多26ns。实测得到的波形如下:

图6. 干扰滤波波形

CMP

   

深度睡眠模式唤醒

利用比较器的以下两个特性:

CMP极性选择逻辑和输出端口的重定向工作独立于PCLK时钟

CMP输出可以连接到EXINT线21

可以将MCU从深度睡眠模式唤醒,只需要在使能CMP的基础上,将EXINT 21配置为中断或事件模式即可。需要注意的是在退出深度睡眠模式后需要重新配置系统时钟,具体配置方法请参考BSP提供的example。 图7. 深度睡眠模式唤醒

CMP

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分