当前位置: 代码迷 >> 单片机 >> AD转换代码读不到数据,各位帮帮忙
  详细解决方案

AD转换代码读不到数据,各位帮帮忙

热度:86   发布时间:2016-04-28 16:09:37.0
AD转换代码读不到数据,各位帮帮忙~在线等
下面是我从书上改的AD转换代码,是为了将电池的看、状态反映出来。用P0.28和通道1进行转换的。但是读出来的数据却是0,请大虾们卡、你看错在哪了。谢谢了。 谢谢各位帮助了。 
 PINSEL0 =0x00000005; 
  PINSEL1 =1<<24; //

  AD0CR = (1<<1)|((Fpclk/1000000-1)<<8)|(0<<16)|(0<<17)|(1<<21)|(0<<22)|(1<<24)|(0<<27);
  Delay_NS(10);
  ADC_Data =AD0DR;
 
  AD0CR |=1<<24;
  while((AD0DR&0x80000000)==0);
  AD0CR |=1<<24;
  while((AD0DR&0x80000000)==0);//这条语句执行后ADC_Data = 0x81000000
  ADC_Data =AD0DR;
  ADC_Data =(ADC_Data>>6)&0x3ff;但是经过这里转换后变为0了。这是为什么?
  return ADC_Data;

------解决方案--------------------
ADC_Data = 0x81000000?
左移6位?
与0x3ff?
运算后肯定是0啊。你是不是要左移24位?

------解决方案--------------------
你在重新进行AD转换时也许应该先停一下吧
AD0CR &= 0xf8ffffff;
另外你的ADC的引脚是不是就是0呢
又或者你的ADC时钟打开了么
ADC_Data = 0x81000000
ADC_Data =(ADC_Data>>6)&0x3ff;
就是0啊,因为0x81000000右移6位是0x02400000, 在与0x3fff与当然是0了
  相关解决方案