cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in single conversion mode in ADC

DivyaJayan
Associate III

Hi, 

While implementing a single conversion process for the Analog-to-Digital Converter (ADC) via register-level programming, the debugging phase yields a consistent output of zero, irrespective of the input. This anomaly persists even after the ADC input pin PC0 is alternated between a ground (GND) connection and a 3.3V supply, indicating no variation in the output value.

I am using Nucleo-L476RG evaluation board.

Please help.

Here is my code:

#define ADCEN (1U << 13) #define GPIOCEN (1U << 2) #define ADC_CH1 (1U << 6) #define ADC_SEQ_LEN_1 0x000 #define CR_ADEN (1U << 0) #define CR_ADSTART (1U << 2) #define ISR_EOC (1U << 2) #define CR_ADCAL (1U << 31) void pc0_adc1_init(){ RCC -> AHB2ENR |= GPIOCEN; GPIOC -> MODER |= (1U << 0); GPIOC -> MODER |= (1U << 1); RCC -> AHB2ENR |= ADCEN; ADC1 -> CR &= ~CR_ADEN; ADC1 -> CR |= CR_ADCAL; while(ADC1 -> CR & CR_ADCAL){} ADC1 -> SQR1 |= ADC_CH1; ADC1 -> SQR1 |= ADC_SEQ_LEN_1; ADC1 ->CR |= CR_ADEN; } void adc_conversion(void){ ADC1 -> CFGR |= CFGR_CONT; ADC1 -> CR |= CR_ADSTART; } uint32_t adc_read(void){ while(!(ADC1 -> ISR & ISR_EOC)){} return (ADC1 -> DR); } uint32_t sensor_value; int main(void){ pc0_adc1_init(); adc_conversion(); while(1){ sensor_value = adc_read(); } }
View more

 

Screenshot 2024-07-03 104049.png

 

0 REPLIES 0