STM32CubeIDE - obsluha vice kanalu ADC
Pavel Kutina
hw na prelude.cz
Pondělí Listopad 1 15:57:31 CET 2021
Zdravím,
tak pořád nějak válčím s Cube a teď jsem se zaseknul zase trochu hlouběji:
Potřebuji měři na čtyřech kanálech ADC.
V klikátoru je mám nastavené na ADC1 (je to STM32L471VGT) jako ADC1_IN1 na
PC0 až ADC1_4 na PC4.
Rád bych vyčítal každý kanál "ručně", zatím nechci DMA, snažím se to
rozbíhat po kouskách a vzhledem k mým (ne)vědomostem začátečníka to chci
řešit postupně. Ale jak to nakonfigurovat?
V předgenerovaném kódu mám teď tohle, ale jak na jednotlivé kanály
přistupovat, resp. jak z nich číst? V DMA režimu to snad napadá do pole, do
kterého to vyčítám, ale bez DMA? Zjevně mi někde něco uniká, googlováním
jsem strávil podstatnou část odpoledne, buď nevím, co hledám, nebo to bez
DMA nejde?
V hlavní smyčce mám teď jenom tohle, ale rád bych nějaké hodnoty i do
ADCval2 ... 4
Díky za každé nasměrování.
Pavel Kutina
//------------------------------------------------------------------
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 0xFFFFFFFF);
ADCval1 = HAL_ADC_GetValue(&hadc1);
ADCval2 = ?
V inicializaci:
//------------------------------------------------------------------
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_1;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
sConfig.Channel = ADC_CHANNEL_2;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
sConfig.Channel = ADC_CHANNEL_3;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
sConfig.Channel = ADC_CHANNEL_4;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
Další informace o konferenci Hw-list