示例代码
示例代码帮助开发者快速理解并使用COMP驱动。
COMP实现内部参考电压与MSIO引脚电压值的比较
示例工程实现输入源和参考源电压值的比较,工程路径:SDK_Folder\projects\peripheral\comp。
示例工程流程图
COMP比较器实现输入源和参考源电压值的比较,输入源电压值为MSIO引脚外接电压值、参考源电压值可以是MSIO引脚外接电压值、电池电压和内部参考电压,当输出源电压大于参考源电压,中断产生。
示例设置COMP的模拟输入引脚MSIO0、选择内部参考电压,开启比较器,串口打印中断日志。
初始化参数
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(¶ms, 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(¶ms, 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]