У производителей плат существует требование: делать отступ от края платы до меди как минимум 0.5мм. Для тех, кто работает в имперской метрической системе это 1/50 дюйма или 0.508мм. Если от внешнего края отступ мы легко задаем через Board outline clearance, то с внутренними отступами все немного сложнее. Несколько лет назад я выработал правило, которым пользуюсь по сей день, забирайте!
👍3
Стартовал цикл публикаций "CMSIS STM32" посвященный разработке супер быстрых, супер маленьких программ для STM32 на низком уровне. Для тех, кто пользуется HAL'ом очень давно и так же давно не до конца понимает, что происходит. https://ipasoft.info/index.php/articles/cmsis-stm32-urok-1-sozdanie-proekta
👍4
CMSIS STM32 Урок 2. Система тактирования https://ipasoft.info/index.php/articles/cmsis-stm32-urok-2-sistema-taktirovaniya
Когда вы работали с STM32 CubeMX вы быстро выставляли мышкой источник тактирования, выбирали делители для шин. Осмелюсь предположить, что вы могли тупо задать частоту HCLK и позволить кубу самостоятельно настроить за вас систему тактирования! Куб очень полезный и очень опасный инструмент, без него начинает казаться, что тактирование ручками настроить вообще не реально. Но это не так и вы в этом убедитесь, конечно же...
Когда вы работали с STM32 CubeMX вы быстро выставляли мышкой источник тактирования, выбирали делители для шин. Осмелюсь предположить, что вы могли тупо задать частоту HCLK и позволить кубу самостоятельно настроить за вас систему тактирования! Куб очень полезный и очень опасный инструмент, без него начинает казаться, что тактирование ручками настроить вообще не реально. Но это не так и вы в этом убедитесь, конечно же...
👍4
CMSIS STM32 Урок 3. Работа с GPIO https://ipasoft.info/index.php/articles/cmsis-stm32-urok-3-rabota-s-gpio
В этом уроке вы узнаете как настраивать порты ввода-вывода (General I/O Ports, GPIO) для написания супер быстрого и супер маленького кода. Научитесь устанавливать состояние выходов и читать состояние входов. А еще узнаете, как настроить все GPIO очень быстро и без ошибок. Используйте мои уроки для того, чтобы понимать, что вы делаете. Не отказывайтесь от CubeMX полностью. Он будет помогать вам сделать разработку еще быстрее. А знания разработки под CMSIS помогут сделать быстрее ваши программы.
В этом уроке вы узнаете как настраивать порты ввода-вывода (General I/O Ports, GPIO) для написания супер быстрого и супер маленького кода. Научитесь устанавливать состояние выходов и читать состояние входов. А еще узнаете, как настроить все GPIO очень быстро и без ошибок. Используйте мои уроки для того, чтобы понимать, что вы делаете. Не отказывайтесь от CubeMX полностью. Он будет помогать вам сделать разработку еще быстрее. А знания разработки под CMSIS помогут сделать быстрее ваши программы.
👍2
CMSIS STM32 Урок 4. Использование системного таймера SysTick
https://ipasoft.info/index.php/articles/cmsis-stm32-urok-4-ispolzovanie-sistemnogo-tajmera-systick
Помимо таймеров общего назначения, о которых я расскажу немного позже, в микроконтроллерах STM32 существует еще и таймер SysTick. Этот таймер уже встроен в ядро Cortex M3 и он может отсчитывать произвольное количество тактов и формировать прерывание по факту окончания счета. Так, например, если ядро работает на частоте 64 МГц, а значение Reload регистра 64000, то 1000 раз в секунду SysTick будет обнуляться. Счетный регистр 24-битный, это значит, что можно отсчитывать и достаточно большие интервалы времени, например, 100 мс (Reload reg = 6 400 000). Таймер очень удобен для формирования неблокирующих задержек. Даже в HAL'е он активно используется для отсчета задержек HAL_Delay(). Любопытный факт: ни в Datasheet, ни в Reference Manual для своего STM32 вы не найдете информацию по работе с SysTick. А здесь найдете!
https://ipasoft.info/index.php/articles/cmsis-stm32-urok-4-ispolzovanie-sistemnogo-tajmera-systick
Помимо таймеров общего назначения, о которых я расскажу немного позже, в микроконтроллерах STM32 существует еще и таймер SysTick. Этот таймер уже встроен в ядро Cortex M3 и он может отсчитывать произвольное количество тактов и формировать прерывание по факту окончания счета. Так, например, если ядро работает на частоте 64 МГц, а значение Reload регистра 64000, то 1000 раз в секунду SysTick будет обнуляться. Счетный регистр 24-битный, это значит, что можно отсчитывать и достаточно большие интервалы времени, например, 100 мс (Reload reg = 6 400 000). Таймер очень удобен для формирования неблокирующих задержек. Даже в HAL'е он активно используется для отсчета задержек HAL_Delay(). Любопытный факт: ни в Datasheet, ни в Reference Manual для своего STM32 вы не найдете информацию по работе с SysTick. А здесь найдете!
🔥2
CMSIS STM32 Урок 5. Работа с UART https://ipasoft.info/index.php/articles/cmsis-stm32-urok-5-rabota-s-uart
Старый добрый UART, сколько лет он уже существует? Только сама природа это помнит, тех древних мудрецов, которые упаковывали сообщения в асинхронные пакеты и отправляли по гудящим столбам сквозь пространство и время... И вот этот интерфейс дожил до наших дней, и, кстати, никуда уходить не собирается. Внутри STM32 уже есть периферия для работы с портами UART во всевозможных режимах, на разных скоростях. Моя задача - показать, насколько просто и экономично можно программировать этот интерфейс. Вооружайтесь до зубов USB свистками UART, это будет увлекательное путешествие...
Старый добрый UART, сколько лет он уже существует? Только сама природа это помнит, тех древних мудрецов, которые упаковывали сообщения в асинхронные пакеты и отправляли по гудящим столбам сквозь пространство и время... И вот этот интерфейс дожил до наших дней, и, кстати, никуда уходить не собирается. Внутри STM32 уже есть периферия для работы с портами UART во всевозможных режимах, на разных скоростях. Моя задача - показать, насколько просто и экономично можно программировать этот интерфейс. Вооружайтесь до зубов USB свистками UART, это будет увлекательное путешествие...
👍3
Если кто-то не знал, телеграм поддерживает Markdown и круто подсвечивает синтаксис. Нужно лишь в конце написать, что за язык используете. java, c, python, sql и т.п.
// Вернуть температуру ядра в градусах Цельсия
int16_t GetCoreTemperature(uint16_t adc) { //722
int32_t vSense = (vdda * (uint32_t)adc) / 4095U; // напряжение на канале измерения температуры
int16_t Temperature = (((1430U - vSense) * 1000U) / 4300U) + 25U;
return Temperature;
}
👍4
CMSIS STM32 Урок 6. Работа с шиной I2C в режиме Master
Это синхронная шина обмена данными в которой присутствует один Master (ведущий) и от одного до нескольких Slave (ведомых). Соединены все по трем проводам GND, SDA (данные), SCL (тактирование).
Конфигурирование периферии I2C начинается с разрешения ее тактирования, затем нужно настроить GPIO, к которым будет подключена I2C. В примере ниже, I2C1 расположена на PB7 (SDA) и PB6 (SCL). Оба этих пина настраиваются как Alternate output Open-Drain (CNF=11, MODE=11).
Далее я приведу пример настройки интерфейса I2C в режиме мастера на скорости 100 кГц. Данный режим будет использоваться мной для работы с EEPROM памятью серии 24Сxx.
https://ipasoft.info/index.php/articles/cmsis-stm32-urok-6-rabota-s-shinoj-i2c-v-rezhime-master
Это синхронная шина обмена данными в которой присутствует один Master (ведущий) и от одного до нескольких Slave (ведомых). Соединены все по трем проводам GND, SDA (данные), SCL (тактирование).
Конфигурирование периферии I2C начинается с разрешения ее тактирования, затем нужно настроить GPIO, к которым будет подключена I2C. В примере ниже, I2C1 расположена на PB7 (SDA) и PB6 (SCL). Оба этих пина настраиваются как Alternate output Open-Drain (CNF=11, MODE=11).
Далее я приведу пример настройки интерфейса I2C в режиме мастера на скорости 100 кГц. Данный режим будет использоваться мной для работы с EEPROM памятью серии 24Сxx.
https://ipasoft.info/index.php/articles/cmsis-stm32-urok-6-rabota-s-shinoj-i2c-v-rezhime-master
👍5
Огромный архив продуктов STMicroelectronics для STM32 (свежайшие кубы и библиотеки). Качайте пока есть https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
👍8
Как мы прошивали Attiny10
Казалось бы, что может быть знакомее старой доброй AVR? Она на начало 2025-го настолько уже мне была неинтересна, что я даже не подозревал как сильно она мне понадобится. А еще, меня обескуражило то, как это непросто и нетривиально: работать с ATTINY10. Эта история для вас будет поучительной, потому что задача решена и остается лишь взять наш опыт на вооружение. Здесь нет никаких революционных открытий, но все же я делаю упор на предоставление расширенной информации. То что мне не удавалось прочитать "между строк" где-то в одном месте, но пришлось собирать информацию по сети, проверять и конечно - делиться!
https://ipasoft.info/index.php/articles/kak-my-proshivali-attiny10
Казалось бы, что может быть знакомее старой доброй AVR? Она на начало 2025-го настолько уже мне была неинтересна, что я даже не подозревал как сильно она мне понадобится. А еще, меня обескуражило то, как это непросто и нетривиально: работать с ATTINY10. Эта история для вас будет поучительной, потому что задача решена и остается лишь взять наш опыт на вооружение. Здесь нет никаких революционных открытий, но все же я делаю упор на предоставление расширенной информации. То что мне не удавалось прочитать "между строк" где-то в одном месте, но пришлось собирать информацию по сети, проверять и конечно - делиться!
https://ipasoft.info/index.php/articles/kak-my-proshivali-attiny10
👍4👎1
Опубликован новый урок Базовая работа с ШИМ на CMSIS STM32 https://ipasoft.info/index.php/articles/cmsis-stm32-urok-7-rabota-s-shim-bazovaya
Широтно-импульсная модуляция в микроконтроллерах STM32F1 реализована через таймеры общего назначения TIM1, TIM2, TIM3. К каждому из этих таймеров можно «подцепить» до четырех выходных каналов. Принцип работы ШИМ (в режиме №1) очень прост:
Частота меандра на выходе зависит от периода счета, а скважность импульсов зависит от значения Capture-compare регистра.
В этом уроке мы задействуем аж 7 каналов ШИМ на разных таймерах..
Широтно-импульсная модуляция в микроконтроллерах STM32F1 реализована через таймеры общего назначения TIM1, TIM2, TIM3. К каждому из этих таймеров можно «подцепить» до четырех выходных каналов. Принцип работы ШИМ (в режиме №1) очень прост:
Частота меандра на выходе зависит от периода счета, а скважность импульсов зависит от значения Capture-compare регистра.
В этом уроке мы задействуем аж 7 каналов ШИМ на разных таймерах..
👍5👎1🔥1
Всем, кто пользуется Keil MDK ARM, моя коллекция паков https://cloud.as.life/s/9aabCC4qkSWMRzx
🔥4👍3👎1
Опубликован новый урок "CMSIS STM32. Использование АЦП" https://ipasoft.info/index.php/articles/cmsis-stm32-urok-8-ispolzovanie-atsp-bazovoe
..АЦП не может замерять напряжение на нескольких каналах одновременно. Между АЦП и каналами стоит мультиплексор, который может захватывать только один из десяти возможных каналов. Однако если измерять каналы быстро по очереди, то можно создать эффект параллельности измерений. Эффективно и достаточно точно значения измеряются при меньшей частоте работы АЦП и большем Sampleticks. Более-менее сносно можно делать около 18000 замеров (выборок) в секунду. Минимальное время выборки для 12-битного режима - 1 мкс (то есть до 1000000 выборок в секунду при тактовой частоте АЦП 14 МГц).
В этом уроке мы будем пользоваться АЦП STM32F103 в самом простом режиме — одиночной конверсии. Это когда за одно преобразование мы обрабатываем только один канал. В этом уроке я покажу неблокирующую работу с АЦП (без прерываний) на разных каналах.
👍4👎1🔥1
Как разрабатывать прошивки на STM32 в 2025 году https://ipasoft.info/index.php/articles/kak-razrabatyvat-proshivki-na-stm32-v-2025-godu
Когда вы давно занимаетесь разработкой прошивок и у вас сформировался некий костяк инструментария, то вы наверняка снабдили себя всеми необходимыми программами, или по крайней мере, знаете как снабдить. А если вы только что планируете освоить STM32, то совсем неочевидно как собрать весь софт для работы с нуля и как заставить его работать. Тут и там пишут, "чтобы скачать это, перейдите на страницу официального сайта и зарегистрируйтесь.." И тут, начинается настоящий квест с обходом блокировок, невозможностью обновлений репозитариев. Когда у вас нет людей, у которых вы можете что-то спросить, вы буквально вынуждены бросить любое обучение и дожидаться лучших времен. Однако я немножечко всем помогу, прямо в этой статье, расскажу куда идти, что качать. Этого хватит для учебы. На первое время..
Когда вы давно занимаетесь разработкой прошивок и у вас сформировался некий костяк инструментария, то вы наверняка снабдили себя всеми необходимыми программами, или по крайней мере, знаете как снабдить. А если вы только что планируете освоить STM32, то совсем неочевидно как собрать весь софт для работы с нуля и как заставить его работать. Тут и там пишут, "чтобы скачать это, перейдите на страницу официального сайта и зарегистрируйтесь.." И тут, начинается настоящий квест с обходом блокировок, невозможностью обновлений репозитариев. Когда у вас нет людей, у которых вы можете что-то спросить, вы буквально вынуждены бросить любое обучение и дожидаться лучших времен. Однако я немножечко всем помогу, прямо в этой статье, расскажу куда идти, что качать. Этого хватит для учебы. На первое время..
🔥3👍2👎1
CMSIS STM32 Урок 9. Использование IWDG https://ipasoft.info/index.php/articles/cmsis-stm32-urok-9-ispolzovanie-iwdg
«Не забывайте кормить собаку, иначе она начнет кусаться». В микроконтроллерах STM32 присутствует сторожевой таймер, так называемый Watch Dog. Полное название IWDG (Independent watchdog или независимый сторожевой таймер). Ваша программа должна то и дело обращаться к этому таймеру и пополнять его значение, это называется Feed Watchdog (покормить сторожевого пса), иначе контроллер перезапустится.
Ядро микроконтроллера тактируется одним из высокочастотных генераторов (HSI или HSE), часы реального времени тактируются низкочастотным генератором LSE, а сторожевой таймер тактируется независимым встроенным RC генератором на 40 кГц (LSI) через делитель частоты.
Это проверенная временем надежная система защиты устройства от зависания.
«Не забывайте кормить собаку, иначе она начнет кусаться». В микроконтроллерах STM32 присутствует сторожевой таймер, так называемый Watch Dog. Полное название IWDG (Independent watchdog или независимый сторожевой таймер). Ваша программа должна то и дело обращаться к этому таймеру и пополнять его значение, это называется Feed Watchdog (покормить сторожевого пса), иначе контроллер перезапустится.
Ядро микроконтроллера тактируется одним из высокочастотных генераторов (HSI или HSE), часы реального времени тактируются низкочастотным генератором LSE, а сторожевой таймер тактируется независимым встроенным RC генератором на 40 кГц (LSI) через делитель частоты.
Это проверенная временем надежная система защиты устройства от зависания.
👍4👎1
CMSIS STM32 Урок 10. Установка защиты от чтения (RDP level 1)
Когда ваш проект вырос до стадии релиза, то возникает потребность защитить свои авторские права путем защиты прошивки от чтения и копирования. Можно полагаться на ручную установку защиты в программе ST-Link Utility, но и на "старуху бывает проруха" - кто-то забудет, кто-то пропустит. Рутинные операции могут стать причиной утечки ценных данных, что на рынке приравнивается к потерям прибыли. Поэтому можно автоматизировать процесс установки защиты.
Защита происходит так: программа при запуске проверяет, есть защита или нет, если ее нет, то она установится. И так первый запуск устройства автоматически защитит прошивку. https://ipasoft.info/index.php/articles/cmsis-stm32-urok-10-ustanovka-zashchity-ot-chteniya-rdp-level-1
Когда ваш проект вырос до стадии релиза, то возникает потребность защитить свои авторские права путем защиты прошивки от чтения и копирования. Можно полагаться на ручную установку защиты в программе ST-Link Utility, но и на "старуху бывает проруха" - кто-то забудет, кто-то пропустит. Рутинные операции могут стать причиной утечки ценных данных, что на рынке приравнивается к потерям прибыли. Поэтому можно автоматизировать процесс установки защиты.
Защита происходит так: программа при запуске проверяет, есть защита или нет, если ее нет, то она установится. И так первый запуск устройства автоматически защитит прошивку. https://ipasoft.info/index.php/articles/cmsis-stm32-urok-10-ustanovka-zashchity-ot-chteniya-rdp-level-1
🔥2
🤝🏼 Знакомство с CH32V003
В этой статье я хотел бы немножко рассказать о бюджетных микроконтроллерах серии CH32V003 с ядром RISC-V2A от Nanjing Qinheng Microelectronics Co., Ltd и о том, как я до них "докатился". Хоть статья и пишется в конце 2025 года, однако CH32V003 совсем не новинка. Еще в 2022 году мой коллега Марат уже что-то на них делал, а в 2023 мы с Евгением даже заказали несколько отладочных плат на Aliexpress. В те "голодные" годы (был кризис чипов), этот микроконтроллер был очень заманчивым, его стоимость была 24 рубля за полноценные 32 бита и богатство периферии! Так, для справки, в конце 2023 года цена на популярные STM32F030F4P6 подскочила до 130 рублей, а за STM32F407VET6 просили чуть больше 2000 руб.
Мы купили таки себе отладочные платы CH32V003F4P6 дабы освоить эти камни и дать миру много дешевых конкурентоспособных изделий.. Но не дали. Ни в 2023, ни в 2024. https://ipasoft.info/index.php/articles/znakomstvo-s-mikrokontrollerami-ch32v003
В этой статье я хотел бы немножко рассказать о бюджетных микроконтроллерах серии CH32V003 с ядром RISC-V2A от Nanjing Qinheng Microelectronics Co., Ltd и о том, как я до них "докатился". Хоть статья и пишется в конце 2025 года, однако CH32V003 совсем не новинка. Еще в 2022 году мой коллега Марат уже что-то на них делал, а в 2023 мы с Евгением даже заказали несколько отладочных плат на Aliexpress. В те "голодные" годы (был кризис чипов), этот микроконтроллер был очень заманчивым, его стоимость была 24 рубля за полноценные 32 бита и богатство периферии! Так, для справки, в конце 2023 года цена на популярные STM32F030F4P6 подскочила до 130 рублей, а за STM32F407VET6 просили чуть больше 2000 руб.
Мы купили таки себе отладочные платы CH32V003F4P6 дабы освоить эти камни и дать миру много дешевых конкурентоспособных изделий.. Но не дали. Ни в 2023, ни в 2024. https://ipasoft.info/index.php/articles/znakomstvo-s-mikrokontrollerami-ch32v003
🔥3
Автоматическая нумерация версий прошивок
Нумерация версий компьютерного программного обеспечения указывает на изменения в продукте, и хотя единой схемы нет, чаще всего используются форматы с тремя или четырьмя числами: Мажорная.Минорная.Патч.
В таких средах разработки как Keil и ему подобных, для нумерации версий прошивок (сборок ПО) мы часто вписываем ручками определения, например:
И эта нумерация рутинная. Иногда даже пропускаешь этот момент. А в имени выходного файла вообще нет этой информации. Приходится потом так же ручками переименовывать myfirmware.hex в myfirmware_1.05_20251030.hex, чтобы передать его людям.
Это решение для автоматизации нумерации версий и именования файлов прошивок на примере программы keil uVision. Для вас не составит труда адаптировать это решение для других сред (eclipse, IAR, etc.)
https://ipasoft.info/index.php/articles/avtomaticheskaya-numeratsiya-versij-proshivok
Нумерация версий компьютерного программного обеспечения указывает на изменения в продукте, и хотя единой схемы нет, чаще всего используются форматы с тремя или четырьмя числами: Мажорная.Минорная.Патч.
В таких средах разработки как Keil и ему подобных, для нумерации версий прошивок (сборок ПО) мы часто вписываем ручками определения, например:
#define FW_VER 0x0105 // Версия прошивки
#define FW_BUILD 0x2510 // Год и месяц сборки
И эта нумерация рутинная. Иногда даже пропускаешь этот момент. А в имени выходного файла вообще нет этой информации. Приходится потом так же ручками переименовывать myfirmware.hex в myfirmware_1.05_20251030.hex, чтобы передать его людям.
Это решение для автоматизации нумерации версий и именования файлов прошивок на примере программы keil uVision. Для вас не составит труда адаптировать это решение для других сред (eclipse, IAR, etc.)
https://ipasoft.info/index.php/articles/avtomaticheskaya-numeratsiya-versij-proshivok
👍3
Создание устройства MERSON 24A2 таймлапс (ускоренное видео).
Кадры проектирования КД в Altium Designer.
Кратко о герое этого видео https://dev.ipasoft.info/doku.php?id=m24a2
Изделие произведено, испытано в полях и поставляется.
Страница на МП https://ozon.ru/t/ba3ovuq
Видео о том как создаются приборы. Интересен ли вам такой формат?
Кадры проектирования КД в Altium Designer.
Кратко о герое этого видео https://dev.ipasoft.info/doku.php?id=m24a2
Изделие произведено, испытано в полях и поставляется.
Страница на МП https://ozon.ru/t/ba3ovuq
Видео о том как создаются приборы. Интересен ли вам такой формат?
👍3🔥3