Встановити додаток
Як встановити додаток на iOS

Перегляньте відео, щоб дізнатися, як встановити наш сайт як веб-додаток на головному екрані.

Замітка: Ця функція може бути недоступна в деяких браузерах.

Моя спроба прошивки ESC MCU (EFM8)

GoodviN

Активіст
Команда форуму

Репутація:

За підтримку Спілки! За підтримку ЗСУ!
29.08.24
96
130
33
🎮
Radiomaster TX12
🥽
Skyzone Cobra X v4
🛸
Air75, Custom85, CineLog25
  • Останнє редагування:
Останнє редагування:
Вступ
Привіт усім, хочу поділитись досвідом по заміні та прошивці ESC MCU (efm8bb51f16g) на платі від Meteor 75 Pro.

Матеріалів про прошивку та заміну EFM8 я майже не зустрічав, а ситуації бувають різні, можливо хтось має польотник з неробочим чи пошкодженим MCU, або хоче розібратись як все влаштовано на "низькому рівні" за межами Betaflight :alien:, тоді Welcome.

Якщо коротко, що таке ESC, MCU?

ESC MCU (Electronic Speed Controller Microcontroller Unit) — це контролер, який керує електронним регулятором швидкості (ESC). Він відповідає за прийом команд від польотного контролера, обробку сигналів і управління двигунами дрона.

Досить поширеним є контролери сімейства EFM8 (Sleepy Bee Family), бюджетні 8 бітні контроллери, саме для них написано BHeli або BHeli_S. (https://github.com/bitdump/BLHeli)
Якщо коротко, EFM8 душе поширені як на польотних контролерах для 1" вупів так і на SpeedyBee стеках для 7"+, їх ліплять повсюду через ціну і софт який доступний в open source .

Аналіз

Початкова задача виглядає досить простою:

1. Демонтуємо некоректний контроллер (Я мав польотник від старого Meteor75 з попередньо демонтованим контролером ESC який пішов донором).


2. Монтуємо новий контролер за допомогою термофену, на найнижчій потужності, 300-310°, тут без деталей.

3. Прошиваємо в ESC Configurator.

4. йдемо літати. :ROFLMAO:


З самого початку я перевірив, що на BetaFPV F4 1S 12A AIO в якості ESC MCU встановлено EFM8 BB51:


1734860823568.png


Знаходимо розришифрування маркування, ніби все зрозуміло, шукати потрібно саме EFM8 BB5 (Busy Bee 5 Family) 1( Feature set):

1734860714343.png

Йдемо шукати заміну для EFM8BB51 і зіштовхуємось з першою проблемою, на китайському маркеті вони відсутні взагалі у корпусі QFN20, замовити їх майже неможливо, тому йдемо шукати щось аналогічне і сумісне з EFM8BB51 ,витративши трохи часу знаходимо EFM8BB21F16G, таблиця порівняння прикріпив знизу, частоти трохи нижчі, але сімейство і ядро однакове, розміри корпусів ідентичні як і розташування пінів.

Feature
EFM8BB51F16G
EFM8BB21F16G
CoreEnhanced 8051Enhanced 8051
Flash Memory16 KB16 KB
RAM2304 bytes2304 bytes
ADC12-bit10-bit
TimersAdvanced, more capableBasic timers
Clock SpeedUp to 50 MHzUp to 25 MHz

Виглядає так що EFM8BB21F16G бюджетніша версія ніж EFM8BB51F16G з нижчою тактовою частотою, в іншому вони аналогічні на базі того самого знаменитого CPU 8051, йдемо перевіримо розміщення пінів, і воно виглядає ідентично:

1734861163237.png

Купуємо десяток цих контролерів, ціна питання +- 6$=5шт, чекаємо поки вони приїдуть і продовжимо нашу пригоду...

1734861532848-png.955

1734861199431.png 1734861207751.png

Контролери на місці, беремо фен, монтуємо новий контролер, заходимо в Betaflight та ESC Configurator і бачимо що регулятор 4 відсутній:


Можливо монтаж був кривим?
Перепаюємо ще раз, і те ж саме, беремо інший контролер і монтуємо знову і результат незмінний.
Після цього можна було би це все закинути, але ми ж не кинемо все просто так, вірно?


Питання

Чому ESC Configurator не бачить MCU? Це питання відкрите, але у мене є декілька думок:

1. Як саме main контролер комунікує з MCU та як відбувається його ідентифікація?

2. Можливо MCU не має ніякого стокового firmware і польотник не може встановити підключення так як ESC, перш за все це потрібно перевірити, і добре би мати інструмент для зчитування/записування прошивки, але як?


Так як це повноцінний контроллер, у нього повиннен бути інструмент для завантаження прошивки, наприклад bootloader, згідно специфікації, EFM8 має UART bootloader:


Якщо коротко, то UART можливо використовувати для багатьох задач, одна з яких прошивка різних контролерів, рішення поширене, є дешеві засоби для роботи з UART, існує різний софт для прошивки, найбільш просте рішення і поширене рішення це CP2102 USB -TTL UART конвертер:
1734861683490.png
Дивимось в datasheet інформацію про UART підключення:

1734861697113.png

Теоретично потрібно зробити наступне підключення:

1734861707381.png

Виникає питання, як це все підключити до контролера?

Я спробував знайти адаптер для QFN20 – DIP, але в китайському маркеті немає жодного адаптера для розмірів 3x3mm усюди тільки для 5х5mm, я вирішив купити даний адаптер для аналізу, можливо я зможу його модифікувати.



Але зробити монтаж на даний адаптер адекватно неможливо через різницю відстані між доріжками і невідповідну їх кількість:

1734862326175.png

Де взяти адаптери для QFN20 3x3 питання відкрите, можливо хтось має макетку чи може зробити файл розгортку для JLCPCB, пишіть в коментарі.


Level Up

Ми ж не шукаємо легких шляхів, вірно?
Тому беремо джампер 0.1мм, пінцет, паяльник і показуємо увесь свій скіл пайки дрібних елементів, ніби робимо операцію на серці :ROFLMAO::

1734862899495-png.964


Монтуємо дюпони на адаптер і до них джампери:

1734863000937.png

Підключаємось через конвертер CP2102 USB -TTL UART, RX-TX, TX-RX, ну і все що потрібно для UART.
1734863050346.png

Що маємо в результаті та як це перевірити?

Зібраний мною сетап теоретично мав би дати можливість зашити через UART конкретну firmware яка сумісна з EFM BB21, і далі змонтувати на плату польотника.

Як з цим працювати далі?
Поки питання відкрите, я досі в пошуку інформації яку і як правильно робити прошивку, можливо потрібно працювати с С2 протоколом через Arduino, в мережі було декілька топіків на дану тему, ніби успішно прошивали BHeli через Arduino по C2 протоколу.

Поки в мережі я знайшов наступний гайд https://fishpepper.de/2016/10/15/efm8-bootloader-flash-tool-efm8load-py/, нажаль цей скрипт не працює, поки розбираюсь і фіксаю його.

Якщо у вас є ідеї, підказки, досвід, або наробки по тому як працювати з EFM8 чи UART, залишайте ваші коментарі.

Далі буде...
 

Вкладення

  • 1734862899495.png
    1734862899495.png
    349.7 КБ · Перегляди: 103
  • 1734862304034.png
    1734862304034.png
    383.4 КБ · Перегляди: 6
  • 1734862283693.png
    1734862283693.png
    63.2 КБ · Перегляди: 4
  • 1734861837496.png
    1734861837496.png
    130 КБ · Перегляди: 5
  • 1734860685409.png
    1734860685409.png
    131 КБ · Перегляди: 5
  • 1734861794185.png
    1734861794185.png
    73.4 КБ · Перегляди: 6
  • 1734861532848.png
    1734861532848.png
    43 КБ · Перегляди: 109
@GoodviN Привіт. На вихідних невдало прошив один з ESC і тепер його не видно в esc-configurator, в мене також 75-ка тільки з FC F4 1S 5A AIO. вже другий день шукаю як можна відновити ESC. знайшов інфу що можна припаяти дроти до двох контактів(C2CK, C2D) біля ESC чіпу та до GND і прошити через BLHeliSuite або https://stylesuxx.github.io/arduino-c2-flasher/ за допомогою Arduino Uno чи Nano, в обох тулах використовується C2 протокол. Сьогодні замовив Arduino Uno, чекаю поки приїде і буду далі колупати))
Ось стаття: https://oscarliang.com/flash-blheli-c2-interface/

Screenshot 2024-12-23 at 22.44.44.png
 
Привіт @flatdeh , дякую за інформацію,
я також почав копати в сторону роботи з С2 протоколом, Arduino nano уже в дорозі.
Виглядає що це найпростіший варіант прошивки ESC.
Буду продовжувати даний топік і додавати інформацію в процесі роботи.
 
Привіт, приїхав Arduino Uno. Вийшло прошити ESC EFM8BB51 через https://stylesuxx.github.io/arduino-c2-flasher/ . Через BLHeliSuite не вийшло, коннектиться але не можливо прошити. Потрібно лише 3 проводи підключити C2CK, C2D, GND, живлення не потрібно. фух, думав вже кінець польотнику))
 
Привіт усім,
Я далі продовжую пошук можливості прошивки EFM8 за домопогою різних засобів.
Попередня версія прошивки через UART застрягла на моменті запису прошивки, можливо я повернусь до UART пізніше, але я вирішив піти трішки іншим шляхом, дякую за інформацію від @flatdeh який поділився топіком прошивки через С2 за допомогою Arduino.
В наявності маю Arduino Nano тому використав його.

Для початку встановив Arduino Studio та зафлешив його з пустим кодом, щоб бути впевненим що драйвери встановлені вірно, контролер знаходить, все досить просто:
1736109044275.png

Щоб підключитись по С2 інтерфейсу, як з гайду (https://oscarliang.com/flash-blheli-c2-interface/) написано нам важливо 4 PIN з MCU fа саме GND, VDD, C2D, C2CK,
Я трішки додатково попрактикувався з розпайкою на адаптер і вийшло трохи краще ніж попередня версія:
1736109131218.png

Зібрав це все до купи і підключив наступним чином:
Arduino 3v3 – MCU VDD
Arduino GND – MCU GND
Arduino D2 – MCU C2D
Arduino D3 – MCU C2CK

Якось так вийшло:

Переходимо до BHeliStudio, вкладка Make Interface, вибираємо вірний Arduino Board (Nano Atmel328P), переконуємось що вибраний вірний Port:
1736109214118.png

Натискаємо Arduino 4way-interface і чекаємо завершення Arduino прошивки, тут ніби порядок.


На цьому етапі Arduino має працювати як програматор через С2 інтерфейс.

Пробуємо підключитись до MCU, для цього переходимо на вкладку Silabs ESC Setup та пробуємо підключитись (Connect) вибравши вірний COM port:
1736109324314.png

Підключення до Arduino відбувається, а вот ESC уже не бачить:

1736109350421.png

Для перевірки що Arduino працює справно через BHeli я через проби підключився до іншого робочого ESC (BB51) прямо з польотника:

Все працює як потрібно, підключення відбулось параметри ESC считались без проблем, тому це досить адекватний варіант прошити ESC, якщо він живий або закірпічений:

1736109565713.png

Нажаль спроби підключитись до ESC на адаптері не вийшло, можливо у когось є ідеї чому так відбувається?
Спробую припаяти ESC прямо на польотник і також считати його через Arduino, можливо результат буде інший.
 
  • Останнє редагування:
Останнє редагування:
Привіт усім!
Сьогодні продовжую свої експерименти з мікроконтролерами EFM8, оскільки це один з найпоширеніших типів MCU.
Мати навички прошивки цих мікроконтролерів важливо навіть для ремонту або створення власного польотника ;)

З приводу адаптерів, я намагався знайти зручний адаптер для EFM8, який би дозволив швидко та зручно змонтувати MCU за допомогою термофена і прошити для подальшого монтажу в цільовий пристрій. Однак рішення з паянням джамперів (як описував вище) є досить трудомістким та вимагає багато нервів.

На жаль, я не знайшов нічого підходящого на ринках EU/UA або на Ali для розміру 3x3 (QFN20R). Тому я вирішив створити цей адаптер самостійно.
Я накидав просту схему в EasyEDA без якихось гайдлайнів, вибрав посадочне місце для EFM8 (QFN20R 3x3мм), розмістив доріжки та піни, там все досить просто:
1737793511434.png

Проект перекинув в JLCPCB і замовив друк, 25 адаптерів вийшло за 5$:

1737793540323.png

Взагалі, це мій перший досвід у друці PCB, було цікаво зрозуміти, як усе це працює, які формати/софт використовувати...
Повернемось до адаптерів, +-10 днів і маємо наступну посилочку:

Якщо у когось виникне таке ж саме бажання дослідити EFM8, то можу скинути або Gerber файлик, або відправити сам адаптер по НП наприклад :)

Монтаж на адаптер займає декілька хвилин, для прикладу 10 MCU я розпаяв за +- годину:

1737793814249.png

Проблему з адаптерами ніби вирішив, тепер потрібно зрозуміти як це все правильно прошивати.
Продовження буде...
 

Вкладення

  • 1737794682932.png
    1737794682932.png
    358.4 КБ · Перегляди: 6
  • Останнє редагування модератором:
Останнє редагування модератором:
Привіт усім! Після дослідження матеріалів на різних ресурсах про BHeli та EFM8 я помітив, що більшість гайдів використовують Arduino Uno для налаштування та прошивки. Зокрема, в BHeliSuite є можливість створити Arduino Box, який спрощує роботу з ESС:

1737977356787.png

Що потрібно:​

  • Arduino Uno R3 (у моєму випадку MEGA328P).
  • LCD Keypad Shield LCD1602.
  • Загальна вартість комплекту: близько 10$.

    1737977429942.png 1737977436105.png

Як створити Arduino Box:​

  1. У BHeliSuite підключаємо Arduino, вибираємо відповідний COM-порт.
  2. Обираємо опцію Arduino UNO LCD 1602. BHeliSuite автоматично прошиває Arduino та перезапускає її:

    1737977457920.png

Налаштування підключення:
Підключення виконується наступним чином:
  • Arduino 3.3V → MCU VCC.
  • Arduino GND → MCU GND.
  • Arduino D2 → MCU C2D
  • Arduino D3 → MCU C2CK
1737979077934.png
Також я покращив свій саморобний адаптер, і припаяв до нього піни, виглядає не гірше промислового :ROFLMAO::
1737978752890.png
Примітка: У разі некоректного підключення виникає помилка Connection Error. Якщо підключення правильне, але MCU порожній, з'явиться помилка Mem Error — це нормально для чистого контролера.
Відключений MCU:

1737977619255.png

Підключений MCU:

1737977630801.png

Робота в BHeliSuite:

Підключаємось через BHeli ESC Setup, ніяких помилок немає MCU підключений успішно:

1737977963212.png

Після коректного підключення до ESC відкривається вкладка Expert Tool, яка дозволяє працювати з EEPROM MCU, фактично це дає повний доступ до роботи з MCU.

1737978079016.png

Читаємо параметри, але контролер буде позначений як "чистий". Тому потрібно залити прошивку.

1737979200543.png

Вибір прошивки:​

Для EFM8BB21 зазвичай використовують файли прошивки формату O_H_5_xxxx.HEX (згідно гайду https://fishpepper.de/projects/tinypepper2/).
1737978493381.png
У своєму випадку я обрав прошивку O_H-50, хоча рекомендую звіритися з офіційним репозиторієм BHeli, де можна знайти відповідні файли:

  • Defs для BB2: SI_EFM8BB2_Defs.inc.Підтримувані пристрої:
  • EFM8BB21F16G_QFN20 (+)
  • EFM8BB21F16G_QSOP24
  • EFM8BB22F16G_QFN28
  • EFM8BB22F16I_QFN28
1737978139960.png

Результати:​

Після успішної прошивки MCU готовий до роботи:

1737978177976.png

Наступним кроком я припаяю ESC до польотного контролера та перевірю його в ESC Configurator.

Далі буде...

P.S:

Якщо ви знаєте більше про значення маркувань A_XX, B_XX, H_XX або цифр у назвах прошивок, залишайте інформацію в коментарях.
 

Вкладення

  • 1737978096667.png
    1737978096667.png
    60.9 КБ · Перегляди: 9
  • Останнє редагування модератором:
Останнє редагування модератором:
Перекинув прошитий ESC на польотник від Meteor 75 Pro.

1738007096258.png

Результат перевірив у ESC Configurator:

1738007404073.png

Результати:​

  • ESC коректно визначається в конфігураторі.
  • Версія прошивки: O-H-50-BHeli_S 16.7.
  • Доступні додаткові параметри, яких зазвичай немає в інших ESC.
Це свідчить про те, що заміна ESC пройшла успішно, і тепер він повністю готовий до роботи.

Плани на завершення:​

Після фінальної збірки відпишуся, але, судячи з результатів, все повинно працювати як і на інших ESC.

Також, на основі цього досвіду, можна створити окремий гайд із прошивки та відновлення ESC, прибравши зайву інформацію про підключення через UART. Це дозволить зберегти матеріал у зручному форматі для інших користувачів.
 

Створіть обліковий запис або увійдіть, щоб залишити коментар

Ви повинні бути зареєстровані, щоб залишити коментар

Створити обліковий запис

Створіть обліковий запис у нашій спільноті. Це дуже просто!

Увійти

Вже маєте обліковий запис? Увійдіть тут.

Схожі теми

Назад
Зверху