CMT2380F32模块开发18-模拟电压比较器例程

模拟电压比较器 VC 用于比较两个输入模拟电压的大小,并根据比较结果输出高/低电平。当“+”输入端电压高于“-”输入端电压时,电压比较器输出为高电平;当“+”输入端电压低于“-”输入端电压时,电压比较器输出为低电平。

内部集成的模拟电压比较器 VC 具有以下特性:
支持电压比较功能;
支持内部 64 阶 VCC 分压(使用分压来源电压需要大于 1.8V)
支持 8 个外部输入端口和片内 BGR 输出的参考电压作为电压比较器的输入;
支持三种软件可配置的中断触发方式:高电平触发/上升沿触发/下降沿触发;
电压比较器的输出可以作为 Base Timer 和 LPTimer 门控端口的输入;
电压比较器的输出可以作为 Advanced Timer 的刹车输入或者捕获输入;
支持在超低功耗模式下工作,电压比较器的中断输出可以将芯片从超低功耗模式下唤醒;
提供软件可配置的滤波时间以增强芯片的抗干扰能力。

电压比较器框架图

该图很明确的指出了每个比较器的输入端可以使用哪些。
滤波功能需要实际的开发中去慢慢调整了。 

例子给了三个,分别是上升沿、下降沿和电平触发。大同小异,只讲一个下降沿的就差不多了。

vc_detect_falling_irq

    Gpio_SetFunc_VC1_OUT_P32();  //配置VC输出口

    //配置IO为模拟IO口
    Gpio_SetAnalog(3, 3, TRUE);

    genChannel = VcChannel1;  //配置VC输入通道

    stcVcGeneralCfg.bDivEn = FALSE;  // 6位DAC不使能
    stcVcGeneralCfg.enDivVref = VcDivVrefAvcc;  //分压的参考电压为VCC
    stcVcGeneralCfg.u8DivVal = 0x3F;            //分压值为1

    stcVcChannelCfg.enVcChannel = genChannel;  // VC通道设置
    stcVcChannelCfg.enVcCmpDly = VcDelayoff;   //迟滞配置
    stcVcChannelCfg.enVcBiasCurrent = VcBias300na;
    stcVcChannelCfg.enVcFilterTime = VcFilter28800us;
    stcVcChannelCfg.enVcInPin_P = VcInPCh3; //P33
    stcVcChannelCfg.enVcInPin_N = AiBg1p2;
    stcVcChannelCfg.enVcOutConfig = VcOutDisable;
    stcVcChannelCfg.enVcIrqSel = VcIrqFall;
    stcVcChannelCfg.pfnAnalogCmpCb = VcIrqCallback;

    Vc_GeneralInit(&stcVcGeneralCfg);

    Vc_ChannelInit(genChannel, &stcVcChannelCfg);

    Vc_EnableFilter(genChannel);

    if (Ok != Vc_ConfigIrq(stcVcChannelCfg.enVcChannel, stcVcChannelCfg.enVcIrqSel)) {
        return 1;
    }

    if (Ok != Vc_EnableIrq(stcVcChannelCfg.enVcChannel)) {
        return 1;
    }

    if (Ok != Vc_EnableChannel(stcVcChannelCfg.enVcChannel)) {
        return 1;
    }

用一个变阻器链接到P33,作为比较器的P端,N端配置为1.2V基准电压,也就是当改变变阻器阻值造成下降时会触发中断。

void VcIrqCallback(void)
{
    boolean_t bPortVal;

    Vc_DisableIrq(genChannel);

    bPortVal = Gpio_GetIO(TEST_PORT, TEST_PIN);
    Gpio_SetIO(TEST_PORT, TEST_PIN, bPortVal ^ 1u);
    gu32Cnt++;
}

在中断中翻转LED1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值