Estoy trabajando en una solución de software que configura el Pin PC2 para "restablecer el estado" si mi señal de entrada (conectada a ADC) está por encima de 2V.
Estoy probando mi código con STM32 Studio para ver en tiempo real la salida digital de mi ADC.
Aquí es cómo configuré 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 creo que tengo un problema electrónico:
En Nucleo STM32L476-RG, el Canal 1 de ADC1 & 2 están conectados al pin PC0 y PC1.
Cuando conecto el pin PC1 al STM32L4 GND y el pin PC0 al 3.3V , puedo recuperar el valor 4095 del ADC, eso es bueno.
Pero, cuando conecto el pin PC0 a GND o una fuente 0V , el ADC debería devolverme 0 valor pero no lo hace, devuelve valor 1981 .
Para reanudar:
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 miles de veces, STMicroElectronics menciona una referencia de 0V que se llama VSSA o VREF- pero no entiendo cómo conectar mis Pins.
Los únicos pines que uso son el PC0 y el PC1. ¿Debo conectar otro PIN a una conexión a tierra o algo? Alguien tuvo este problema antes?