- 29.08.24
- 96
- 130
- 33
- 🎮
- Radiomaster TX12
- 🥽
- Skyzone Cobra X v4
- 🛸
- Air75, Custom85, CineLog25
Останнє редагування:
Вступ
Привіт усім, хочу поділитись досвідом по заміні та прошивці ESC MCU (efm8bb51f16g) на платі від Meteor 75 Pro.
Матеріалів про прошивку та заміну EFM8 я майже не зустрічав, а ситуації бувають різні, можливо хтось має польотник з неробочим чи пошкодженим MCU, або хоче розібратись як все влаштовано на "низькому рівні" за межами Betaflight
Якщо коротко, що таке 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 .
Аналіз
Початкова задача виглядає досить простою:
2. Монтуємо новий контролер за допомогою термофену, на найнижчій потужності, 300-310°, тут без деталей.
3. Прошиваємо в ESC Configurator.
4. йдемо літати.
З самого початку я перевірив, що на BetaFPV F4 1S 12A AIO в якості ESC MCU встановлено EFM8 BB51:
Знаходимо розришифрування маркування, ніби все зрозуміло, шукати потрібно саме EFM8 BB5 (Busy Bee 5 Family) 1( Feature set):
Йдемо шукати заміну для EFM8BB51 і зіштовхуємось з першою проблемою, на китайському маркеті вони відсутні взагалі у корпусі QFN20, замовити їх майже неможливо, тому йдемо шукати щось аналогічне і сумісне з EFM8BB51 ,витративши трохи часу знаходимо EFM8BB21F16G, таблиця порівняння прикріпив знизу, частоти трохи нижчі, але сімейство і ядро однакове, розміри корпусів ідентичні як і розташування пінів.
Feature | EFM8BB51F16G | EFM8BB21F16G |
| Core | Enhanced 8051 | Enhanced 8051 |
| Flash Memory | 16 KB | 16 KB |
| RAM | 2304 bytes | 2304 bytes |
| ADC | 12-bit | 10-bit |
| Timers | Advanced, more capable | Basic timers |
| Clock Speed | Up to 50 MHz | Up to 25 MHz |
Виглядає так що EFM8BB21F16G бюджетніша версія ніж EFM8BB51F16G з нижчою тактовою частотою, в іншому вони аналогічні на базі того самого знаменитого CPU 8051, йдемо перевіримо розміщення пінів, і воно виглядає ідентично:
Купуємо десяток цих контролерів, ціна питання +- 6$=5шт, чекаємо поки вони приїдуть і продовжимо нашу пригоду...
Контролери на місці, беремо фен, монтуємо новий контролер, заходимо в Betaflight та ESC Configurator і бачимо що регулятор 4 відсутній:
Можливо монтаж був кривим?
Перепаюємо ще раз, і те ж саме, беремо інший контролер і монтуємо знову і результат незмінний.
Після цього можна було би це все закинути, але ми ж не кинемо все просто так, вірно?
Питання
Чому ESC Configurator не бачить MCU? Це питання відкрите, але у мене є декілька думок:
1. Як саме main контролер комунікує з MCU та як відбувається його ідентифікація?
2. Можливо MCU не має ніякого стокового firmware і польотник не може встановити підключення так як ESC, перш за все це потрібно перевірити, і добре би мати інструмент для зчитування/записування прошивки, але як?
Так як це повноцінний контроллер, у нього повиннен бути інструмент для завантаження прошивки, наприклад bootloader, згідно специфікації, EFM8 має UART bootloader:
Якщо коротко, то UART можливо використовувати для багатьох задач, одна з яких прошивка різних контролерів, рішення поширене, є дешеві засоби для роботи з UART, існує різний софт для прошивки, найбільш просте рішення і поширене рішення це CP2102 USB -TTL UART конвертер:
Дивимось в datasheet інформацію про UART підключення:
Теоретично потрібно зробити наступне підключення:
Виникає питання, як це все підключити до контролера?
Я спробував знайти адаптер для QFN20 – DIP, але в китайському маркеті немає жодного адаптера для розмірів 3x3mm усюди тільки для 5х5mm, я вирішив купити даний адаптер для аналізу, можливо я зможу його модифікувати.
Але зробити монтаж на даний адаптер адекватно неможливо через різницю відстані між доріжками і невідповідну їх кількість:
Де взяти адаптери для QFN20 3x3 питання відкрите, можливо хтось має макетку чи може зробити файл розгортку для JLCPCB, пишіть в коментарі.
Level Up
Ми ж не шукаємо легких шляхів, вірно?
Тому беремо джампер 0.1мм, пінцет, паяльник і показуємо увесь свій скіл пайки дрібних елементів, ніби робимо операцію на серці
Монтуємо дюпони на адаптер і до них джампери:
Підключаємось через конвертер CP2102 USB -TTL UART, RX-TX, TX-RX, ну і все що потрібно для UART.
Що маємо в результаті та як це перевірити?
Зібраний мною сетап теоретично мав би дати можливість зашити через UART конкретну firmware яка сумісна з EFM BB21, і далі змонтувати на плату польотника.
Як з цим працювати далі?
Поки питання відкрите, я досі в пошуку інформації яку і як правильно робити прошивку, можливо потрібно працювати с С2 протоколом через Arduino, в мережі було декілька топіків на дану тему, ніби успішно прошивали BHeli через Arduino по C2 протоколу.
Поки в мережі я знайшов наступний гайд https://fishpepper.de/2016/10/15/efm8-bootloader-flash-tool-efm8load-py/, нажаль цей скрипт не працює, поки розбираюсь і фіксаю його.
Якщо у вас є ідеї, підказки, досвід, або наробки по тому як працювати з EFM8 чи UART, залишайте ваші коментарі.
Далі буде...