2013-05-07 12:15 PM
Hi guys, im trying to use the ADC on my board, but i have a problem, after enable the ADC (ADON=1 ),i have to put ADONS=1 to start the convertion,and i dont know how!?,
i was reading the datasheet and tu put ADONS=1 is for hardware, really i need help.:( #discovery #board #incomplete #which-discovery-board? #adc #adc #discovery #board2013-05-07 01:44 PM
On which Discovery, with what chip? Figure around half a dozen different ones.
Pretty much all of them you need to light off once you have everything configured. /* Start ADC1 Software Conversion */ ADC_SoftwareStartConv(ADC1); Suggest you review the firmware library and example.2013-05-07 03:59 PM
the chip is STM32L152xD , check my code :)
ADC_CommonInitTypeDef ADC_CommonInitStructure; ADC_InitTypeDef ADC_InitStructure; LCD_Configuration(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); /*Inizializar valores por default*/ ADC_DeInit(ADC1); ADC_CommonStructInit(&ADC_CommonInitStructure); /*Configuracion del Prescaler*/ ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4; ADC_CommonInit(&ADC_CommonInitStructure); /*-Configuracion del ADC-*/ ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T2_CC2; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC1,&ADC_InitStructure); /* ADC1 regular channel 17 for VREF configuration */ ADC_RegularChannelConfig(ADC1, ADC_Channel_17, 1, ADC_SampleTime_192Cycles); ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_192Cycles); ADC_TempSensorVrefintCmd(ENABLE); ADC_ContinuousModeCmd(ADC1, ENABLE); ADC_PowerDownCmd(ADC1, ADC_PowerDown_Idle_Delay, ENABLE); /*Inicializar en ADC*/ ADC_Cmd(ADC1,ENABLE); /* Wait until ADC1 ON status */ while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESET) { } ADC_SoftwareStartConv(ADC1); while (1) { prueba=0; prueba|=ADC_GetConversionValue(ADC1); Print_LCD(prueba); Delay_ms(500); }2013-05-07 05:21 PM
Make sure to enable HSI prior to enabling the ADC clock on the APB
/* Enable the HSI */ RCC_HSICmd(ENABLE); /* Wait until HSI oscillator is ready */ while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); Decide which of the channels, 16 or 17, you want to be sampling, as you've set it up for just 1 channel, then try and define 2.2013-05-07 06:12 PM
jajajaj thats right man!!, i forget the HSI , now works!!! ,Thanks man !!! ;)
2013-05-08 10:27 PM
Hello again man, i have a problem :when i enable the Vefint the register no change i can see the register in debug mode, i check the code and is fine i dont know what happends! and is the same for de prescaler :s