Относительно давно китайская компания Titan Micro Electronics (Шэньчжэнь) начала выпускать довольно полезный ASIC TM1650. Он содержит в себе драйвер 7 сегментного LED дисплея на 4 разряда, подключается к микроконтроллеру по I2C. Вроде бы ничего необычного? А еще к нему можно подключить до 28 кнопок. Наверное большущий он? А вот и нет, всего-то 16 ножек (SOIC-16 150mil). Что по цене? Все на картинках.
А еще у него есть аналог FD650S, его делают тоже китайцы Fuda Hisi Microelectronics.
А еще на гитхабе есть исходники библиотеки для работы с ИМС. https://github.com/arkhipenko/TM1650/blob/master/src/TM1650.h
А еще у него есть аналог FD650S, его делают тоже китайцы Fuda Hisi Microelectronics.
А еще на гитхабе есть исходники библиотеки для работы с ИМС. https://github.com/arkhipenko/TM1650/blob/master/src/TM1650.h
🔥2👍1
У производителей плат существует требование: делать отступ от края платы до меди как минимум 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