Показ дописів із міткою STM32F3. Показати всі дописи
Показ дописів із міткою STM32F3. Показати всі дописи

вівторок, 12 грудня 2017 р.

Досьє на плати сімейства STM32 Discovery

Останнім часом, у нас, в CS@UCU, завелося багато демоплат, поміж них, за кількістю, домінують плати Discovery від STM32. В них почав плутатися вже й і я, що говорити про студентів. Тому вирішив написати такий собі довідничок: короткий опис плати, ключові компоненти, зокрема -- присутня на платі периферія, особливості її мікроконтролера (MCU), супроводжуючи інформацію посиланнями на офіційні сторінки, даташіти і т.д. 
Варто зауважити, що на офіційних сторінках мікроконтролерів, крім даташітів є також посилання на величезну кількість так-званих AppNote -- прикладів використання якихось можливостей мікроконтролерів. Дуже рекомендую ознайомитися хоча б із списками. :-)
Порядок плат менш-більш довільний, грубо -- по спаданню потужності мікроконтролера на платі та різноманітності периферії.

Описано:
  • STM32F4Discovery
  • STM32F3Discovery
  • 32F072BDISCOVERY  
  • 32L0538DISCOVERY  
  • 32L152CDISCOVERY
  • STM32VLDISCOVERY
  • китайська "Blue pill"
  • екзотична M24LR-DISCOVERY
Вони обладнані мікроконтролерами на базі ядер ARM Cortex M0, M0+, M3, M4F, а M24LR обладнана 8-бітним MCU із сімейства STM8.

STM32F4Discovery

Цікава плата із одним із найпотужніших мікроконтролерів сімейства (на М7 не заглядатимемося поки). Новіший варіант, (із кодом замовлення STM32F407G-DISC1).

понеділок, 27 лютого 2017 р.

Проста бібліотека для роботи з гігрометрами DHT11 і DHT22

Приклад виміру.
В попередньому пості ми розглянули трішки нетипові для цього блогу пристрої -- гігрометри. Наведу також приклад коду для роботи із ними. На жаль, код доволі примітивний -- зроблений на явних затримках. Значно елегантнішим було б зробити скінчений автомат на перериваннях. Однак, як завжди, часу жахливо забракло, усвідомив -- якщо буду чекати, поки допишу, то опублікую добре якщо в цьому році. То викладаю, як є -- в ролі "технологічної демонстрації", хай і неелегантної. 

Цей пост цілком може швидко застаріти -- майте на увазі.

Огляд  та використання

Бібліотека:
  • Дозволяє під'єднувати довільну кількість гігрометрів -- поки вистачить пінів.
  • Як і попередня бібліотечка для LCD5110, ця -- повністю динамічна, єдиний необхідний пристрою пін задається при ініціалізації. (Зі всіма плюсами і мінусами такого підходу. Обговорення див. у пості за посиланням вище, у розділі "Технічні подробиці").
  • Потребує мікросекундні таймери та можливість вимірювати мікросекундні інтервали. Вона користується кодом, запропонованим тут: "Мікросекундні затримки та відлік мікросекунд для STM32".
  • Сама бібліотека складається із двох файлів, dhtxx.h і dhtxx.c.
  • Поки -- чисто С-на бібліотека.
Скачати бібліотеку можна тут. Архів включає бібліотечку для роботи із мікросекундними інтервалами, але вважає, що в проекті є файл gpio.h, згенерований STM32CubeMX.

понеділок, 23 січня 2017 р.

Гігрометри DHT11 і DHT22

DHT11 та DHT22.
Фото взято тут.
Згадані в назві сенсори користуються певною популярністю поміж любителів. Вони мають терпимі параметри, прості в роботі та зовсім дешеві (на ebay -- менше долара перший, 2.7$ -- другий). Правда, відносно повільні та, іноді, капризні.

При тому, хоча вся інформація про них в мережі є, але вона розсіяна по купі різних місць, а більшість даташітів взагалі китайською, іноді із перекладом у вигляді "підстрочника".  Так що, вирішив і я приєднатися до цього інформаційного хаосу. :-)
Скачати згадані даташіти, накопані на просторах Інтернету, можна тут.

Отож,  DHT11 і DHT22 міряють відносну вологість та температуру. Загальні характеристики:

понеділок, 9 січня 2017 р.

Дисплей Nokia 5110 на контролері PCD8544 - бібліотека для STM32

За мотивами попереднього поста, написав бібліотечку для роботи із ним за допомогою STM32. Бібліотека ще зовсім сира, але нею вже можна користуватися. В подальшому її код знаходитиметься на Github, але поки прикріпляю архівом. Опис нижче орієнтується на System Workbench for STM32 та STM32F3Discovery, хоча ні те ні те не є принциповим.

Увага! Так як бібліотека мала б розвиватися, дана стаття може доволі швидко застаріти. Але гарантій не дам. :-)

Огляд 

В списку нижче, цифрами вказано номери виносок, розшифрованих в технічних подробицях. Отож, бібліотека:
  • Дозволяє під'єднувати довільну кількість дисплеїв (1).
  • Підтримує вивід тексту: окремих літер, С-стрічок,  чисел, та стрічок, форматованих у стилі printf() (2).
  • Підтримує вивід довільних прямих. (5)
  • Вміє виводити прямокутники, зокрема -- заповнені. (5)
  • Вивід може відбуватися як "білими", так і чорними пікселями.
  • Надає доступ до всіх режимів дисплею та безпосереднього керування його параметрами.
  • На кожному дисплеї може використовуватися декілька незалежних вікон. Із кожним вікном пов'язаний свій "графічний" курсор, який задає лівий верхній кут виводу наступної літери (3).
  • Для кожного дисплея підтримує свій "відео"-буфер, котрий при оновленнях передається на пристрій для відображення.
  • Шрифт вкомільовується в код, моноширинний, але розмір символу не фіксується бібліотекою (4). 
  • У шрифті по замовчуванню підтримується кирилиця -- українська та російська. Кодування -- ASCII + CP1251.
  • На жаль, автоматично генерованої документації в коді ще немає. Планується. Поки дивіться код та користуйтеся цим постом. 

вівторок, 8 листопада 2016 р.

Таймери STM32 -- зміст

Статей про таймери вийшло багато. Щоб краще орієнтуватися, пасує зробити зміст. Потім треба буде його зробити ще й для постів про далекомір. Аналогічний зміст для постів про далекомір.

Проекти із кодом, який використовується в постах, зазвичай можна скачати за посиланням в кінці посту. Історично склалося так, що більшість проектів проекти для CoIDE. В принципі, зараз перейшов на System Workbench for STM32, але якби взявся всі проекти переносити -- написання цих постів точно ніколи б не завершилося.

Розглядається використання CMSIS та HAL+STM32CubeMX. Код Cube та HAL розтинається та аналізується аж до рівня CMSIS -- безпосередньої маніпуляції регістрами.
На жаль, не передбачено простого візуального способу пропустити цей reverse engineering для тих, кому цікаво лише знайти підказку, як скористатися тією чи іншою можливістю. Однак, в тексті все-таки відділяється опис способі використання від аналізу подробиць роботи.

четвер, 29 вересня 2016 р.

GPIO мікроконтролерів STM32F303 з використанням HAL

STM32F3Discovery
Виникла чисто практична потреба написати коротке введення в GPIO контролера STM32F303 плати STM32F3Discovery. Подумав, що є сенс зробити його в блозі. 
Серія про таймери, далекомір і продовження -- написана ще весною, але, на жаль, катастрофічно бракує часу довести її до ладу і опублікувати. Вірю, що скоро мені нарешті вдасться це зробити. Done. Див. відповідні теги: таймери, далекомір.
Працюватимемо із використанням візуального генератора конфігурації STM32CubeMX, бібліотеки роботи із периферією HAL та середовища System Workbench for STM32 (SW4STM32). 

Update 20-11-2016: виправлено прикру помилку -- додано заборону переривань при звертанні до змінних, що можуть бути модифіковані в їх обробниках. Прикру -- бо в таких простих прикладах вона себе проявляє рідко, але є дуже "фундаментальною", якщо можна так сказати про помилку.

Update 17-09-2017:  додано вирішення кількох типових проблем, що виникають при роботі із SW4STM32, оновлено пару посилань, дрібні стилістичні зміни.