打印
[ZLG-ARM]

关于LPC2134

[复制链接]
1629|3
手机看帖
扫描二维码
随时随地手机跟帖
沙发
wuji2005| | 2008-6-2 13:37 | 只看该作者

没有过AD1

使用特权

评论回复
板凳
mindray100|  楼主 | 2008-6-3 09:27 | 只看该作者

???

楼上的啥意思? 2134手册里不是有两个AD(AD0和AD1)???

使用特权

评论回复
地板
lifangying| | 2008-6-4 15:50 | 只看该作者

两个AD

没问题,两个用法相同。
/***********************************************
名    称:Adc0Init()
功    能:初始化A/D转换器并读取转换结果。 
入口参数:要转换的通道号
出口参数:转换结果的数字量
***********************************************/
unsigned int Adc0(unsigned int channel)
{   
    unsigned int ret_adc;
    
    AD0CR = (1 << channel)                    |    //选择通道x
            ((Fpclk / 1000000 - 1) << 8)    |    //CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
            (0 << 16)                        |    //BURST=0,软件控制转换操作
            (0 << 17)                        |    //CLKS=0, 使用11clock转换
            (1 << 21)                        |      //PDN=1,正常工作模式
            (0 << 22)                        |      //TEST1:0=00,正常工作模式
            (1 << 24)                        |    //START=1,直接启动ADC转换
            (0 << 27);                             //直接启动ADC转换时,此位无效
    DelayNS();
    ret_adc = AD0DR;                            //读取ADC0结果,并清除DONE标志位

    AD0CR = (AD0CR&0x00FFFF00)|(1<<channel)|(1 << 24);//设置通道x,并进行第一次转换
    while( (AD0DR&0x80000000)==0 );                //等待转换结束

    AD0CR = AD0CR | (1 << 24);                    //再次启运转换
    while( (AD0DR&0x80000000)==0 );                //等待转换结束

    ret_adc = AD0DR;                            //读取ADC结果
    ret_adc = (ret_adc>>6) & 0x3FF;                //提取AD转换值

    return(ret_adc);
}
/***********************************************
名    称:Adc1Init()
功    能:初始化A/D转换器并读取转换结果。 
入口参数:要转换的通道号
出口参数:转换结果的数字量
***********************************************/
unsigned int Adc1(unsigned int channel)
{   
    unsigned int ret_adc;

    AD1CR = (1 << channel)                    |    //选择通道x
            ((Fpclk / 1000000 - 1) << 8)    |    //CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
            (0 << 16)                        |    //BURST=0,软件控制转换操作
            (0 << 17)                        |    //CLKS=0, 使用11clock转换
            (1 << 21)                        |      //PDN=1,正常工作模式
            (0 << 22)                        |      //TEST1:0=00,正常工作模式
            (1 << 24)                        |    //START=1,直接启动ADC转换
            (0 << 27);                             //直接启动ADC转换时,此位无效
    DelayNS();
    ret_adc = AD1DR;                            //读取ADC1结果,并清除DONE标志位

    AD1CR = (AD1CR&0x00FFFF00)|(1<<channel)|(1 << 24);//设置通道x,并进行第一次转换
    while( (AD1DR&0x80000000) == 0 );            //等待转换结束

    AD1CR = AD1CR | (1 << 24);                    //再次启运转换
    while( (AD1DR&0x80000000) == 0 );            //等待转换结束

    ret_adc = AD1DR;                            //读取ADC结果
    ret_adc = (ret_adc>>6) & 0x3FF;                //提取AD转换值

    return(ret_adc);
}

使用特权

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

本版积分规则

3

主题

12

帖子

0

粉丝