реклама на сайте
подробности

 
 
> STM32F207 - таймеры и DMA, Как настроить DMA для таймеров
Gary_K
сообщение Oct 17 2013, 06:42
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 23-06-09
Из: Саратов
Пользователь №: 50 555



Доброго здоровья всем присутствующим! Помогите добрым советом...

На STM32F207 имеем спарку из двух таймеров - ведущий (TIM2) запускает ведомого (TIM9). Ведомый формирует импульс фиксированной длины в однократном режиме, меняя у ведущего ARR получаем частотно-импульсную модуляцию. Пока частота менялась раз в несколько миллисекунд задавал ARR из программы, теперь есть задача гораздо быстрей менять частоту по заданной таблице - решил использовать DMA. Настроил OC3 в TIM4 на выдачу запроса DMA со скоростью просмотра таблицы, в DMA1 зарядил Stream7/Channel_2 на выдачу данных таблицы в TIM2->ARR. Не заработало sad.gif. Хочется именно DMA, так как прерываний и так хватает (еще и FreeRTOS крутится), а темп выдачи значений достаточно шустрый - 50мкс. С ЦАП и I2C запустить DMA получилось без вопросов.

Вопрос: что я делаю не так и как надо делать правильно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SSerge
сообщение Oct 17 2013, 08:15
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



У таймера есть регистры TIMx_DCR и TIMx_DMAR, они специально сделаны для обновления прочих регистров таймера через DMA.
На F20x не проверял, а с F100 и F103 передача по DMA напрямую в регистры таймера тоже не заработала, а через TIMx_DMAR завелось.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Gary_K
сообщение Oct 17 2013, 10:12
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 23-06-09
Из: Саратов
Пользователь №: 50 555



Цитата(SSerge @ Oct 17 2013, 12:15) *
У таймера есть регистры TIMx_DCR и TIMx_DMAR, они специально сделаны для обновления прочих регистров таймера через DMA.
На F20x не проверял, а с F100 и F103 передача по DMA напрямую в регистры таймера тоже не заработала, а через TIMx_DMAR завелось.


То есть в TIM2->DCR надо задать 0x002C (одна пересылка/смещение ARR), а затем в настройках DMA указать адрес периферии TIM2->DMAR? Я все правильно понял?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01355 секунд с 7
ELECTRONIX ©2004-2016