CMP特性
— 普通I/O— 定时器断路输入TMRx_BRK— 定时器输入捕获TMR_CH— 定时器输出比较参考值清零TMR_CH_CLR
CMP可用于多种功能,包括:
CMP功能介绍
CMP功能框图
图1. CMP功能框图
迟滞
寄存器CMP_CTRLSTS1的CMPxHYST[1:0]控制比较器迟滞输出,该功能可避开噪声信号带来的虚假传输信号,如果不需要迟滞,可以关闭掉。图2. 比较器迟滞
锁定功能
寄存器CMP_CTRLSTS1具有写保护功能,一旦编程完成,对CMPxWP位设置为1,则寄存器CMP_CTRLSTS1和寄存器CMP_CTRLSTS2的对应位变为只读,包括CMPxWP位,只能通过系统复位解除写保护功能,该功能可用于具有特定功能安全要求的应用。
CMP中断
比较器输出从内部连接到扩展中断和事件控制器,能够产生中断或事件。该机制还可以用于退出低功耗模式。
模拟比较器1的输出经过极性选择,输入至EXINT第19号中断线。
模拟比较器2的输出经过极性选择,输入至EXINT第20号中断线。
应用实例
下面介绍了比较器的两个应用实例,分别是:
这两个实例演示了比较器的用途,并介绍了它们与定时器等外设联合工作的方式,为了方便用户快速入门使用AT32F415xx的比较器,本文档介绍的两个应用实例的工程代码都可以在BSP软件包的AT32F415_Firmware_Library_V2.x.x\project\at_start_f415\examples\cmp中获取到,以下两个实例对应工程名称分别为:output和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_CTRLSTS1中的CMPxTAG位来进行选择。由于没有单独的使能位,只要此位非0就表示开启了输出重定向功能。这里我们以CMP1为例,选择TMR1_CH1来作为CMP1的输出目的地,外部输入10kHz的方波来模拟CMP1同相输入端。此时,CMP1_OUT将会根据输入方波的电频输出不同的结果;同时通过TMR1_CH1采集来自CMP1_OUT的方波,并且将方波频率通过串口打印输出到串口工具。图3. 输出比较结果
图4. 输出比较结果频率
深度睡眠模式唤醒
利用比较器的以下两个特性:
可以将MCU从深度睡眠模式唤醒,只需要在使能CMP的基础上,将EXINT线配置为中断或事件模式即可。需要注意的是在退出深度睡眠模式后需要重新配置系统时钟,具体配置方法请参考BSP提供的example。
图5. 深度睡眠模式唤醒关于雅特力雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM Cortex-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM Cortex-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。
全部0条评论
快来发表一下你的评论吧 !