// 初始化程序
void ADC_Init(void)
{
// ÅäÖö˿ÚʱÖÓ£¬ÐèÒª¸ù¾Ý²»Í¬µÄÓ¦ÓÃÐÞ¸Ä
GPIO_PortClockEnable(MKL_GPIOB); // AD8 PTB0
GPIO_PortClockEnable(MKL_GPIOE); // DAD0 DAD3 AD4b PTE20¡¢PTE21 PTE22¡¢PTE23¡¢PTE29
ADC_ClockEnable(MKL_ADC0); // ADC0
GPIO_SetPinMuxControl(ADC_GPIO_PORT_1,ADC_GPIO_PinIndex_1,GPIO_MUX_CONTROL_ANALOG);
GPIO_SetPinMuxControl(ADC_GPIO_PORT_2,ADC_GPIO_PinIndex_2,GPIO_MUX_CONTROL_ANALOG);
GPIO_SetPinMuxControl(ADC_GPIO_PORT_3,ADC_GPIO_PinIndex_3,GPIO_MUX_CONTROL_ANALOG);
GPIO_SetPinMuxControl(ADC_GPIO_PORT_4,ADC_GPIO_PinIndex_4,GPIO_MUX_CONTROL_ANALOG);
GPIO_SetPinMuxControl(ADC_GPIO_PORT_5,ADC_GPIO_PinIndex_5,GPIO_MUX_CONTROL_ANALOG);
GPIO_SetPinMuxControl(ADC_GPIO_PORT_6,ADC_GPIO_PinIndex_6,GPIO_MUX_CONTROL_ANALOG);
ADC_Cal(); // У׼
// CFG ADCClock = BusClock / 2 = 12MHz
// µ±ÅäÖÃΪ16λʱ£¬ADC ʱÖÓ×îºÃ²»Òª³¬¹ý 10MHz£¬ÇÒ²»Ð¡ÓÚ 2MHz
ADC_InputClockSelect(ADC0,ADC_INPUT_CLOCK_BUS);
ADC_SetClockDiv(ADC0,ADC_CLOCK_DIV_2);
ADC_HighSpeedOperationEnable(ADC0,ADC_HIGH_SPEED_ENABLE);
ADC_ResolutionSet(ADC0,ADC_RESOLUTION_16_16);
// SC2
ADC_VrefSelect(ADC0,ADC_REFSEL_VREFH_VREFL); // ²Î¿¼µçѹ
ADC_SetConversionTriggerType(ADC0,ADC_SW_TRIGGER); // ´¥·¢Ä£Ê½
// SC3
ADC_SetContinuousMode(ADC0,ADC_ONE_CONVERSION);
ADC_SetAverageFunction(ADC0,ADC_32_SAMPLES_AVERAGED);
//ADC_SetChannel(ADC0,0,ADC_SINGLE_ENDED_TEMP_SENSOR);
}
|