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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
pixar
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Чт ноя 29, 2012 08:27:22

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

Сообщение 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 не включается обратно на режим сканирования одного канала
и ДМА перебирает все три канала.

Кто нибудь что нибудь подскажет ?
Реклама
Galizin
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

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

Сообщение Galizin »

pixar писал(а):

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

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

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

ADC1->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL1);
?
Реклама
pixar
Потрогал лапой паяльник
Сообщения: 314
Зарегистрирован: Чт ноя 29, 2012 08:27:22

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

Сообщение pixar »

Именно этот косяк, приплыл копипастой из SPL. Спасибо.
Ответить

Вернуться в «ARM»