вівторок, 2 грудня 2014 р.

STM32: Стартуємо! Навчаємось! Реалізуємо!


Передмова

 Розпочинаю серію статей за допомоги яких, крок за кроком, оволодіємо навичками програмування і реалізації в кінцеві діючи пристрої на базі мікроконтролерів STM32. Перераховувати переваги саме цих мікроконтролерів перед іншими немає сенсу, бо таких статей в мережі безліч. Наприклад, хороша стаття російською мовою STM32: эпоха 32-битных микроконтроллеров наступила. Головна перевага цих контролерів це низька ціна. А можливостей "для дому, для сім'ї" просто безмежно. Статей про те як легко і просто стартувати на цих мікроконтролерах з прикладами теж безліч, але я берусь за цю справу по декільком причинам. По-перше, статей по STM32 українською мовою немає. Може і є, але google про них не знає, або щось і є типу рефератів. По-друге, статті будуть розраховані зовсім на новачків. Сам розпочав з нуля і вже щось виходить, то і у вас вийде. Буду ретельно розглядати ті моменти які мені давались важко як новачку. По-трете, шкірне питання - з написанням статей буду разом з вами вдосконалюватись.
 І ще один момент зазначу. В мережі, в статтях про легкий старт та як зробити те чи інше, часто-густо йдуть з прикладами заради прикладу. Наприклад, увімкнути/вимкнути світлодіод. Це звісно дуже потрібні приклади і з цього потрібно починати. Це основа основ, бо мікроконтролером ми будемо вмикати/вимикати не тільки світлодіоди, а і реле, двигуни, клапани, та керувати більш складними модулями. Це, так би мовити - база, основа без якої не обійтись. Але вмикання/вимикання світлодіода просто так - це, погодьтесь, дуже нудна справа. Все ж веселіше задумати якусь гру-забавку, зробивши яку, ще й в неї можна погратись і весело провести час у компанії. Граючись - веселіше навчаємось. Ну а вже потім, коли зрозуміємо разом як то все працює, перейдемо до більш складних і корисних речей. Наприклад зробимо домашню метеостанцію з двома сенсорами температури (вулиця, приміщення) з годинником і календарем. А потім перейдемо до якоїсь автоматики системи "Розумний Дім".

Стартуємо. Залізо.

Плата розробника

 Я обрав STM32VLDISCOVERY на мікроконтролері STM32F100RB. Вибір був простий: доступність, низька ціна і щоб було можливостей - "на виріст". Придбати плату можна тут, або тут. Чи ще деінде.

Виглядає вона так:

 Плата неначе поділена на дві частини. Ліворуч сам піддослідний чип з двома кнопками, одна RESET інша користувача. Двома світлодіодами користувача. І два кристали кварцу. Один кристал на 8МГц для тактування самого процесора і кварц на 32.768KHz для тактування годинника реального часу. Частина праворуч - програматор з роз'ємом miniUSB для зв'язку з комп'ютером і живлення всієї плати. Цей програматор можна використовувати для програмування "зовнішніх" мікроконтролерів. Для цього на платі є 4-х піновий роз'єм SWD. По периметру плати розташовані виводи мікроконтролера. Невеличкий відео-огляд цієї плати розробника:

Це може бути інша плата розробника, головне щоб мікроконтролер на ній був серії STM32F10x. Тоді приклади, які будуть розглядатись, можна не адаптувати, а просто копіювати. Ось наприклад чудова плата на базі мікроконтролера STM32F103C8T6. Маленька - можна її застосовувати в кінцеві проекти. Дешева - не дорожче п'яти доларів. І всі програми які будемо з вами писати, будуть до неї підходити. Але для неї ще потрібен програматор, або окремий , або у складі плати розробника. Так що пропоную таки спершу придбати плату розробника з програматором, а вже потім купувати такі платки для кінцевих проектів, які потрібно застосувати на практиці, а не для навчання.

Контактна макетна плата

 Хоч і не обов'язково, але дуже зручно мати контактні макетні плати "breadboard". З часом я завів декілька різних контактних макетних плат, як на світлині, щоб було де "розгулятись" навчаючись, чи коли створювати свої проекти, мати запас для творчості. Але все зразу купувати не треба, це як приклад. Час покаже що конкретно вам буде потрібно.

З-за того що у плати STM32VLDISCOVERY виводи порту "B" PB10 - PB15 розташовані не вздовж плати а поперек, як видно на першій світлині, то мусив піти на маленьку хитрість по встановленню плати на "breadboard" таким чином:

З'єднувальні дроти

 Ще потрібні з'єднувальні дроти різної довжини "тато - тато" і "мама - тато" для з'єднання елементів схеми-проекту. Та кабель USB - miniUSB тип B для зв'язку мікроконтролер - комп'ютер.

Це все що стосується "заліза" (hardware) для старту.

Програмне забезпечення

 Також нам потрібно "software", те на чому ми будемо писати наші "шедеври" і заливати їх до нашого мікроконтролеру. Я використовую безкоштовну оболонку для програмування мікроконтролерів CooCox CoIDE, і компілятор ARM Embedded Processors
Писати програми будемо на мові програмування C++. Сам я новачок і роблю перші кроки в C++, але нічого страшного і супер складного в цій мові немає. Колись давно придбав книгу на книжковому ринку Брайана Оверленда "С++ БЕЗ СТРАХУ". Чому саме цю, бо в анотації було зазначено - "В більшості книг по програмуванню на мові С++ передбачається, що читач вже програмував на іншій мові, а ще краще на декількох. Цю книжку можна читати з нуля". Що мені підходило дуже і дуже. Бо той досвід що мав за плечіма, асемблер для Z80 і пару видів Basic ну ніяк не наближали мене до великих знань в програмуванні на мові C++. Ви можете навчатись по якійсь іншій книзі, або якщо вже знаєте С++ , то вам взагалі буде легко стартувати. Тож лежала та книга в мене на поличці, лежала і ось вона мені згодилась. Зараз користуюсь нею як настільною книгою куди я постійно підглядаю. Ну звісно мережа internet дуже і дуже допомагає в навчанні.
 Встановлення програмного забезпечення на ПК з ОС Windows в наступному дописі "STM32: CooCox IDE встановлення і запуск". А поки можна запасатись потрібними речами.

Немає коментарів:

Дописати коментар