We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi i dont know how use ADC. I have very strange readings: On Vref: http://i.imgur.com/6eHe2k5.png (chanel17) On PA1: http://i.imgur.com/ZtxtBVF.png (chanel1) My code:
int main(void) { SysTick_Config(SystemCoreClock/1000); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1ENR_GPIOAEN ,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); GPIO_InitTypeDef gpio; gpio.GPIO_Pin = GPIO_Pin_1; gpio.GPIO_Mode=GPIO_Mode_AN; gpio.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA,&gpio); RCC_PCLK1Config(RCC_HCLK_Div8); ADC_InitTypeDef ADC_InitStructure; ADC_StructInit(&ADC_InitStructure); ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfConversion = 1; ADC_Init(ADC1,&ADC_InitStructure); ADC_RegularChannelConfig(ADC1,ADC_Channel_17,1,ADC_SampleTime_15Cycles); ADC_TempSensorVrefintCmd(ENABLE); ADC_Cmd(ADC1,ENABLE); setup_USART2(); USART_puts(USART2,"Pomiar napiecia\r\n"); uint16_t adc; while (1) { ADC_RegularChannelConfig(ADC1,ADC_Channel_17,1,ADC_SampleTime_15Cycles); ADC_SoftwareStartConv(ADC1); while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)!= SET ); adc = ADC_GetConversionValue(ADC1); printf("%.6fV\r\n",adc*3.3f/4096.0f); Delay(50); } return 0; }
I know that the code is not the best. But I wanted something that works, and no matter what I do the results are not accurate.
I try find on google but nothing.