Команда LDR R0,[R1, #+0]; лежит уже в конвейере. До нее и после команд чтения и записи нет. За сколько тактов должна обработаться? За 2 или 3? процессор STM32G431.
Почему 2/3? LDR выполняется за 2 такта. Но за счёт спаривания, один такт может быть поглощён предыдущей командой. Раз не с кем спариваться, то в вашем случае на CM4 должно быть 2 такта.
PS: Но вообще (раз пошла пьянка борьба за такты), то может пора уже на асм переползать? Какими бы ни были умными си-компиляторы, но до мозгов кожаных мешков им пока ещё далеко. Хотя конечно - не про всех кожаных мешков речь...
А вот для выполнения расчётов выводил ядро на максимальные 12МГц (мегагерц). В МК на ARM очень гибкая система тактирования, позволяющая управлять частотой не только процессора, но и шин, и периферии. Если занимаетесь портативной техникой, то без этого никак не обойтись.
Только не так просто это делать, когда работает много периферии (а не только одно ядро). Разве, что делителем перед ядром можно порулить. (не знаю - есть ли в STM32G431 такой делитель, но во многих МК есть); оставляя частоту шин = const. Но вот только - каков будет эффект, если менять только частоту ядра, не меняя частот шин и прочего? заметный или ...?
И 2-й момент: Снижать потребление ядра можно 2-мя альтернативными путями: 1) понижением частоты; 2) оставляем частоту ядра прежней, но утилизируем неиспользуемые такты при помощи WFE или WFI. Какой способ даст бОльший выигрыш в мкА? Вопрос... А экономить при помощи WFE/WFI - проще. имхо.
Да, если подготовить в памяти массив и выводить с определенной скоростью. А так аккумулятор фазы требует сложения и сдвига. В прерывании проще поднять приоритет, хотя при наложении появится небольшой джиттер.
а оценивают по данным потребления периферии которые STM приводит в своей документации.
Реальная программа, с функцией энергосбережения, включает периферию только на необходимое время. Получается = включение/выключение тактирования может изменяться по весьма непредсказуемому закону. И довольно часто. И так - различной периферии. С наложением по времени включений/выключений разной периферии. Как оценить потребление "по документации" в таких условиях?
Как оценить потребление "по документации" в таких условиях?
Документация даёт оценку сверху потреблению МК. При случайном характере мощности потребления даже амперметр вам не даст ответа. Ответ даст только испытания в условиях, максимально приближенных к условиям эксплуатации.
При случайном характере мощности потребления даже амперметр вам не даст ответа.
Почему не даст? Конденсатор большой ёмкости и включаемся в цепь между источником и конденсатором (до нагрузки). Либо - амперметр, измеряющий с большой частотой сэмплирования (с накоплением/усреднением). А лучше: 1-е + 2-е.
Заголовок сообщения: Re: STM32 новичку в ARM что к чему
Добавлено: Пн сен 22, 2025 08:46:51
Первый раз сказал Мяу!
Зарегистрирован: Пн сен 15, 2025 08:43:23 Сообщений: 22
Рейтинг сообщения:0
JackSmith, прямо-таки полные аналоги? Т.е. код один-в-один (за исключением, понятное дело, настроек тактирования) можно перенести? Просто была у меня как-то "синяя таблетка" с CS32 вместо STM32. st-flash не распознал ее ID и послал лесом. Ну, я просто сдул феном эту дрянь, выбросил в мусорку, а вместо нее STM32F103C4T6 припаял.
APM32, GD32 есть в Keil. То-то изменено, то-то изменено (имена регистров и функций) и то-то отсутствует, но в приложениях ведут себя нормально. При выборе подходящей MK с DAP-Link, SEGGER обычно программируются из программы. APM32 напр. 100% совместим код (после компиляции), работает в обоих направлениях APM32 -> STM32 и STM32 -> APM32 (входы, выходы, таймеры, прерывания и т. д.). AT32 тоже есть. Спасибо за идею, попробуем.
Я вот долго искал дешевые МК с CAN на борту. Оказывается, дешевле 40-рублевых STM32F103C6T6 (как ни странно, C4T6 - дороже!) нет. Но вот там проблема: USB и CAN одновременно не работают, поэтому туда, где они вместе нужны, приходится или F0x2 брать, или вообще F303…
JackSmith, прямо-таки полные аналоги? Т.е. код один-в-один (за исключением, понятное дело, настроек тактирования) можно перенести?
нет конечно. ядра разные, флеш другой. про аналоги могу только сказать про stm32f103 и at32f403/at32f403A. там да, можно прошить пример с UART и настроеной системй тактирования от stm32f103 в at32f403(a) и это будет работать. но когда я взял пример с софтовым SPI, диаграмы на логическом анализаторе были разные. в at32f403А GPIO подключены к AHB, а регистры остались как на stm32f103.
JackSmith, у "аналогов" ещё же флэшка часто внешняя по отношению к кристаллу. Прямо бутерброд QSPI снаружи прилеплен. А на кристалле есть небольшой буфер ОЗУ, куда помещаются вектора и небольшие ISR. Там тайминги выполнения часто сильно разнятся, хотя частоты заявлены такие же или быстрее. На электрониксе вроде есть тема конкретного сравнения "аналогов" на практике с верификацией годности. А вот статья на хабре.
_________________ Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ Актуальность репозитория: 1 сентября 2025 года Если чего-то не хватает с сайта st.com - пишите, докачаю.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения