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

 
 
> 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
MiklPolikov
сообщение Jan 25 2018, 22:26
Сообщение #8


Гуру
******

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



Ага, по русски "джиттер" это "колебания периода".
Один раз видел, когда запустил DMA в режиме m2m , и он тупо занял всю системную шину.
Если по таймеру - то всё чётко.
Т.е. на практике проблемы нет.
И ШИМ через ДМА очень полезен, я таким образом динамическое управление цифровыми индикаторами делаю и много всего другого.


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


Гуру
******

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



Цитата(MiklPolikov @ Jan 26 2018, 00:26) *
Ага, по русски "джиттер" это "колебания периода".

Это не "колебания периода", а дрожание чего угодно. Кроме периода у цифрового сигнала есть и другие параметры, скважность например.
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 29 2018, 22:25
Сообщение #10


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

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



ну вобщем получилось.
240кГц, 50 отсчетов скважности, это примерно 5.6 битный цап. 16 каналов.
работает довольно дубово, то есть хорошо.
у меня предназначено для управления 16 ключами в зарядной станции. что бы все ключи не втыкались одновременно, фазы включения разнесены со сдвигом на 1/16 периода. частоту несущей меняю по псевтослучайному закону в близи 240кгц перегружая регистр аrr , это размазывает спектр помех и убирает пики гармоник.
проц учавствует в этом только когда нужно изменить скажности каналов.
и никаких прерываний.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 29 2018, 23:24
Сообщение #11


Гуру
******

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



Цитата(klen @ Jan 30 2018, 00:25) *
240кГц, 50 отсчетов скважности, это примерно 5.6 битный цап. 16 каналов.
работает довольно дубово, то есть хорошо.
у меня предназначено для управления 16 ключами в зарядной станции. что бы все ключи не втыкались одновременно, фазы включения разнесены со сдвигом на 1/16 периода. частоту несущей меняю по псевтослучайному закону в близи 240кгц перегружая регистр аrr , это размазывает спектр помех и убирает пики гармоник.
проц учавствует в этом только когда нужно изменить скажности каналов.
и никаких прерываний.

Жесть какая! Такой паровоз на квадратных колёсах. laughing.gif
Никаких прерываний, зато непрерывный DMA-поток и к тому же - накладывающий ограничения на другие процессы. У вас в устройстве больше ничего кроме этого паровоза нет?
А какой практический смысл было городить такое, а не взять просто более подходящий МК с достаточным количеством аппаратных ШИМ-ов?
И сделать всё с характеристиками на порядок лучше, а не на уровне ардуины.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 30 2018, 11:09
Сообщение #12


Гуру
******

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



Цитата(jcxz @ Jan 30 2018, 02:24) *
Жесть какая! Такой паровоз на квадратных колёсах. laughing.gif
Никаких прерываний, зато непрерывный DMA-поток и к тому же - накладывающий ограничения на другие процессы. У вас в устройстве больше ничего кроме этого паровоза нет?


ШИМ на ДМА- отличнейшее решение.
Подозреваю, что "паровоз на квадратных колёсах" как раз у jcxz: что это за риал-тайм процессы, требующие микросекундной точности, которые висят на МК ? Наверно на МК повешено то, что надо было делать аппаратно на дискретных элементах ?
Да и вообще, в любой большой программе с множеством процессов, с RTOS, риал-тайм сильно осложняется.


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


Гуру
******

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



Цитата(MiklPolikov @ Jan 30 2018, 13:09) *
ШИМ на ДМА- отличнейшее решение.

Отличнейшее??? Если для вас ардуино-подход - это отличнейшее решение, то больше говорить не о чём.
5.5 бит точность и 240 кГц да с кучей других минусов - это отличнейшее решение???
Это даже ШИМ-ом назвать можно только с большой натяжкой (непредсказуемая болтанка фронтов сигналов из-за джиттера, и гуляние выходного сигнала из-за этого и прочие прелести - да, это конечно отлично). laughing.gif

Цитата(MiklPolikov @ Jan 30 2018, 13:09) *
Подозреваю, что "паровоз на квадратных колёсах" как раз у jcxz: что это за риал-тайм процессы, требующие микросекундной точности, которые висят на МК ?

Что именно у меня "висит на МК"? С чего Вы вообще такое взяли?
У нас вообще-то на таком ШИМ-е висит управление 3-фазным PMSM-движком с мощностью до мегаватта в импульсе. Если бы такое повесили на "отличнейшее решение", то он при первом же пуске разлетелся бы на куски.
У нас тут проблемы с некорректным учётом длительности интервалов dead-time длительностью в пару мкс в расчётах векторного управления уже приводят к косякам на такой моще. Вот для того и нужна точность. И даже не микросекундная, а в сотни нсек.

Цитата(MiklPolikov @ Jan 30 2018, 13:09) *
Да и вообще, в любой большой программе с множеством процессов, с RTOS, риал-тайм сильно осложняется.

Это - да. А когда это множество процессов (с множеством периферии в них активируемой) начнёт накладываться по времени друг на друга, вот тогда обычно и начинаются всякие чудеса в самодельных паровозах слепленных из чего попало. biggrin.gif
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 30 2018, 11:36
Сообщение #14


Гуру
******

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



Цитата(jcxz @ Jan 30 2018, 14:29) *
У нас тут проблемы с некорректным учётом длительности интервалов dead-time длительностью в пару мкс в расчётах векторного управления уже приводят к косякам на такой моще. Вот для того и нужна точность. И даже не микросекундная, а в сотни нсек.


Мы обсуждаем разные задачи, спорить не о чем.


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


Гуру
******

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



Цитата(MiklPolikov @ Jan 30 2018, 13:36) *
Мы обсуждаем разные задачи, спорить не о чем.

Я не спорю. Просто не понятно почему выбран один из самых неудачных для такой задачи МК и восторги по поводу такого неудачного решения.
Сперва сделать кривой выбор, а потом героически преодолевать трудности, чтобы хоть что-то получить - здесь на форуме такое наблюдаешь сплошь и рядом.... laughing.gif
Это как под небоскрёб заложить фундамент из деревяшек, а потом всяческими ухищрениями и подпорками стараться его удержать, потратив на строительство в разы больше средств.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 30 2018, 11:56
Сообщение #16


Гуру
******

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



Цитата(jcxz @ Jan 30 2018, 14:41) *
Я не спорю. Просто не понятно почему выбран один из самых неудачных для такой задачи МК и восторги

Например потому что светодиодной мигалкой из 20 светодиодов должен управлять самый дешёвый проц STM32F0 в корпусе LQFP32.
Восторги от того, что на таком простом МК получилось сделать 20и канальный ШИМ.

Китай поднялся на однослойных платах без маски, с напаянными перемычками. Что бы на таких платах работали 1000-ваттные компьютерные блоки питания, кому-то пришлось героически преодолевать трудности.
Объясните им, что они не правы.

Одна из граней профессионализма- умение видеть компромисс между затратами и результатом.
В условиях капитализма "сделано на века, работает идеально" ни кому не надо. Надо "работает и конкурентноспособно"

Попробуйте-ка тут на форуме обсудить проект 1КВт AC/DC на однослойке, заодно задав вопрос про безопасные зазоры при отсутствии маски. biggrin.gif


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


Гуру
******

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



Цитата(MiklPolikov @ Jan 30 2018, 13:56) *
Например потому что светодиодной мигалкой из 20 светодиодов должен управлять самый дешёвый проц STM32F0 в корпусе LQFP32.
Восторги от того, что на таком простом МК получилось сделать 20и канальный ШИМ.

Про дешёвый - согласен. Но автор то говорит о STM32F4, а не STM32F0.
Правда он не указал какой конкретно STM32F4, чтобы можно было оценить верно.
За упомянутый мной XMC4500 (на котором всё это и на порядок больше делается легко и просто) в минимальной комплектации Компэл к примеру просит всего немного больше 6$.
А за МК ТС-а сколько?
Go to the top of the page
 
+Quote Post
klen
сообщение Jan 31 2018, 00:41
Сообщение #18


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

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



Цитата(jcxz @ Jan 30 2018, 15:02) *
Про дешёвый - согласен. Но автор то говорит о STM32F4, а не STM32F0.
Правда он не указал какой конкретно STM32F4, чтобы можно было оценить верно.
За упомянутый мной XMC4500 (на котором всё это и на порядок больше делается легко и просто) в минимальной комплектации Компэл к примеру просит всего немного больше 6$.
А за МК ТС-а сколько?


stm32f405 64ногий корпус
выбор уже был сделан до шимов. есть sdk, есть решения по обвязке, ест опыт, есть все, есть решаемые попутные задачи. нет только времени на не освоенные решения. к марту нужно выкатывать аппарат в поля. позже может уже не понадобится.
по моему опыту никаких проблем в задачах реального времени нет ни с FreeRTOS ни без - это вопрос архитектуры программки. например разработан 80 вольтовый векторный регулятор БКЭД, как раз с FreeRTOS.
и да! если это взлетит и покажет надежность заложенных решений ... тогда все всерьез и переделывать на чем то вроде 1986ВЕ8Т
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
|- - klen   Цитата(jcxz @ Jan 30 2018, 02:24) А какой...   Jan 30 2018, 05:38
||- - jcxz   Цитата(klen @ Jan 30 2018, 07:38) какой м...   Jan 30 2018, 10:31
||- - 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 Текстовая версия Сейчас: 18th July 2025 - 21:47
Рейтинг@Mail.ru


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