CC2530AD采集,采集不到数据,求指教

2019-07-18 14:22发布

本帖最后由 ssjzj 于 2017-6-9 14:25 编辑

void ADCInit(void)
{
P0SEL|=0X01;
  APCFG|=0x01;//设置P0_0为模拟量输入

   // P0SEL|=0X07;
// APCFG|=0x07;//设置P0_7为模拟量输入
  //ADCCON1=0x33;//启动选择为定时器1通道0比较事件
  //ADCCON2=0x60;//AIN7引脚电压作为外部参考电压;256抽取率,10位数字有效位
  //
    //ADCH&=0X00;//?清EOC标志???
    ADCCON3=0xb0;//?单次转换,参考电压为,对AIN1进行A/D转换,12位分辨率?P0.7??
     ADCCON1=0X33;//
     ADCCON1|=0X40;//启动ad
   while(!(ADCCON1 & 0x80)); //等待转换结束
   //ADCCON1|=0X80
  //ADCIF=0;//清AD中断标志
value = ADCL>>4;//程序中设置的是12bit的精度,取低4位值
value |= ADCH<<4; //高八位值
//
ADCValue[gNum] = value;//此处有疑问,本来是12bit的精度,除数应该是4096的,但是得用2048才能得到准确的值

  //ADCValue[gNum]=(float)(value/(float)2048)*3.3;   
  gNum++;
  Cal_Loop=1;*系统初始化*/
void Initial()
{
   CLKCONCMD = 0x28;           //时器计数时钟设定为1M Hz,  系统时钟设定为32 MHz   
    while(CLKCONSTA & 0x40);    //等晶振稳定

  /*配置IO口*/
  P1DIR|=0x07;//设置P1_0与P1_1为输出作为LED,分别作为无线通讯与程序刷新指示
// P1DIR|=0x04;//设置P1_2为看门狗WDI
  /*ADC初始化*/
// ADCInit();
}
void main()
{

uchar i;
  uchar*data;
  Initial();
  RfInit();
// TIME1CH0Init();
  TIME3CH0Init();
  LED_WX=1;
  while(1)
  {
  FeedDogs();
for(i=0;i<64;i++)
{
   ADCInit();
  //average +=value;  
   }  
  Ai_Calc();
  RfAppendTxBuf(data,Sendnum);


  }
}
void Ai_Calc(void)
{
    uint i;
    //float ppp_1;

    if(Cal_Loop)
    {
        Move_Flag=FALSE;
        Cal_Loop=FALSE;
         Fft64_Base2(ADCValue,AD_Ia);
        for(i=0;i<3;i++)
        {
            F_Ia=AD_Ia;
        }
        corval=currentcor/
AD_Ia;
         F_Ia=
AD_Ia*corval;
          for(i=AVAGE_NUM-1;i>=1;i--)
        {   
            P_Ia_1=P_Ia_1[i-1];


        }

        P_Ia_1[AI_EFF_VAL]=F_Ia_1[AI_EFF_VAL];

        ppp_1[0]=P_Ia_1[0]+P_Ia_1[1]+P_Ia_1[2];

        Ia_1=ppp_1[0]/AVAGENUM;


        DisADval=(uint)Ia_1;

        Move_Flag=TURE;
    }
}



这是ad的配置,怎么采集不到数据,求指教


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
ssjzj
1楼-- · 2019-07-18 15:16
大神们求指教啊 !

一周热门 更多>