Как стать автором
Обновить

Комментарии 44

НЛО прилетело и опубликовало эту надпись здесь
Для того чтобы это написать нужно пролистать 900 страниц reference manual'a и кучу профильных тем на форумах.
НЛО прилетело и опубликовало эту надпись здесь

что? описание таймеров на 900листах? незнаю что это за мануал но по содержанию rm0038 таймера 2-5 с 383 по 443 странички

Немного преувеличил. В любом случае для новичка это будет достаточно сложная задача.
НЛО прилетело и опубликовало эту надпись здесь
Включение таймеров последовательно — служит для других целей, но ни как не для «синхронизации»

Вот тут сейчас как-то сложно было. Источник тактовой частоты у таймеров конечно в каком-то смысле один, но если вы просто запустите сначала один таймер, а затем другой — то фронты у них разъедутся. И одновременно вы их не запустите, так как запуск двух таймеров требует записи в два разных регистра.
НЛО прилетело и опубликовало эту надпись здесь
Хотелось бы увидеть ваш пруф на это:
Фронты разъезжаются на китайских осциллографах до 100 тыс. руб., ибо синхронизация там просто убогая.

В описанном мной алгоритме при включении слейва
TIM_Cmd(TIM3, ENABLE);

Если в это время посмотреть на осциллограф не включая мастера на ножке ничего не будет. При включении мастера тактирование пойдет сразу на обе ножки без задержек.
НЛО прилетело и опубликовало эту надпись здесь
Это не велосипед, а пример синхронного запуска таймеров из reference manual, приложение A.8.19.

А автор-то молодец, утёр нос профессиональным инженерам))
НЛО прилетело и опубликовало эту надпись здесь
Илья, я давно вам хотел сказать одну штуку, только вы не обижайтесь. Вы когда узнаёте для себя что-то новое, то если вы прилюдно скажете «ничего себе, а я и не знал» — то никто за вами не будет бегать с криками «фулох, не знал, не знал, ахаха». Что в этой теме, что в прошлой дискуссии про вход BKIN — вы почему-то постоянно пытаетесь доказать, что «это не нужно» только на основании того, что вы эту фичу не использовали. Мы тут все общаемся для взаимного обмена опытом, автор поделился своим решением, совершенно штатным для данного микроконтроллера, если можете предложить лучшее решение — запостите свой пример кода, и мы оценим все преимущества и недостатки. А постоянно повторять «не можете нормально работать с документацией, можно решить в разы проще» — это неконструктивно.
НЛО прилетело и опубликовало эту надпись здесь
Тем более еще и показан способ, который реализован через изобретение велосипеда.

Я уже участвовал в этой дискуссии парой постов выше.
А можно еще раз пояснить.
Автор предлагает для синхронного пуска использовать связку мастер-слейв.
А вы что предлагаете? Я пока увидел только:
1. Забить на пару тактов синхронизации.
2. Сделать старт таймеров по событию.
Так?
НЛО прилетело и опубликовало эту надпись здесь
Не пойму, почему вы постоянно пишете про синхронизацию осциллографа. Синхронизация не имеет никакого отношения к оцифровке сигнала, её вообще можно выключить, нажать кнопку «стоп», и спокойно увидеть сдвиг фронтов. При скорости оцифровки 1-2Gs/s сдвиг даже на один такт будет прекрасно виден. А если вы включаете таймеры не кодом на ассемблере, то сразу начинается игра в «угадай, за сколько тактов выполнится эта строчка, если оптимизатор настроен на минимизацию размера кода».
НЛО прилетело и опубликовало эту надпись здесь
синхронизация самого осциллографа идет только по одному каналу, а второй соответственно отстает на собственную задержку осциллографа (обычно на время 1-го преобразования).

Вот тут я не понял. Всегда думал, что преобразования в цифровых осциллографах идут постоянно, независимо от синхронизации. Причем синхронно по всем каналам. А синхронизация просто задает позицию вывода на экран в в кольцевом буфере накопленных значений.
НЛО прилетело и опубликовало эту надпись здесь

У вас в коде используется SPL? Разве он уже не Deprecated?

Аккуратней — сейчас набегут противники HAL'а.

Так я сам ненавижу это поделие индусов, но ведь есть STM32 Low Level Library

Начал изучать SPL поэтому в нем и сделал. Столько споров кругом что и не поймешь что лучше…

Не, тут просто: если производителю стало лень нянчиться со своей же библиотекой периферии, это значит, что для новых МК этой библиотеки не будет вовсе, а на исправление косяков в старой никто не будет тратить время и силы.


Поэтому рекомендуют использовать самое крайнее, что есть. Ну, за исключением HAL (см. выше), его не стоит использовать ни в каком виде, кроме случая "побыстрому написать на коленке за пять минут", потому что для всего остального он отвратителен

Что же взять на вооружение начинающему, но пытливому embedded-программисту для освоения STM32?

Опять же, зависит от целей:


  1. Если вам надо нарисовать скетч "а-ля ардуино" за минимально возможное время и вам плевать на просадку по производительности/перерасход памяти/неэффективный и порой откровенно ужасный код библиотеки, то берете STM32 HAL
  2. Если вы полагаете, что эмбеддед — это что-то посерьезнее, чем "мигание лампочкой в цикле", то значит догадываетесь, что почти ни одна библиотека не спасет вас от необходимости изучать нижележащее железо, и лучше всего придумать синонимы для регистровых операций ближе к нативному языку. Это делает STM32 Low Level Library
  3. Если "проприетарные" поделки для вас — ничто, и подавай только хардкорный опенсорц, не взирая на возможные баги (впрочем они есть везде) — то для вас libopencm3. Upd: был полезен, пока не вышел пункт 2
  4. Если вы берете великомощный камень (типа STM32F429, STM32F7xx, i.MX RT 1020/1050), и не собираетесь заниматься на нем хард-реалтаймом, то можно взять какую-нибудь RTOS с собственной абстракцией от железа, к примеру NuttX.

Внимание — то, что чип заявлен в поддержке RTOS еще не гарантирует, что там реализовано буквально весь функционал камня, бывают и откровенно смешные недоработки. К примеру для TI Tiva C не было реализовано изменение baudrate для UART в рантайме. Патч занимал 40-50 строк, но пришлось писать и коммитить его в репозиторий)

НЛО прилетело и опубликовало эту надпись здесь

Ну я сейчас больше по С2000, нежели Cortex M, а там большая часть HAL — это просто Сишные структуры с битовыми полями, а компилятор застрял на С++03. Грустно, но что поделаешь, железо слишком крутое, чтобы из-за него перебираться на кортексы.

НЛО прилетело и опубликовало эту надпись здесь
Сходить на сайт st.com и посмотреть?
SPL поддерживается практически для всей линейки, ну разве кроме STM32F7xx
И для некоторых моделей МК, типа 303, SPL «зарыли» достаточно глубоко, и с размаху не видно. Но статус Active присутствует, и вроде как никто отменять не собирается…
НЛО прилетело и опубликовало эту надпись здесь
Официально объявлено о прекращении поддержки?
Безусловно, ST «соорудили» конвертер SPL в LL. Но, есть один «маленький» затык. Работа с USB только HAL… Да и как то не очень активно народ переползает с SPL на LL, ибо всё равно остаётся какая то часть «ручной» работы. Тогда уж взад на CMSIS. И легче портировать например на TI и ли NXP. ( б-р-р )
НЛО прилетело и опубликовало эту надпись здесь
На осциллографе вижу 104кГц, а сколько максимум?
Почему фронт сигнала неровный?
P.S. За статью спасибо (плюсов нет у меня).
Все зависит от источника тактирования. Если перейти на шину HSI с 16мГц, то при таких же настройках предделителя и периода будет 798кГц. В примере шина MSI с частотой 2.09Мгц. На максимум не пытался выходить.
Сигнал не ровный, потому что цеплял 2 крокодильчика от осциллографа на 1 ножку GND микроконтроллера.
P.S. рад что статья оказалась полезной.
У самого подобной задачи на STM32 ещё не было, но неужели там все на столько сложно!? У той же Xmega есть модуль Awex, который запускаешь и настраиваешь значение мертвого времени и частоту(для данного случая мертвое время было бы равно 0). Мне кажется либо есть вариант сделать проще, либо вы все усложняете.
НЛО прилетело и опубликовало эту надпись здесь
Не подскажите дельным советом? ШИМ, 3 моста (3-х фазный синус). Использую ДМА, пакетную передачу. Настроен сигнал BREAK, сигнал положительный. При подачи на ножку Брейка единицы происходить прерывание, но шим продолжает работать, что я сделал не так?
TIM1->DIER |= TIM_DIER_UDE | TIM_DIER_BIE;
НЛО прилетело и опубликовало эту надпись здесь
Этот осциллограф, судя по наличию USB-порта, умеет самостоятельно сохранять скриншоты экрана (и сами данные), в общем не нужно было мобилой его фоткать…
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за замечание, поправил
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории