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

 
 
> 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
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 23)
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
stas00n
сообщение Jan 25 2018, 16:17
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 181
Регистрация: 26-11-10
Пользователь №: 61 198



Не спец по F4, даташит не читал, но в порядке выдвижения гипотезы: в Вашем кристалле TIM6 точно присутствует? Например, по опыту с F0 - TIM6, TIM7 - "редкие" таймеры, присутствуют только в "жирных" камнях, а в базовых и малоногих приходится довольствоваться TIM1,3,14,16,17. Может быть обращаетесь к не реализованному на данном кристалле таймеру?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 25 2018, 16:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #8


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

Группа: Свой
Сообщений: 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
jcxz
сообщение Jan 25 2018, 21:39
Сообщение #9


Гуру
******

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



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

А где в мануале STM32F4 можно найти табличку с уровнями приоритета разных bus-masters? Что-то я не нахожу такую, подскажите.
Да и интересно: CPU команду PUSH {R0-R12,LR} выполнит отдельными транзакциями через арбитра или одной burst-транзакцией? Если 2-е - тогда будет хуже.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 25 2018, 22:26
Сообщение #10


Гуру
******

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



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


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


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #12


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

Группа: Свой
Сообщений: 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
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 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
klen
сообщение Jan 30 2018, 05:38
Сообщение #14


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

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



Цитата(jcxz @ Jan 30 2018, 02:24) *
А какой практический смысл было городить такое, а не взять просто более подходящий МК с достаточным количеством аппаратных ШИМ-ов?
И сделать всё с характеристиками на порядок лучше, а не на уровне ардуины.

лучше что?
какой мк имеет 32 аппаратных канала шим?
в моем случае это самы подходящий вариант, дешево и быстро.
никаких ограничений на другие процессы не присутствуют, предположительно переферийная шина нагружена каждую 13 транзакцию, ahb каждую 52 (с 16 каналами)
это же не цап прецизионный, это балансир-зарядник, чем прще тем надежней. таймеры и процессор - это я экономлю для великих задач.
к стати, во время войны паровоз спасет промышленность.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jan 30 2018, 10:31
Сообщение #15


Гуру
******

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



Цитата(klen @ Jan 30 2018, 07:38) *
какой мк имеет 32 аппаратных канала шим?

А у Вас разве 32? 16 вроде wink.gif
Например Infineon XMC4500 или XMC4700 имеют по 8 продвинутых таймеров, в каждом таймере к регистру-счётчику привязаны по 2 compare-регистра, каждый compare - с двумя выводами на пины МК.
Т.е. - уже можно 16 двухтактных ШИМов сделать (а не однотактных как у Вас).
А ещё в каждом МК есть 16 простых таймеров, содержащих каждый по одному compare-регистру с одним выходом - это ещё 16 однотактных ШИМов.
И каждый работает на <= 120/144 МГц (а не 240кГц), имеет разрядность 16 бит (а не 5.5), имеют встроенное аппаратное дрожание (для размазывания спектра), имеют center-aligned режим ШИМа (а не только edge), продвинутые таймеры имеют кроме того аппаратный dead-time и много других фич.
И это всё - без всяких DMA и с полностью свободной шиной.

Поэтому мне и кажется Ваш выбор МК, для такой задачи, странным.

Цитата(klen @ Jan 30 2018, 07:38) *
никаких ограничений на другие процессы не присутствуют, предположительно переферийная шина нагружена каждую 13 транзакцию, ahb каждую 52 (с 16 каналами)

Это всё в теории. В таких системах где необходима жёсткая привязка работы к реалтайму, как показывает практика, добавлять что-то очень сложно - вдруг начинает рушиться работа этого реалтайма и начинает иногда сбоить. Несмотря на теоретические выкладки laughing.gif

PS: Вы мне так и не ответили на мой вопрос, где Вы смотрите таблицу приоритетов доступа к шине разных bus-мастеров для STM32F4? Я что-то не нашёл.... sad.gif
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 30 2018, 11:09
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #22


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

Группа: Свой
Сообщений: 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
jcxz
сообщение Jan 31 2018, 06:43
Сообщение #23


Гуру
******

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



Цитата(klen @ Jan 31 2018, 02:41) *
тогда все всерьез и переделывать на чем то вроде 1986ВЕ8Т

Тогда всё ясно laughing.gif
Когда вижу название какой-то отечественной комплектации, то это всё объясняет - понимаю, что пишет человек подневольный. И ему можно только посочувствовать. crying.gif
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Jan 31 2018, 06:46
Сообщение #24


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

Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072



Цитата(jcxz @ Jan 30 2018, 15:02) *
А за МК ТС-а сколько?


Тут, кроме стоимости, далеко не последнюю роль играет фактор "освоенности" МК. Сейчас периферия/архитектура настолько развесистая и сложная, что на написание и отладку HAL'a под свои задачи уходит весьма приличное время. STM32 не самая навороченная серия, но предлагает удачный баланс функциональность/стоимость и практически беззатратную миграцию внутри семейства (хотя перенос между семействами может быть не очень простым). Поэтому, несмотря на наличие интересных МК, приходится многие вещи решать в рамках изученных кристаллов, а новые осваивать только в случае необходимости или возможности.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:58
Рейтинг@Mail.ru


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