Читаючи цю статтю ви скоріш за все зіткнулися з проблемою нехватки ресурсу ARDUINO плат  та їх подорожання, тому зараз я вам розкажу як можна прокачати свої проекти за допомогою дуже хорошої і перспективної  та водночас дешевої  платформи розробки базованої на мікропроцесорах STM,а точніше розглянемо відладочну  плату на STM32F103, яка переганяє по параметрам більшість  мікроконтроллерів на яких побудованні плати ARDUINO. А також підготуємо плату до роботи та настроїмо ARDUINO IDE для роботи з STM платами.

  Для  початку порівняємо основні характеристики STM32  плати ,та її аналога по ціні Arduino Nano

      Характеристики

STM32F103

Arduino Nano

Робоча частота

72 МГц

12 МГц

Flash пам'ять

64 Кбайта

32 Кбайта

RAM пам'ять

20 Кбайта

2 Кбайта

 АЦП

12-Бітний

10-Бітний

ШИМ

16-Бітний

8-Бітний

Апаратний USB

так

ні

напруга живлення

2-3.6 В

3.3-5 В

1.png

Все це в сумі робить дану плату вкрай привабливою в усьому,наприклад мені, тема STM32 здається занадто затратною за часом, є цілі сайти присвячені програмування цих мікроконтролерів. А ось якщо подружити STM32 з Arduino IDE, то поріг входження опускається до вкрай низького рівня.

1.Підготовка плати:

Приступимо до підготовки плати, для роботи з Arduino IDE. Перше що необхідно зробити - залити в мікроконтроллер спеціальний завантажувач, який дозволить прошивати плату через апаратний USB, причому прямо з середовища розробки. Для цього необхідно перевести верхній джампер (він же «BOOT0»), в положення «1»:

2.jpg

Далі нам знадобитися перехідник з USB на UART. Варто пам'ятати, що STM32, це 3.3 В логіка, сумісність з 5-ти вольтової не гарантовано, тому рекомендовано використовувати USB to UART, у якого є можливість вибору режимів роботи з 3.3 / 5В логікою. Я використовував дешевий перехідник на базі CH340G:

3.jpg

Плату підключив до USB to UART переходнику наступним чином:

G <-> GND;

5V <-> 5V;

PA10 <-> TXD;

PA9 <-> RXD.

4.jpg

* PA10 / PA9 на платі підписані просто як A10 / A9 - ці порти є першим апаратним USART'ом, всього їх на платі 3, так само тут 2 апаратних I2C і 2 SPI.

Заради зручності живити плату від 5 В, для живлення від 3.3 В на платі є пін «3.3». Увага, 5 В може запросто вивести мікроконтролер з ладу, так що приділіть належну увагу підключенню.

Качаємо, встановлюємо і запускаємо Flash Loader Demonstrator (є в архіві до статті):

5.png

Вибираємо номер COM-порту нашого перехідника, в моєму випадку це COM43, потім натискаємо «Next»:

6.png

Так як у мене мікроконтролер новий, на нього ніхто нічого не записував (зрозуміло крім самого виробника), то тут за замовчуванням стоїть захист від читання, програма нас попереджає, що якщо натиснути кнопку «Remove protection», Flash пам'ять буде очищена, тобто якщо б там була якась прошивка - вона видалиться. У моєму випадку там нічого корисного немає, так що сміливо тисну. Далі бачу наступне:

7.png

Тиснемо «OK»:

8.png

Так як моя відлагоджуюча плата базована на мікроконтролері STM32F103C8 - тут 64 Кбайт Flash пам'яті, є ще STM32F103CB мікроконтролер, де в два рази більше Flash.

Далі натискаємо «Next»:

9.png

Знову «Next», і бачимо наступне вікно:

10.png

Вибираємо «Download to device» і тиснемо на "...":

11.png

Міняємо тип файлів на * .bin і відкриваємо файл «generic_boot20_pc13.bin» (теж присутній в архіві) який можна взяти з проекту STM32duino-bootloader.

Далі натискаємо на кнопку «Next», після прошивки завантажувача ми побачимо зелене світло:

12.png

Підготовка плати завершена плату відключаємо від ПК.

2.Налагодження ARDUINO IDE:

Треба скачати, для середовища розробки Arduino IDE, спеціальне STM32 ядро (так само є в архіві до статті).

Перевірена працездатність ядра на Arduino IDE версії 1.6.9.

Далі розархівуємо вміст за адресою Мої Документи \ Arduino \ hardware:

13.png

Зрозуміло, що система пристрій визначити не зможе, тому треба ще встановити драйвера на плату. Заходимо в папку «Мої Документи \ Arduino \ hardware \ Arduino_STM32 \ drivers \ win» (або «drivers \ win», в разі архіву до статті), і запускаємо від імені адміністратора файл «install_drivers.bat»:

14.png

Після цього верхній джампер (той що «BOOT0»), переводимо в положення «0» і підключаємо плату до комп'ютера через microUSB кабель:

15.jpg

Вона повинна в диспетчері пристроїв визначитися або як «Maple DFU» або «Maple Serial (COM *)»:

16.png

Не зовсім зрозуміло чому після першого підключення плата визначається по-різному, на різних комп'ютерах, але не суть, приступаємо до налаштування Arduino IDE.

Запускаємо середу розробки, далі Інструменти -> Плата -> Boards Manager:

17.png

Тут потрібно встановити ядро для плати Arduino Due. Вибираємо останню версію і натискаємо «Install»:

18.png

Потім Інструменти -> Плата -> «Generic STM32F103C», далі Variant: «STM32F103C8 (20k RAM. 64k Flash)», Upload Method: «STM32duino bootloader», Порт - номер COM-порту плати, все як на скріншоті:

19.png

Все, плата готова до прошивки і програмування в середовищі розробки Arduino IDE. Давайте прошємо якийсь скетч із прикладів, які «вшиті» в ядро, заходимо Файл -> Папка зі скетчами -> hardware -> Arduino_STM32 -> STM32F1 -> libraries -> A_STM32_Examples -> Digital -> Blink:

20.png

Класичний «Hello World» в світі мікроконтролерів. Змінюємо PB1 на PC13, так як світлодіод, що на платі, підключений до цього порту:

21.jpg

* До речі, загоряється він по низькому рівню на ніжці PC13.

Натискаємо кнопку «Завантажити», після прошивки середовище розробки видасть щось типу:

22.png

«Done!

Resetting USB to switch back to runtime mode

error resetting after download: usb_reset: could not reset device, win error: Неможливо знайти вказаний файл. ».

Але прошивка то завантажилася успішно, хоча не завжди так, іноді Arduino IDE видає інші повідомлення.

 

А зараз про проблему, чомусь не завжди виходить прошити плату в середовищі розробки, навіть більше, вона не завжди визначається комп'ютером. Я для себе це вирішив таким чином, перед тим як завантажити прошивку (перед натисканням кнопки «Вгрузити»), клацаю «Reset» на платі, і після прошивки, ще раз перезавантажувати плату. У цьому випадку відсоток ймовірності, що плата прошиє, дорівнює 99%. Незрозуміло чому працює саме так, але факт. Думаю, що рано чи пізно цей косяк поправлять, і все буде автоматом перезавантажуватися як потрібно. А щоб це швидше поправили, треба щоб ком'юніті цієї чудової STM32 отладочной плати росла, тому діліться цією статтею з друзями, особливо з друзями програмістами.

На цьому все,ми підготовилися до роботи з STM32 та в наступній статті розкажу як переробляти скетчі від ARDUINO під роботу з STM.


Теги


Коментарі

Коментарі відсутні