CMP

CMP特性

  • 比较器迟滞程度可配

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

  • 比较器输出极性可配

  • 比较器输出速度可配

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

    — I/O引脚

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

  • 支持输出重定向功能:

    — 普通I/O

    — 定时器断路输入TMRx_BRK

    — 定时器输入捕获TMR_CH

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

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

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

  • 由模拟信号触发从低功耗模式唤醒
  • 模拟信号调节
  • 与定时器的PWM输出结合使用时,组成逐周期的电流控制环路

CMP功能介绍

CMP功能框图

“图1.
图1. CMP功能框图

迟滞

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

“图2.
图2. 比较器迟滞

输出消隐功能

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

“图3.
图3. 比较器输出消隐

干扰滤波器

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

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

“图4.
图4. 干扰滤波器时序图

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

CMP中断

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

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

应用实例

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

  • 输出消隐功能
  • 干扰滤波功能
  • 深度睡眠模式唤醒

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

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

输出消隐功能

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

“图5.
图5. 输出消隐波形

干扰滤波功能

对于干扰滤波功能也使用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.
图6. 干扰滤波波形

深度睡眠模式唤醒

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

  • CMP极性选择逻辑和输出端口的重定向工作独立于PCLK时钟
  • CMP输出可以连接到EXINT线21

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

“图7.
图7. 深度睡眠模式唤醒

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 85
订阅 RSS - CMP