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

 
 
> stm32f4 mem->dma->gpio.odr tim6, не понимаю природу косяка
klen
сообщение Jan 25 2018, 11:37
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Здравствуйте.
идея простая и проверенная.
тикаем таймером, он генерит запрос DMA по которому DMA перекладывает из циклического буфера данные в GPIO->ODR.
если взять TIM8 DMA2_stream1_chanal7 то все бодро работает и можно сделать например программный шим и много прочего полезного без вмешательств проца.
TIM8 жалко для тупого переполнения и генерации запроса DMA.
попробsвал на "дешевом" TIM6 и DMA1_stream1_chanal7 - DMA отваливается с выставлением флага transfer_error. то есть схема та же .. но не работает.
в документации четко написано что модуль DMA1 - не умеет работать если оба порта прикручивать к диапазону адресов памяти. оди обязательно в диапазоне переферии должен быть.
может gpio->odr "не совсем" переферия?

где я даташит недочитал?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Jan 25 2018, 11:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



GPIO сидит на шине AHB1, туда DMA1 не может дотянуться.
Можно схитрить. Например, у таймеров бывают режимы, которые позволяют управлять ногой CHx через регистр таймера.
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 25 2018, 13:49
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



>GPIO сидит на шине AHB1, туда DMA1 не может дотянуться.
Точно!!! я эти грабли уже получал, и забыл.

>Можно схитрить. Например, у таймеров бывают режимы, которые позволяют управлять ногой CHx через регистр таймера.
это да, но мне сразу 16 синхронных шимов надо сделать.

спасибо.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 25 2018, 16:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(klen @ Jan 25 2018, 15:49) *
это да, но мне сразу 16 синхронных шимов надо сделать.

А то что Ваш ШИМ будет иметь приличный джиттер - не смущает?
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 25 2018, 18:27
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(jcxz @ Jan 25 2018, 20:34) *
А то что Ваш ШИМ будет иметь приличный джиттер - не смущает?

То же люблю делать ШИМ черезтДМА.
Объясните по-русски что такое "джиттер"? Может колебания частоты?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 25 2018, 19:02
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(MiklPolikov @ Jan 25 2018, 20:27) *
То же люблю делать ШИМ черезтДМА.
Объясните по-русски что такое "джиттер"? Может колебания частоты?

У Вас DMA что делает? Пишет в регистры управления GPIO пинами? Чтобы импульсы ШИМ определённой длительности сгенерить?
А теперь подумайте, что будет если таймер выставил запрос обслуживания к DMA, а в этот момент CPU выполняет команду PUSH {R0-R12,LR} ?
Как изменится длительность импульса ШИМ?
А если работают ещё и другие bus-masters и они тоже к шине обращаются?
Вот тогда и получите джиттер - длительность импульсов ШИМа будет болтаться.
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 25 2018, 20:56
Сообщение #7


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(jcxz @ Jan 25 2018, 22:02) *
У Вас DMA что делает? Пишет в регистры управления GPIO пинами? Чтобы импульсы ШИМ определённой длительности сгенерить?
А теперь подумайте, что будет если таймер выставил запрос обслуживания к DMA, а в этот момент CPU выполняет команду PUSH {R0-R12,LR} ?
Как изменится длительность импульса ШИМ?
А если работают ещё и другие bus-masters и они тоже к шине обращаются?
Вот тогда и получите джиттер - длительность импульсов ШИМа будет болтаться.


приоритет на шине у DMA-стрима выставляем very-high. у CPU мастера ahb он аппаратно равен на один уровень ниже - high, так специально придумали чтобы DMA можно былобы пускать вперед (но есть ограничение - не перманентно, если перегрузить шину запросами мастера c приоритетом very-high то как я помню на 4 транзакции все равно процу дадут доступ на одну транзакцию.) поэтому PUSH {R0-R12,LR} страшен не сильно при наличии не перегруза ahb шины.

болтатся может - но в моем случае это не очень важно. точность такого шима приемлемая - главное требование - много штук одновременно.
закодю померю джиттер раскажу что получилось.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- klen   stm32f4 mem->dma->gpio.odr tim6   Jan 25 2018, 11:37
|- - jcxz   Цитата(klen @ Jan 25 2018, 22:56) приорит...   Jan 25 2018, 21:39
|- - MiklPolikov   Ага, по русски "джиттер" это "колеб...   Jan 25 2018, 22:26
|- - jcxz   Цитата(MiklPolikov @ Jan 26 2018, 00:26) ...   Jan 27 2018, 13:05
|- - klen   ну вобщем получилось. 240кГц, 50 отсчетов скважнос...   Jan 29 2018, 22:25
|- - jcxz   Цитата(klen @ Jan 30 2018, 00:25) 240кГц,...   Jan 29 2018, 23:24
|- - klen   Цитата(jcxz @ Jan 30 2018, 02:24) А какой...   Jan 30 2018, 05:38
||- - jcxz   Цитата(klen @ Jan 30 2018, 07:38) какой м...   Jan 30 2018, 10:31
|- - MiklPolikov   Цитата(jcxz @ Jan 30 2018, 02:24) Жесть к...   Jan 30 2018, 11:09
|- - jcxz   Цитата(MiklPolikov @ Jan 30 2018, 13:09) ...   Jan 30 2018, 11:29
|- - MiklPolikov   Цитата(jcxz @ Jan 30 2018, 14:29) У нас т...   Jan 30 2018, 11:36
|- - jcxz   Цитата(MiklPolikov @ Jan 30 2018, 13:36) ...   Jan 30 2018, 11:41
|- - MiklPolikov   Цитата(jcxz @ Jan 30 2018, 14:41) Я не сп...   Jan 30 2018, 11:56
|- - jcxz   Цитата(MiklPolikov @ Jan 30 2018, 13:56) ...   Jan 30 2018, 12:02
|- - klen   Цитата(jcxz @ Jan 30 2018, 15:02) Про деш...   Jan 31 2018, 00:41
||- - jcxz   Цитата(klen @ Jan 31 2018, 02:41) тогда в...   Jan 31 2018, 06:43
|- - halfdoom   Цитата(jcxz @ Jan 30 2018, 15:02) А за МК...   Jan 31 2018, 06:46
- - stas00n   Не спец по F4, даташит не читал, но в порядке выдв...   Jan 25 2018, 16:17


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

 


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


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