zhuyi25762 发表于 2011-1-11 23:47:53

用过430 SD16的朋友请进帮忙看一下为什么我数据采集错误?

主要用来采信四个通道数据 0 差分数据,暂时没调,5 电池电压 6 内部温度传感器,7 偏置

我按我如下程序写:单独通道5 出现的是 38F5之后一直是8000
                  通道6   4F50    之后8000
                  通道7    FFF8    之后都是8000

而且数据很慢,四五秒才有一次数据采集过来


结果也和我计算出来的不一样,,,而且也只出现 一次值,,不知道哪设置错误,帮忙看下,主要部分




BCSCTL1 = CALBC1_1MHZ;   // Set DCO to 1MHz 校正数据
DCOCTL= CALDCO_1MHZ;   // 校正
BCSCTL1 |= DIVA_0;       // ACLK 不分频
BCSCTL2 = 0;             // MCLK = SMCLK = default DCO。
WDTCTL = WDT_ADLY_250;   // 看门狗配置选择定时模式,并选时钟源为ACLK,即定时时间为ACLK/32768(WDTISx=0)
    IE1 |= WDTIE;            // Enable WDT interrupt

/******************************************************************************
函 数:
      void Config_SD16(void)
功 能:
      基本参数配置
说 明:
      2013系列单通道转换,手动切换, 配置公共参数
*******************************************************************************/
void Config_SD16(void)
{
// SD16AE = SD16AE0+SD16AE1;           // 模拟输入允许  P1.0 A0+,P1.1 A1-
SD16CTL = SD16SSEL_1 + SD16DIV_1;   // SLCK=MCLK=1M   2分频 f=500KHz,OSR=1024,参考电源暂不开启,转换前开,转换后关。节能!
SD16CCTL0 = SD16DF + SD16OSR_1024 + SD16SNGL;// + SD16UNI // 输出格式为2的补码(8000--7FFF)+过采样速率1024+单次转换 双极性模式(默认模式)
SD16INCTL0 = SD16INTDLY_0;// + SD16GAIN_32 + SD16INCH_0;      // 中断延时(4第四次采样中断)+增益为x32+通道为0
}
/*******************************************************************************
函 数:
      Turn on_Sampling();   
功 能:
       打开参考电源,并启动AD转换
说 明:
       看门狗定时采集数据时打开
*******************************************************************************/
void Turn_on_Sampling(void)         
{
//SD16CTL |= (SD16VMIDON + SD16REFON); // 1.2V的参考电源。带缓冲器输出
SD16CTL |= SD16REFON;               // 只打开1.2V参考源
Delay_us(100);                     // 延时 300us 确保电路稳定。延时时间=(5x60+6)x1us=306us(MCLK=1Mhz)。
SD16CCTL0 |=(SD16SC + SD16IE);       // 启动 SD16 进行转换并且允许 SD16 中断。
}
/*******************************************************************************
函 数:
      Close_Sampling();   
功 能:
       关闭AD采集及相关电路的电源
说 明:

*******************************************************************************/
void Close_Sampling(void)   
{
SD16CCTL0 &= ~(SD16SC + SD16IE);      // SD16 停止转换及禁止中断。
//SD16CTL &= ~(SD16VMIDON + SD16REFON); // 关闭参考电压源并且缓冲器禁止。
}

/******************************************************************************
函数:
      void Choose_CH(uchar ch)
功 能:
      切换通道,根据通道不同配置不同的AD寄存器配置
说明:
         通道 5,        // Vcc          检测供电电压,采样电压为VCC/11,如果VCC<2.2 电量不足,参考电压1.2V,1倍增益
         通道 6,        // Temperature 检测内部温度传感器(二极管PN结温度)
         通道 7,        // offset       “+”和“-”之间的短路连接,可以用于校准SD16A的输入级补偿。
*******************************************************************************/
void Choose_CH(uchar ch)
{
SD16INCTL0 = SD16INTDLY_0 + SD16GAIN_1 + ch;// nterrupt Delay(4) Gain x1
SD16CCTL0 = SD16DF + SD16OSR_1024 + SD16SNGL;// + SD16UNI // 输出格式为2的补码(8000--7FFF)+过采样速率1024+单次转换 双极性模式(默认模式)
}


#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{

// Close_Sampling();         // SD16停止转换,禁止中断及关闭采集电路的电源。

   adc_last_val= SD16MEM0;                  // Store value
   LPM3; //回到低功耗模式
}

#pragma vector=WDT_VECTOR      
__interrupt void watchdog_timer(void)
{
   Turn_on_Sampling(); // 接通采集电路的电源启动采集。
   LPM3_EXIT;          //退出低功耗模式,在AD完成后重新开启
}

zhuyi25762 发表于 2011-1-12 12:24:16

自己顶

上整个个工程 24L01无线发射,这个还蛮好用的

帮忙改错啊兄弟们啊
点击此处下载 ourdev_610731PUHLXU.rar(文件大小:47K) (原文件名:MSP430_24L01.rar)

Autostep 发表于 2011-2-17 17:26:35

整得咋样了?

weif40423p 发表于 2011-5-31 10:32:43

mark
页: [1]
查看完整版本: 用过430 SD16的朋友请进帮忙看一下为什么我数据采集错误?