打印
[APM32F4]

APM32F411的COMP模块使用随笔

[复制链接]
631|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cx1524|  楼主 | 2024-2-6 16:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
# APM32F411的COMP模块使用随笔

在嵌入式系统中COMP(比较器模块)是一种常见的硬件模块,其一般有一个同相输入端、一个反相输入端和一个输出端,主要功能为比较同相反相输入,并在输出端进行输出比较结果。

## APM32F411的COMP模块介绍

APM32F411中共有两个COMP(COMP1和COMP2)。根据参考手册描述,COMP1支持在超低功耗模式下运行;COMP2支持轨对轨输入(即输入电压范围为芯片的最小负电压至最大电压),速度可调节。这两个COMP还可以融合成一个窗口比较器使用。COMP模块的输出还可以控制是否反相。
实际上COMP模块在低功耗模式下的运行功能暂无用处,因为APM32F411中COMP没办法将MCU从低功耗模式中唤醒。

COMP模块是没有单独的时钟使能位,其是挂载在SYSCFG模块时钟上的,在使用时需要注意使能SYSCFG时钟。

COMP模块的输入引脚需要被配置为模拟输入模式,依据1.4版本的APM32F4XX_SDK中的API,以COMP2的同相输入引脚PC2为例,GPIO的参考配置代码如下:
void GpioInit(void)
{
    GPIO_Config_T gpio;

    RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOC);

    gpio.mode = GPIO_MODE_AN;
    gpio.speed = GPIO_SPEED_50MHz;
    gpio.pupd = GPIO_PUPD_NOPULL;
    gpio.pin = GPIO_PIN_2;
    GPIO_Config(GPIOC, &gpio);
}

附上结构框图:


从框图看来,COMP1的同相输入固定为PC0,但在作为窗口比较器时会与COMP2的同相输入端短路,COMP1的反相输入可选择PC1或是参考电压VREFINT;
而COMP2的同相输入固定为PC1,反向输入可选PC3、参考电压VREFINT或是参考电压的1/4、1/2、3/4。

## APM32F411的COMP模块使用

APM32F411的COMP模块只能与定时器模块配合使用,COMP模块的输出可以定向到定时器上,作为高级定时器的刹车信号控制PWM输出,或是作为定时器的输入捕获信号计算超过阈值电压的频率和脉宽,又或是作为计数器的外部时钟源信号使用。
OUTVAL表示的是COMP的输出状态,可在COMP的状态控制寄存器中查看,但无法在IO上体现。

在使用时会出现的一些细节:

  • COMP模块的输出在作为高级定时器的刹车信号时,当同相输入信号大于反相输入信号时,COMP输出逻辑电平1,定时器接收到刹车信号,停止PWM输出;当同相信号小于反相信号时,COMP输出恢复逻辑电平0,定时器将在下一次时钟更新时恢复PWM输出。

  • COMP模块输出在作为定时器外部时钟源信号时,需要开启定时器的从模式功能,并将触发输入信号配置为外部输入触发



COMP结构框图.png (37.14 KB )

COMP结构框图.png

使用特权

评论回复
沙发
AdaMaYun| | 2024-3-6 09:45 | 只看该作者
COMP模块的输入引脚需要被配置为模拟输入模式,依据1.4版本的APM32F4XX_SDK中的API

使用特权

评论回复
板凳
LOVEEVER| | 2024-3-9 17:26 | 只看该作者
COMP1支持在超低功耗模式下运行;COMP2支持轨对轨输入(即输入电压范围为芯片的最小负电压至最大电压),速度可调节

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

7

帖子

0

粉丝