请教ZLG公司及各位高手:我使用LPC2214,遇到以下问题,有相同经历的同志请指点: 硬件部分: 使用第20脚(P2.31)作为ADC5,输入的地方仅仅加入下拉电阻(4.7K);无其它电路,仅仅供测试使用。 软件部分: ADC代码初始化: 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); uiADCData = ADDR; // 读取ADC结果,并清除DONE标志位
使用ADC5(第20脚,P2.31): (1).ADCR = (ADCR&0x00FFFF00) | (1 << 5) | (1 << 24); // 设置通道1,并进行第一次转换 while( (ADDR&0x80000000)==0 ); // 等待转换结束 ADCR = ADCR | (1 << 24); // 再次启运转换 while( (ADDR&0x80000000)==0 ); // 等待转换结束
问题和现象:代码执行(1)(即:选通第20脚接ADC)后,第20脚有0.2V电压输出。一旦使用 其它管脚作为ADC时,第20脚电压变为0V。这样,直接导致0--0.2V不可测量。(所有的ADC脚都一样)
请教:我的ADC使用方法是否有误?谢谢! 芯片资料: NXP LPC2214FBD144 /00 CH5159 10 TSG0728B |