chaoschin 发表于 2012-1-18 11:31:40

有谁用过Freescale的MC1322x系列的MCU

ADC部分不懂怎么读的。ADC_0取的模拟电压值,ADC1_VREFH 2.5V参考电压。
fifo读不到数据。。有点晕。。。

void AdcGpioInit()
{
Gpio_SetPinFunction(gGpioPin30_c, gGpioAlternate1Mode_c);
}

//setup and initial
void ADC_Setup(void)
{
AdcConfig_t sAdc_Config;
AdcConvCtrl_t adcConvCtrl;

Adc_Init();
AdcGpioInit();
Adc_Reset();

(void)Adc_SetFifoCtrl(FIFO_DEEP);

Adc_DefaultConfig(sAdc_Config, 24000);
sAdc_Config.adcMode = gAdcManualControl_c;//gAdcAutoControl_c;//
(void)Adc_SetConfig(&sAdc_Config);
   
Adc_TurnOn();
   
adcConvCtrl.adcTmrOn = TRUE;
adcConvCtrl.adcSeqIrqEn = FALSE;
adcConvCtrl.adcChannels = 0;
adcConvCtrl.adcRefVoltage = gAdcExtRefVoltage_c;//gAdcBatteryRefVoltage_c;
(void)Adc_SetConvCtrl(gAdcPrimary_c, &adcConvCtrl);
}

void change_adc_reference_voltage(AdcRefVoltage_t AdcRef)
{
AdcConvCtrl_t adcConvCtrl;
adcConvCtrl.adcRefVoltage = AdcRef;
(void)Adc_SetConvCtrl(gAdcPrimary_c, &adcConvCtrl);
}

// read
void ADC0_Value(uint16_t *adcVal)
{
    AdcFifoStatus_t fifoStatus;
    AdcFifoData_t adcFifoData;
    uint8_tadcFifoLevel;

//clear the fifo       
    do{ Adc_GetFifoStatus(&fifoStatus, &adcFifoLevel);
      if(gAdcFifoEmpty_c != fifoStatus)
      Adc_ReadFifoData(&adcFifoData);
      }while(gAdcFifoEmpty_c != fifoStatus);

    Adc_GetFifoStatus(&fifoStatus, &adcFifoLevel);
    if(gAdcFifoEmpty_c != fifoStatus)
    {
      Adc_ReadFifoData(&adcFifoData);
      if (gAdcChan0_c == adcFifoData.adcChannel)
      {
            *adcVal = adcFifoData.adcValue;
      }
    }

    return;
}

//ADC initial and read
void ADCfunc(void)
{
uint16_t adcval;
ADC_Setup();
change_adc_reference_voltage(gAdcExtRefVoltage_c);

ADC0_Value(&adcval);

}
页: [1]
查看完整版本: 有谁用过Freescale的MC1322x系列的MCU