打印
[ARM入门]

新手 关于LPC2103的AD转换的问题

[复制链接]
805|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
starpopular|  楼主 | 2015-6-26 15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"LPC2103.h"
#include"led.h"
#include "config.h"
#include <stdarg.h>
#define uchar unsigned char
#define uint unsigned int
uint32 ADC_Data;
uint32  ADC_Data,data,t,x,temp;


void    delay_50us(t)
{uint32 i;
for(;t>0;t--){
for(i=0;i<5000;i++);
}
}




/*void  UART0Init(uint32 bps)
{  
    uint16 Fdiv;
    PINSEL0 = (PINSEL0 & (~0x0F)) | 0x05;        // 不影响其它管脚连接,设置I/O连接到UART0
    U0LCR = 0x83;                                                        // DLAB = 1,可设置波特率
    Fdiv = (Fpclk / 16) / bps;                                // 设置波特率
    U0DLM = Fdiv / 256;                                                       
    U0DLL = Fdiv % 256;                                               
    U0LCR = 0x03;
}



void  UART0SendByte(uint8 data)
{  
    U0THR = data;                                                        // 发送数据
    while( (U0LSR&0x20)==0 );                                // 等待数据发送完毕
}




void  UART0SendStr(char *str)
{  
    while(1)
    {  
        if( *str == '\0' ) break;
        UART0SendByte(*str++);                                // 发送数据
    }
}

*/


uint32  read_ad(void)
{  


        PINSEL1=0x00003000;                          // 设置P0.27连接到AIN0
   



    ADCR = (1 << 0)                     |                // SEL = 1 ,选择通道0
           ((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);                                                        // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)
                                   // 再次启运转换
                // 等待转换结束
        ADC_Data = ADDR0;       
                                                // 读取ADC结果
        ADC_Data = (ADC_Data>>6) & 0x3FF;           // 提取AD转换值
        ADC_Data = ADC_Data * 3300/1024;            // 数值转换
      
  
                
      
               

        return(ADC_Data);
    }       


  
/*uint32 read_ad(void)
{uint32  adc_data;
PINSEL1 = PINSEL1|(3<<12);   //连接AD通道0                // Fpclk = 11.0592MHz 时 AD转换时钟为1.1MHz
ADCR = (1<<0)|        //选择通道0     
(0X0b<< 8)|      //转换时钟   
(0<<16)|     //BURST=0,软件控制转换操作   
(0<<17)|    //CLKS=0,使用11 clock转换   
(1<<21)|         //PDN=1.常方式   
(0<<22)|         //TEST1:0正=00,正常工作模式   
(1<<24)|         //设置直接启动模式      
(0<<27);                                                        // 读取ADC结果,并清除DONE标志位
   
while(1)
{ADCR|=1<<24;
delay_50us(10);
while((ADSTAT&(1<<5))==0);
adc_data=ADDR0;
adc_data=(adc_data*3300)/1024;
return adc_data;
}  
  }        */  


void __irq IRQ_Timer0 (void)
{

                    
     
   

T0IR = 0x01;            
VICVectAddr = 0x00;
}
  


  
  
  int  main ()   
  {  uint32 val;
                  
  IODIR = (1<<2);                                                // 定时器设置为0
T0PR   = 99;       // 设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03;      // 匹配通道0匹配中断并复位T0TC
T0MR0 = 110592;   // 比较值(1S定时一次)
T0TCR = 0x01;      //定时器计数器和预分频计数器使能
   
VICIntSelect = 0x00;    // 所有中断通道设置为IRQ中断
VICVectCntl0 = 0x20|0x04 ;   // 向量IRQ slot 使能 | 中断号  
VICVectAddr0 = (uint32)IRQ_Timer0; // 设置中断服务程序地址
VICIntEnable = 1 << 0x04;   // 使能定时器0中断
       
         while (1)
         {   read_ad();                 //读取通道0的结果   
        
         if(T0TC>ADC_Data)
                {
                        T0TC=0;
                }
                if(T0TC<ADC_Data/2)
                {        IOCLR =(0<<2);
                        IOSET =(1<<2);
                }
                else
                {        IOSET =(0<<2);
                        IOCLR =(1<<2);
                }
         };
    return 0;

     
  }
可以请教一下  为什么无法读出AD的值吗?
求高手解答

相关帖子

沙发
starpopular|  楼主 | 2015-6-26 16:01 | 只看该作者
注释部分不要了

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝