MSP430FR6972的Comparator E比较器模块的使用

        最近做一个拓扑识别模块用到了MSP430的比较器(Comparator E),这个比较器还是蛮好用的,支持多个参考,支持比较输出以及中断功能,还可以设置比较器输出高电平和输出低电平时的比较阈值(这功能真是太好用了,这样就能在我想要的波形位置触发中断,比如可以利用这功能在正弦波零点附近触发晶闸管的导通),以及内部自带一个电阻网络(比较器的比较阈值可以通过这个电阻网络设置成不同大小),还带有RC滤波输出功能。

        我在调试过程中一开始对这个电阻网络一直没搞清楚怎么使用,后来不断调试程序才慢慢懂得了他的作用,Comparator E的电阻网络有两个输出如下图1,VREF1, VREF0,这两个的值通过CEREF1和CEREF0来设置的,MSP430FR6972数据手册比较器部分提供了VREF1和VREF0的计算公式(VREFx=VIN*(n+1)/32)如下图2,里面的VIN就是CECTL2寄存器的CEREFLx位确认,注意要使用电阻网络需要正确配置CECTL2寄存器的CERSx位,VREF1的作用是当比较器由低到高的时候作为和输入的比较,VREF0的作用是当比较器由高到低的时候作为和输入的比较,但是实测发现不起作用不知道为什么,而且实测发现如果CEREF1和CEREF0的值设置不一样时输出会出现很多脉冲(如下图3)感觉是误触发了,但是不清楚为什么会产生。

程序代码如下:

/*
    此代码测试条件:在P1.0输入一个正弦波半波,连接到比较器的正输入,比较器的负输入接VREF1和VREF0(内部自动切换),P1.1作为比较器输出(当V+ > V-输出高电平,否则输出低电平)
 
 */

void MSP_Comparator_Init(void)
{
    /* 配置比较器输入输出引脚:P1.0信号输入,P1.1比较结果输出 */
    P1SEL1 |= BIT0 | BIT1;
    P1SEL0 |= BIT0;
    P1SEL0 &= ~BIT1;
    P1DIR |= BIT1;
    
    CECTL0 = CEIPEN | CEIPSEL_0;         /* 比较器V+接输入信号通道1,V-接内部参考 */
    CECTL1 = CEPWRMD_1;                  /* 低功耗模式:正常工作模式 */
    CECTL1 |= CEF+CEFDLY_3;              /* 开启RC滤波功能,滤波延时3600ns */
    CECTL1 |= CEIES;                     /* 下降沿触发中断 */
    CECTL2 = CEREFL_2 | CERS_2 | CERSEL; /* REF=2.0V, 使用内部参考(电阻网络打开), 参考接V- */
    CECTL2 |= CEREF0_7;                  /*  比较阈值0.5V */
    CECTL2 |= CEREF1_7;                  /*  比较阈值0.5V: 2.0*(7+1)/32=0.5 */
    
    
    CECTL3 = BIT0;                       /* 关闭输入缓冲功能 */
    CECTL1 |= CEON;                      /* 开启比较器 */
//    CEINT = CEIE;                      /* 开启比较器中断(下降沿触发) */
    Delay_Ms(10);                        /* 延时一会,不做也行 */
}

程序运行结果如下图4和图5,图4设置的比较阈值是0.5V,图5设置的阈值是1V,从结果来看和预期是符合的。

 

                                                                                 图1

                                                                                 图2

   

                                                                                       图3

 

                                                                                              图4

                                                                                               图5

 

                          

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值