打印
[资料分享与下载]

CMP简单功能实现

[复制链接]
673|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
史迪威将军|  楼主 | 2015-11-6 21:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, IO, pc, ADC, dc
本次所做实验为KL26Z的CPM功能,这个功能貌似被ADC里面的比较功能给覆盖了,但是ADC的比较功能只能是相应的两个AD通道,而CPM可以实现多通道进行比较,可以相互比较,也可以由自带的DAC产生基准电压与之比较,非常方便。

这次直接用到例程上的源程序,没有做更改,只是标注了一些地方。
#include "includes.h"

void gpioInit(void)                                             //配置需要点亮的LED的IO
{
    SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;                                
    PORTB_PCR18 |= (PORT_PCR_MUX(1) | PORT_PCR_DSE_MASK);              
    FGPIOB_PSOR |= 1<<18;                                            
    FGPIOB_PDDR |= 1<<18;                                               
}


void cmpInit(INT8U ucdacOut)
{
    SIM_SCGC4 |= SIM_SCGC4_CMP_MASK;                                    //使能时钟
    SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;                                 
        /*
     *  CMP DAC配置
     */
    CMP0_DACCR |= CMP_DACCR_DACEN_MASK | CMP_DACCR_VOSEL_MASK | CMP_DACCR_VOSEL(ucdacOut);
    PORTC_PCR6 |= PORT_PCR_MUX(0);                                 /* 这里并不是源程序所说的模拟输入,而是PTC6的默认配置(MUX(0))就是DMP0输入*/
    /*
     *  选择通道为CMP0和DA产生的通道7
     */
    CMP0_MUXCR |= CMP_MUXCR_PSTM_MASK | CMP_MUXCR_MSEL(7) | CMP_MUXCR_PSEL(0);
    CMP0_CR1 |=  CMP_CR1_COS_MASK | CMP_CR1_EN_MASK;                    /* 使能CMP为直通模式 */

}


BOOLEAN cmpOutput(void)
{
    if(CMP0_SCR & CMP_SCR_COUT_MASK) {                                  /* 判断CMP输出情况          */
        return 1;
    } else {
        return 0;
    }
}



void redLedSet(BOOLEAN bMode)                       //判断并决定LED现在应该是什么状态{
    if(bMode == True) {
        FGPIOB_PCOR |= 1<<18;                                          
    } else {
        FGPIOB_PSOR |= 1<<18;                                          
    }
}



int  main (void)
{
    INT8U ucdacOut = 1.50 * 64 / 2.90;                               //设置DA输出的值,即输入值与其比较(通道7)
    SystemCoreClockUpdate();
    gpioInit();                                                     
    cmpInit(ucdacOut);                                                
    while(1){
        redLedSet(cmpOutput());                                       
    };
}


相关帖子

沙发
FSL_TICS_ZJJ| | 2015-11-9 10:24 | 只看该作者
感谢楼主的代码分享!

使用特权

评论回复
板凳
perry_peng| | 2015-11-9 11:22 | 只看该作者
谢谢分享。

使用特权

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

本版积分规则

34

主题

291

帖子

0

粉丝