原创 ADuc7026-ADC(3)

2015-1-12 17:37 1185 17 17 分类: 消费电子

ADCSTA是一个ADC状态寄存器,也是八位。它指示ADC转换结果已完成。

ADCSTA寄存器只有一个位Bit0(ADCReady),表示ADC的转换状态。在一次ADC转换完成后该位置1,并且产生一个ADC中断。当读取ADCDATMMR时,该位自动清0。在ADC进行转换时, 也可以通过外部ADC BUSY 引脚读取ADC的工作状态。 在转换期间, 该引脚上为高电平; 当转换结束后, ADC BUSY引脚变为低电平。如果通过ADCCON寄存器使能,则可以在P0.5引脚输出ADC BUSY 的状态 (参见 “通用输入/输出” 部分) 。

ADCDAT为ADC数据结果的32位寄存器。里面存放12位ADC转换结果,其中高四位存放符号位,底16位保留,27~16保存的是12位ADC转换结果。(在全差分模式下,其结果是二进制补码格式。在伪差分模式和单端模式下,结果是标准二进制格式表示。)

ADCRST寄存器可以复位ADC的数字接口。通过向ADCRST中写入任意数据,可恢复所有ADC寄存器到默认值。

ADCOF是一个10位偏移校准寄存器。

那好,我们下面来编程调用ADC进行电压测量

上面介绍了那么多个寄存器,但其实在一般的场合只用配置其中几个个就可以了,并不是全部都需要用到,比如最简单的

#include

int main(void)

{

    int Result=0;   

    ADCCON = 0x20;//至少在开启电源5us之后再开始ADC转换

   Delay(5);     //5us短延时

   ADCCP = 0x00; //选择ADC0转换通道

    REFCON= 0x01;//使用内部基准源(建议使用内部基准源)

    ADCCON = 0x07E4;/*配置ADC的工作模式并开启ADC转换,

000 001 11 1 1 1 00 100  ADC的时钟速度为fADC/2、ADC采样时间为16个时钟、启动ADC转换、使能ADCBUSY、打开ADC电源、选择单端模式、选择连续转换*/

While(1)

{

    while (!ADCSTA);    //等待转换结束

    Result = ADCDAT>>16;//从数据结果寄存器中取出转换数据

    DisPlay(Result);    //通过串口或液晶显示转换结果

}

}

以上这个是比较简单的应用,除了这种之外,我们还可以用ADC来进行两个信号的比较或者平衡信号,比如全差分模式。我们还可以把ADuc7026的ADC配置成温度传感器,不过它只能测量芯片内部温度,无法用于进行外部温度测量。

     这里我只是简单介绍了ADuc7026内部集成的这个ADC的皮毛内容,有兴趣的可以买一块或者申请样片回去玩玩,撸完,收工

            上几张图,已经受不了JTAG接口,现在改用串口下程序,没想到串口下载也是波折,还是焊接问题,顶层镜像的时候母头插座忘了处理下,结果悲剧,焊反反了!!!!!只能重新拆了焊,板子到现在已经面目全非,哎,说多都是泪:Cry:






 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
17
关闭 站长推荐上一条 /2 下一条