kvandr 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 (изменено) · Жалоба Добрый день. Возникла проблема. В STM32F4 есть источник для DMA2, который называется TIM1_CH3. Какое событие при этом подразумевается для запуска транзакции DMA? Например TIM1_UP - это просто перезагрузка таймера. Для TIM1_CH3 перезагрузка таймера в режиме ШИМ на 3 канале не катит. Просветите, пожалуйста, по этому вопросу. Спасибо. Изменено 15 ноября, 2022 пользователем haker_fox Переименовал тему в более понятную. Переместил в раздел STM32. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Какое событие при этом подразумевается для запуска транзакции DMA?То событие, которое вызывает установку CC3IF. При этом еще должен быть разрешен третий канал, т.е. должен быть взведен CC3E. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kvandr 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба То событие, которое вызывает установку CC3IF. При этом еще должен быть разрешен третий канал, т.е. должен быть взведен CC3E. Будет ли работать эта система, если 3й канал сконфигурирован в режиме ШИМ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Будет ли работать эта система, если 3й канал сконфигурирован в режиме ШИМ?Будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kvandr 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Будет. TIM_SR_CC3IF устанавливается периодически в процессе работы таймера, я его отслеживаю и сбрасываю программно, но при этом декремента счетчика DMA NDTR не происходит. Странно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба TIM_SR_CC3IF устанавливается периодически в процессе работы таймера, я его отслеживаю и сбрасываю программно, но при этом декремента счетчика DMA NDTR не происходит. Показывайте содержимое регистров таймера и ПДП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 25 апреля, 2018 Опубликовано 25 апреля, 2018 · Жалоба Надо ещё в TIM3->DIER установить бит TIM_DIER_CC3DE, разрешить таймеру выдавать запросы к DMA. А ещё у STM32F4 есть еррата, "2.1.13 Delay after an RCC peripheral clock enabling". После включения тактирования нельзя сразу же обращаться к регистрам периферии, надо немного подождать. например так: RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; __DSB(); А то результат настройки периферии непредсказуем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kvandr 0 27 апреля, 2018 Опубликовано 27 апреля, 2018 · Жалоба Надо ещё в TIM3->DIER установить бит TIM_DIER_CC3DE, разрешить таймеру выдавать запросы к DMA. А ещё у STM32F4 есть еррата, "2.1.13 Delay after an RCC peripheral clock enabling". После включения тактирования нельзя сразу же обращаться к регистрам периферии, надо немного подождать. например так: RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; __DSB(); А то результат настройки периферии непредсказуем. Спасибо! TIM1->DIER |= TIM_DIER_CC3DE покатило. Почему не понадобилась та же опция для TIM1_UP - загадка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться