В 7хх дма устроен немного не так.
Впрочем, я не навязываюсь.
Если найду , выложу ссылку на старый форум где это подробно обсуждалось.
Да я как бы тоже не утверждаю что сильно прав.
Но должно же быть какое то описание зачем другие таймеры привязываются к dma и как это все работает.
О, я вижу dma1 но к сожалению мой уровень знаний слаб и чего либо конструктивного сейчас выдать не смогу…,
И я тоже хочу это понять, поэтому слежу за Вашим обсуждением.
На след неделе постараюсь взять себя с руки и настроить через Калокуб, если взлетит, значит косяк именно в настройках через cmsis.
Удобная вещь, для начала познания stm32.
Две сильно полезные картинки, обьясняющие какой ДМА чем управляет - это Figure 1 на стр 36 и Figure 23 на стр 168
Из них следует, что ДМА1 и ДМА2 сильно не равнозначны. В частности к шине AHB (портам ввода вывода) имеет доступ только ДМА2. Это я прошел на собственной шкуре.
Фигачить по ДМА что-то в пины можно только через Таймер1
Что касается регистров таймеров - наверно я ошибаюсь.
Посмотрел картинки, да, разную типа периферию управляет, но это не отменяет вопроса что описывают таблички, в которых есть вся периферия, управляемая dma ![]()
прочитайте заголовок и потом найдите в даташите, что такое DMA request
И?
Не понимаю, ну запросы dma, дальше что?
Разьясните если знаете.
я уже обьяснял
это означает что сигналом запуска ДМА передачи является совпадение по каналу TIM2_CH3
Request - это запрос к шине ДМА на передачу данных. При этом запрос, исходящий от TIM2_CH3, может запускать передачу данных, никак не связанных с этим таймером.
Смотрите что получается, Tim досчитал до перезагрузки регистра переполнения, пнул dma, который положил в ccr2 новое значение счётчика pwm.
Так?
Ну допустим, сути то от этого не меняется, ну наоборот пинаются, но pwm то должен работать не на Tim1 как вы утверждаете ![]()
что вам ответить?
Я дважды писал, что это мое предположение, которое нужно проверять - в 367 и в 390
Как я понимаю любой таймер который может по событию Timer_UP запустить DMA можно использовать?
для чего использовать?
Спорно все, буду тестировать…
Для генерации ШИМ. DMA по каждому пинку шлёт из памяти в регистр таймера значение текущего ШИМ. К регистрам ног DMA обращаться не надо, ногами сам таймер управляет.
не все
Большая часть картины ясна ![]()
Вопрос только в одном - может ли ДМА1 писать регистры таймера2 ![]()
Вы утверждаете что да, я с утра говорил что нет ![]()
Скорее всего я ошибся, но это еще надо проверить ![]()
А зачем другой? Ты же свой родной таймер должен обслуживать. Кончился у него счётчик, апнулся таймер, по команде АП DMA кормит следующим значением.
