登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

easyarm2200adc程序选ain2通道问题

作者:dingming6 栏目:ARM技术
easyarm2200adc程序选ain2通道问题
   PINSEL1 = 0x01400000;            // 设置P0.27、P0.28连接到AIN0、AIN1

   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转换)
   DelayNS(10);                 // 延时                
   ADC_Data = ADDR;             // 读取ADC结果,并清除DONE标志位

      ADCR = (ADCR&0xFFFFFF00)|0x01|(1 << 24);    // 切换通道并进行第一次转换
      while( (ADDR&0x80000000)==0 );            // 等待转换结束
      ADCR = ADCR | (1 << 24);                    // 再次启运转换
      while( (ADDR&0x80000000)==0 );
      ADC_Data = ADDR;                            // 读取ADC结果

现在改为连接AIN1、AIN2并先试AIN2
   PINSEL1 = 0x05000000;            // 设置P0.28、P0.29连接到AIN1、AIN2

   ADCR = (3 << 0)                     | // SEL = 3 ,选择通道2
          ((Fpclk / 4500000 - 1) << 8) | //CLKDIV=Fpclk / 4500000 - 1 即转换时钟为4.5MHZ
          (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转换)
   DelayNS(10);                 // 延时                
   ADC_Data = ADDR;             // 读取ADC结果,并清除DONE标志位

      ADCR = (ADCR&0xFFFFFF00)|0x03|(1 << 24);    // 切换通道并进行第一次转换
      while( (ADDR&0x80000000)==0 );            // 等待转换结束
      ADCR = ADCR | (1 << 24);                    // 再次启运转换
      while( (ADDR&0x80000000)==0 );
      ADC_Data = ADDR;                            // 读取ADC结果

反复试仍读到AIN0的值

2楼: >>参与讨论
l_zhongmin
AIN2通道设置错了
AIN2通道设置错了
ADCR = (ADCR&0xFFFFFF00)|0x04|(1 << 24);    

3楼: >>参与讨论
dingming6
多谢指教
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
发布ISP的简装版,没有晶振输入的毛病。
EasyARM2100用ISP固化程序后不能仿真的问题??
请问周工
再问 zlgARM
周公,lpc系列怎样上UCLINUX啊?
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号