CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

示例代码

示例代码帮助开发者快速理解并使用COMP驱动。

COMP实现内部参考电压与MSIO引脚电压值的比较

示例工程实现输入源和参考源电压值的比较,工程路径:SDK_Folder\projects\peripheral\comp

示例工程流程图

COMP比较器实现输入源和参考源电压值的比较,输入源电压值为MSIO引脚外接电压值、参考源电压值可以是MSIO引脚外接电压值、电池电压和内部参考电压,当输出源电压大于参考源电压,中断产生。

示例设置COMP的模拟输入引脚MSIO0、选择内部参考电压,开启比较器,串口打印中断日志。

图 27 COMP实现电压比较流程图

初始化参数

app_comp_params_t params = {
    .pin_cfg = {
        .input = {
            .type = APP_IO_TYPE_MSIO,
            .mux  = APP_COMP_INPUT_PIN_MUX,
            .pin  = APP_COMP_INPUT_PIN,
        },
        .vref = {
            .type = APP_IO_TYPE_MSIO,
            .mux  = APP_COMP_VREF_PIN_MUX,
            .pin  = APP_COMP_VREF_PIN,
        },
    },
    .init = {
        .input_source = COMP_INPUT_SRC_IO0,
        .ref_source   = COMP_REF_SRC_VREF,
#if (APP_DRIVER_CHIP_TYPE == APP_DRIVER_GR551X)
        .ref_value    = 30,
#else
        .ref_value    = 120,
#endif
    },};
void comp_interrupt(void)
{
#if (APP_DRIVER_CHIP_TYPE != APP_DRIVER_GR551X)
    params.init.edge = COMP_WAKEUP_EDGE_BOTH;
#endif
    app_comp_init(&params, app_comp_event_handler);
    app_comp_start();
}
  • pin_cfg:引脚配置
    • pin_cfg.input:比较器输入引脚配置
    • pin_cfg.vref:比较器参考源引脚配置
  • init:COMP参数配置
    • init.input_source:输入源COMP_INPUT_SRC_IO0(选择MSIO0)
    • init.ref_source:参考源COMP_REF_SRC_VREF(选择内部参考电压)
    • init.ref_value:内部参考源档位,GR551x为30,其他芯片为120(GR551x参考电压:30*30 mV;其他:120*7.45 mV)
    • init.edge:触发方式LL_COMP_WAKEUP_EDGE_RISING(上升沿触发)

重要函数

  • 初始化函数
    app_comp_init(&params, app_comp_event_handler)
  • 开启比较器
    app_comp_start();

测试验证

连接开发板到PC端,打开串口助手,连接串口,查看串口日志,MSIO0输入大于参考电压的电压,查看中断是否触发。

以GR5526为例,参考电压约等于0.894 V,即(120*7.45 )mV,开启了正向和逆向迟滞,上升沿触发时,只有输入电压大于0.92 V会触发中断,即(0.894 + 0.026)mV。再次触发需要输入电压下降到小于0.868 V(0.894 – 0.026)之后,再上升到大于0.92 V才能继续触发上升沿中断,下降沿触发类似。用电源输出1.0 V的电压,接入MSIO0,打印日志如下:

[19:23:48.668] 
This example demo end.
[19:26:14.001] Comp is rising triggered.
[19:42:47.356] 

扫描关注

打开微信,使用“扫一扫”即可关注。