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 не включается обратно на режим сканирования одного канала
и ДМА перебирает все три канала.
Кто нибудь что нибудь подскажет ?
STM32F042 ADC переключать каналы на лету
- Реклама
Re: STM32F042 ADC переключать каналы на лету
Заменить наpixar писал(а):;Код: Выделить всё
ADC1->CHSELR |= (uint32_t)(ADC_CHSELR_CHSEL1)
Код: Выделить всё
ADC1->CHSELR = (uint32_t)(ADC_CHSELR_CHSEL1);Re: STM32F042 ADC переключать каналы на лету
Именно этот косяк, приплыл копипастой из SPL. Спасибо.
