Estoy trabajando en una solución de software que establece el Pin PC2 a "estado de reset" si mi señal de entrada (conectado a ADC) es superior a 2V.
Pruebo mi código con STM32 Studio para ver en tiempo real la salida digital de mi ADC.
Así es como he configurado el ADC1 :
hadc3.Instance = ADC1;
hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV6;
hadc3.Init.Resolution = ADC_RESOLUTION_12B;
hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc3.Init.EOCSelection = DISABLE;
hadc3.Init.LowPowerAutoWait = DISABLE;
hadc3.Init.ContinuousConvMode = ENABLE;
hadc3.Init.NbrOfConversion = 1;
hadc3.Init.DiscontinuousConvMode = DISABLE;
hadc3.Init.NbrOfDiscConversion = 0;
hadc3.Init.ExternalTrigConv = ADC_EXTERNALTRIG_T1_CC1;
hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc3.Init.DMAContinuousRequests = DISABLE;
hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;
hadc3.Init.OversamplingMode = DISABLE;
sConfig.Channel = ADC_CHANNEL_1;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
sConfig.SingleDiff = ADC_DIFFERENTIAL_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
Puedo recuperar correctamente el número de salida de mi ADC con DMA pero tengo un problema electrónico creo :
En Nucleo STM32L476-RG, los canales 1 y 2 del ADC1 están conectados a los pines PC0 y PC1.
Cuando conecto el pin PC1 a la STM32L4 GND y el pasador PC0 a la 3.3V puedo recuperar el 4095 valor del ADC, eso es bueno.
Pero, cuando conecto el pin PC0 à GND o un 0V fuente, el ADC debería devolverme 0 pero no lo hace, devuelve 1981 valor.
Para curriculum vitae :
Entrada de ADC1 : 3.3V | Salida de ADC1 : 4095 | Config : PC1 en GND ; PC0 en 3.3V
Entrada de ADC1 : 0V | Salida de ADC1 : 1981 | Config : PC1 en GND ; PC0 en 0V/GND
No sé por qué tengo este Offset. He leído la hoja de datos mil veces, STMicroElectronics menciona una referencia de 0V que se llama VSSA o VREF- pero no entiendo como conectar mis Pins.
Los únicos pines que utilizo son PC0 y PC1. ¿Debo conectar otros PIN a tierra o algo así? ¿Alguien ha tenido este problema antes?