Quiero usar ADC multicanal con el STM32F4, así que quiero leer dos señales de CA diferentes en dos pines / canales diferentes. Un valor de señal de CA se debe almacenar en ADCConvertedValue [0] y el otro en ADCConvertedValue [1].
El problema es que ambos pines almacenan su valor en ADCConvertedValue [0]. Me salté el código de inicialización y puse la parte importante a continuación. ¿Alguien ve el problema?
__IO uint16_t ADCConvertedValue[2];
ADC_HandleTypeDef AdcHandle;
AdcHandle.Instance = ADC2;
AdcHandle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4;
AdcHandle.Init.Resolution = ADC_RESOLUTION_12B;
AdcHandle.Init.ScanConvMode = ENABLE;
AdcHandle.Init.ContinuousConvMode = ENABLE;
AdcHandle.Init.DiscontinuousConvMode = DISABLE;
AdcHandle.Init.NbrOfDiscConversion = 0;
AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
AdcHandle.Init.NbrOfConversion = 2;
AdcHandle.Init.DMAContinuousRequests = ENABLE;
AdcHandle.Init.EOCSelection = EOC_SEQ_CONV;
sConfig.Channel = ADC_CHANNEL_1;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES;
if (HAL_ADC_ConfigChannel(&AdcHandle, &sConfig) != HAL_OK)
{
Error_Handler();
}
sConfig.Channel = ADC_CHANNEL_2;
sConfig.Rank = 2;
if (HAL_ADC_ConfigChannel(&AdcHandle, &sConfig) != HAL_OK)
{
Error_Handler();
}
if(HAL_ADC_Start_DMA(&AdcHandle, (uint32_t*)&ADCConvertedValue, 2) != HAL_OK)
{
Error_Handler();
}