|
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_t adcFifoLevel;
//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);
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|