Страница 1 из 1

STM32F042 ADC переключать каналы на лету

Добавлено: Вт ноя 24, 2015 12:06:05
pixar
STM32F042 , используются три канала ADC: 0, 1 и 16.

На только первый канал ADC конфигурируется при старте ,
ADC запускается софтом по таймеру, считывается DMA в массив .

Хочется периодически добавлять измерения по каналам 0 и 16 , путём

ADC1->CHSELR |= (uint32_t)(ADC_CHSELR_CHSEL0|ADC_CHSELR_CHSEL16);

при этом в побочных каналах ADC запускается софтом два раза без таймера и без DMA,
и после чтения ADC переключается назад :

ADC1->CHSELR |= (uint32_t)(ADC_CHSELR_CHSEL1);

и как бы снова работает через таймер + ДМА .

Проблема - после первого переключения на каналы 0 и 16 ,
MUX не включается обратно на режим сканирования одного канала
и ДМА перебирает все три канала.

Кто нибудь что нибудь подскажет ?

Re: STM32F042 ADC переключать каналы на лету

Добавлено: Вт ноя 24, 2015 18:07:51
Galizin
pixar писал(а):

Код: Выделить всё

ADC1->CHSELR |= (uint32_t)(ADC_CHSELR_CHSEL1)
;
Заменить на

Код: Выделить всё

ADC1->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL1);
?

Re: STM32F042 ADC переключать каналы на лету

Добавлено: Ср ноя 25, 2015 06:32:40
pixar
Именно этот косяк, приплыл копипастой из SPL. Спасибо.