RL78 jest rodziną 16-bitowych mikrokontrolerów spotykaną w AGD, klimatyzacji, licznikach, napędach i automatyce. Z punktu widzenia odzysku wygląda mniej przyjaźnie niż AVR: na obudowie często widnieje ciąg R5F10..., a interfejs programowania TOOL0 nie przypomina popularnego SWD. Po właściwej identyfikacji okazuje się jednak, że wiele układów RL78 ma od 16 do setek kilobajtów Flash, kilka–kilkadziesiąt kilobajtów RAM, timery motor-control, ADC, watchdog, brown-out i sprzętowe mechanizmy bezpieczeństwa.
RL78/G14 jest szczególnie interesującym baseline. Producent podaje maksymalnie 32 MHz, do 512 KB Flash, do 48 KB RAM, Timer Array Unit, Timer RD z wyjściami PWM, ADC, UART/SPI/I²C oraz szeroki zakres zasilania dla wielu wariantów. To zasoby wystarczające do pełnego eksperymentalnego kontrolera prostego fixed-wing, a w dobrze zaprojektowanym laboratorium również do regulatora multirotora. O powodzeniu decyduje jednak dokładny numer układu, dostępność TOOL0 oraz możliwość skasowania zabezpieczonej pamięci.
Co oznacza napis R5F10#
Prefiks R5F wskazuje mikrokontroler z Flash, lecz pozostałe znaki kodują grupę, pojemność pamięci, obudowę i klasę. Sam napis R5F10 jest zbyt krótki, aby dobrać schemat.
Przykładowy układ na płytce FPB-RL78G14 to R5F104MLAFB: RL78/G14 w obudowie 80-pinowej z 512 KB ROM/Flash, 48 KB RAM i 8 KB Data Flash. Inny układ zaczynający się od R5F10 może należeć do RL78/G13, G14 albo wyspecjalizowanej grupy i mieć odmienny pinout.
Procedura identyfikacji:
- odczytaj cały top-mark, łącznie z drugą linią;
- policz piny i zmierz obudowę;
- znajdź tabelę ordering information w datasheetcie;
- dopasuj kod pamięci oraz package code;
- otwórz hardware manual właściwej grupy;
- potwierdź piny VDD, EVDD, VSS, EVSS, RESET i TOOL0;
- sprawdź zakres napięcia dokładnego wariantu;
- pobierz erratę oraz dodatkowe uwagi emulatora.
W większych obudowach mogą istnieć osobne domeny EVDD/EVSS dla portów. Wszystkie wymagane piny zasilania muszą być podłączone i odsprzęgnięte; wykrycie jednego VDD omomierzem nie kończy analizy.
Grupy interesujące w urządzeniach-dawcach#
| Grupa | Charakter | Ocena dla eksperymentalnego FC |
|---|---|---|
| RL78/G13 | popularny ogólnego przeznaczenia, bogate TAU i interfejsy | dobry dla fixed-wing i modułów I/O |
| RL78/G14 | większa wydajność i pamięć, Timer RD, funkcje safety | najlepszy ogólny kandydat ze starszego AGD |
| RL78/G1F | ukierunkowany na sterowanie silnikami, Timer RD, komparatory/PGA zależnie od modelu | bardzo ciekawy, jeśli dokładny wariant ma potrzebne kanały komunikacji |
| RL78/G1M | motor-control i real-time output | wartościowy, ale trzeba sprawdzić status i narzędzia konkretnej pochodnej |
| RL78/Lxx | niskie zużycie energii, często LCD | dobry rejestrator/panel, nie zawsze najlepsze timery wykonawcze |
| 78K/78K0 | poprzednia architektura Renesas/NEC | nie należy mylić z RL78; osobna dokumentacja i narzędzia |
Pochodzenie z falownika nie gwarantuje, że MCU ma sprzęt odpowiedni dla autopilota. Może mieć doskonały sześciokanałowy PWM, ale tylko jeden interfejs szeregowy wyprowadzony na niedostępne piny. Arkusz zasobów tworzy się po sprawdzeniu wariantu.
Dlaczego RL78/G14 jest mocny#
Rdzeń RL78 ma 1-megabajtową przestrzeń adresową, banki rejestrów, sprzętowe mnożenie i instrukcje multiply-accumulate. Warianty G14 pracują do 32 MHz. Producent podaje szeroki zakres konfiguracji pamięci: 16–512 KB code Flash oraz 2,5–48 KB RAM w zależności od modelu.
Z punktu widzenia sterowania ważniejsze od liczby kilobajtów są peryferia:
- Timer Array Unit z wieloma kanałami 16-bitowymi;
- Timer RD do zsynchronizowanego PWM i sterowania napędem;
- Timer RG do pomiaru faz/enkodera w wybranych wariantach;
- serial array units mogące pracować jako UART, CSI/SPI albo uproszczone I²C;
- osobny interfejs IICA;
- 10-bitowy ADC;
- watchdog z dedykowanym oscylatorem;
- low-voltage detector;
- DMA/DTC w wybranych wariantach;
- oscillator stop detection, RAM parity i illegal-memory-access detection zależnie od modelu.
Te funkcje safety pochodzą z zastosowań AGD zgodnych z IEC/UL 60730. Nie czynią automatycznie z MCU certyfikowanego autopilota, lecz dają wartościowe mechanizmy wykrywania awarii.
TOOL0 i programowanie na płycie dawcy#
RL78 używa pinu TOOL0 wraz z RESET, VDD i GND do programowania szeregowego oraz debugowania przez E1/E2/E2 Lite, zależnie od modelu. Dokładny układ połączeń i wymagane rezystory są opisane w dodatkowym dokumencie emulatora dla RL78. Nie należy kopiować złącza z innej rodziny Renesas.
Na płycie AGD warto szukać czterech lub pięciu padów w pobliżu MCU. Ciągłość z pinem RESET i TOOL0 jest mocniejszym dowodem niż napis TX/RX na laminacie. TOOL0 może również pełnić funkcję portu aplikacyjnego, więc urządzenie zewnętrzne może obciążać linię.
Przed połączeniem programatora:
- zmierz, czy TOOL0 nie jest zwarte do masy lub zasilania;
- ustal napięcie EVDD, do którego odnosi się poziom logiczny;
- sprawdź obwód resetu i jego pojemność;
- odłącz stopień mocy oraz wszystkie źródła sieciowe;
- zasil część logiczną z ograniczeniem prądu;
- połącz wspólną masę i napięcie sense programatora;
- wybierz dokładny device w Renesas Flash Programmer albo e² studio.
Jeśli urządzenie ma aktywne zabezpieczenie Flash, odczyt programu może być niemożliwy. Możliwość pełnego kasowania zależy od ustawień security ID i funkcji konkretnego modelu. Nie należy obiecywać, że każdy zabezpieczony RL78 da się odzyskać samym chip erase.
Płytka FPB jako wzorzec#
Renesas publikuje schemat FPB-RL78G14. Płytka zawiera R5F104MLAFB oraz wbudowany emulator równoważny E2 Lite. Jest dobrym wzorcem do weryfikowania:
- wymaganych połączeń zasilania;
- obwodu resetu;
- wyprowadzenia TOOL0;
- kondensatorów odsprzęgających;
- sposobu oddzielenia emulatora od aplikacji;
- konfiguracji zegara;
- złączy Pmod/Arduino dla testowych sensorów.
Nie oznacza to kopiowania całej płytki do UAV. Pozwala porównać odzyskaną płytę z działającą implementacją producenta i najpierw uruchomić kod na FPB, zanim ten sam firmware trafi do egzemplarza z odzysku.
Architektura prostego kontrolera#
data-ready
IMU SPI/CSI --------------------+
v
+-------------+
RC UART/capture -------->| RL78/G14 |----> Timer RD/TAU -> serwa/ESC emulator
barometr I²C ----------->| |
bateria/prąd -> ADC ---->| tick 1 kHz |----> UART -> HIL/loger
| WDT + LVD |----> izolowana migawka
+-------------+
Praktyczny podział zasobów dla 64- lub 80-pinowego G14:
| Funkcja | Preferowany blok |
|---|---|
| tick pętli | kanał TAU w trybie interval timer |
| timestamp IMU | kanał TAU free-running + przerwanie data-ready |
| SPI IMU | CSI w Serial Array Unit |
| barometr | IICA albo drugi CSI/I²C |
| wejście RC | UART lub capture TAU |
| wyjścia | Timer RD albo kanały TAU output |
| bateria/prąd | ADC z wyzwalaniem okresowym |
| telemetria | osobny UART SAU |
| watchdog | WDT z oddzielnym zegarem |
| monitor zasilania | LVD/BOR |
Numery kanałów zależą od obudowy. Tabela alternate functions w hardware manualu jest częścią schematu.
Timer RD nie jest automatycznie DShot#
Timer RD potrafi generować komplementarne przebiegi trójfazowe z dead-time i synchronizacją, co jest bardzo użyteczne w sterowaniu falownikiem. Dla kontrolera lotu może generować stabilne PWM albo wspierać precyzyjne zbocza. Nie oznacza to automatycznej obsługi DShot z telemetrią zwrotną.
Protokół cyfrowy wymaga dokładnego timingu bitów, generowania ramki i często szybkiego przełączenia linii na wejście. Najpierw warto uruchomić wyjścia serwowe lub emulator ESC. DShot można dodać dopiero po pomiarze jitteru i sprawdzeniu, czy timer/DTC pozwala generować ramkę bez blokowania CPU.
Timer Array Unit jako scheduler#
Jeden kanał TAU pracuje w trybie interval i wyzwala przerwanie 1 kHz. ISR nie wykonuje całego regulatora. Zapisuje timestamp, pobiera gotową próbkę lub ustawia flagę zadania i sprawdza, czy poprzednia iteracja została zakończona.
volatile uint8_t tick_pending;
volatile uint16_t deadline_miss;
void tau_tick_isr(void)
{
if (tick_pending) {
deadline_miss++;
}
tick_pending = 1;
}
int main(void)
{
hardware_init();
for (;;) {
if (tick_pending) {
tick_pending = 0;
control_step();
health_mark_control_complete();
}
run_background_tasks();
}
}
To pseudokod przenośny, nie gotowy plik nagłówkowy Renesas. Nazwy wektorów i rejestrów generuje Smart Configurator lub definiuje device pack dla dokładnego modelu.
Odczyt IMU#
CSI jest odpowiednikiem synchronicznego interfejsu szeregowego używanego jako SPI. Projekt powinien stosować osobną linię chip-select i przerwanie data-ready. Próbka otrzymuje timestamp przed rozpoczęciem dłuższych obliczeń.
Wariant bez DMA/DTC może nadal działać, jeśli transfer burst ma kilkanaście bajtów, a zegar magistrali jest wystarczająco szybki. Należy policzyć czas:
t_transfer = liczba_bitów / f_SCK + opóźnienia_CS + obsługa_ISR
Dla 16 bajtów przy 4 MHz sama transmisja trwa około 32 µs. To niewielka część okresu 1 ms, lecz busy-wait może blokować ważniejsze przerwania. Wariant z DTC zmniejsza obciążenie CPU, ale wymaga sprawdzenia dostępności bloku w konkretnym G14.
Arytmetyka i pamięć#
RL78 jest rdzeniem 16-bitowym, co ułatwia operacje Q15 względem klasycznych 8-bitowców. Sprzętowe multiply/divide/MAC w G14 może przyspieszyć filtr i regulator. Nadal trzeba kontrolować rozmiar typu int: ABI kompilatora oraz promocje w C wpływają na wynik i czas.
Proponowany układ pamięci:
RAM:
stan regulatora i estymatora 1–2 KB
bufory dwóch ramek sensorów <256 B
telemetria 256–512 B
stos z marginesem mierzony watermarkiem
Data Flash:
dwa rekordy konfiguracji + CRC + numer generacji
Code Flash:
boot/startup, HAL, sterowanie, diagnostyka
Data Flash nie służy do logowania przy 1 kHz. Producent podaje dużą typową liczbę cykli dla tej pamięci, ale log ciągły nadal zużyłby ją szybko. Logi wychodzą UART-em lub trafiają do zewnętrznej pamięci.
Wbudowane funkcje bezpieczeństwa#
RL78/G14 ma kilka mechanizmów, które warto wykorzystać świadomie:
- watchdog z zegarem niezależnym od głównego oscylatora;
- low-voltage detection;
- monitor głównego zegara i możliwość przejścia na inny zegar;
- wykrywanie niedozwolonego dostępu do pamięci w odpowiednich wariantach;
- kontrolę parzystości RAM;
- CRC sprzętowe lub funkcje sprawdzające pamięć zależnie od modelu;
- wymuszone odcięcie PWM przez komparator w wariantach motor-control.
Każde źródło resetu jest zapisywane do rekordów diagnostycznych. WDT nie jest odświeżany z przerwania timera bez sprawdzenia postępu zadań, ponieważ wtedy wisząca główna pętla nadal wyglądałaby na zdrową.
G1F jako wyspecjalizowany dawca#
Oficjalna nota Renesas dla RL78/G1F pokazuje sensorless sterowanie PMSM z użyciem:
- 10-bitowego ADC do pomiaru napięcia szyny, temperatury i prądu;
- Timer RD do komplementarnego PWM;
- TAU do pomiaru prędkości i opóźnień;
- komparatorów do nadprądu i detekcji przejść;
- PGA dla pomiaru prądu;
- sprzętowego wymuszenia wyłączenia PWM.
Dla autopilota nie kopiujemy algorytmu falownika. Informacja jest cenna, ponieważ dowodzi rzeczywistego sposobu wykorzystania peryferiów czasu rzeczywistego i pokazuje, które bloki można przeznaczyć na precyzyjne wyjścia, pomiar prądu oraz natychmiastowe odcięcie. Jeżeli odzyskany G1F pozostaje na sprawnym module mocy, eksperymenty zaczyna się od odseparowanej części logicznej, nie od uruchamiania mostka sieciowego.
Wyjścia serw i migawka#
Klasyczne serwa można obsłużyć kanałami TAU lub Timer RD. Wszystkie kanały powinny rozpocząć nową ramkę ze wspólnego punktu czasu, a szerokości przechodzić przez bufor cienia.
Migawka aparatu jest osobnym wyjściem o niskiej częstotliwości. GPIO steruje PhotoMOS-em lub transoptorem. Timer monostabilny w firmware kończy impuls po 100–200 ms, nawet jeśli warunek zdjęcia pozostaje aktywny. NOT_TAKEN lub licznik sekwencji zapobiega wykonywaniu zdjęcia w każdej iteracji.
Narzędzia i kompilatory#
Renesas utrzymuje e² studio dla RL78, Smart Configurator, kompilator CC-RL oraz dokumentację integracji. Alternatywą jest IAR, a dla części rodziny istnieją narzędzia społecznościowe. Przy odzysku nie należy wybierać toolchainu przed sprawdzeniem dokładnego symbolu w liście obsługiwanych urządzeń.
Powtarzalny projekt zapisuje:
- wersję e² studio i kompilatora;
- wersję Smart Configurator/device support;
- dokładny model MCU;
- ustawienia option bytes;
- plik linkera i mapę pamięci;
- konfigurację zegarów;
- plik programowania i hash;
- wersję firmware emulatora E2 Lite.
Wbudowany emulator na FPB jest wygodny do nauki, lecz odzyskany układ na płycie AGD nadal wymaga odpowiedniego E2 Lite/E2 albo programowania zgodnego z jego dokumentacją.
Option bytes i start po resecie#
Option bytes RL78 ustawiają watchdog, LVD, tryb zegara i inne zachowania startowe. Błąd może spowodować reset loop jeszcze przed inicjalizacją UART-u. Pierwszy obraz powinien używać zachowawczej konfiguracji zgodnej z manualem i generatorem kodu.
Przy problemie z połączeniem należy rozdzielić:
- brak zasilania wszystkich domen;
- błędny poziom TOOL0;
- reset utrzymywany przez układ zewnętrzny;
- watchdog uruchomiony option byte;
- niezgodny device selection;
- aktywną ochronę;
- uszkodzenie termiczne.
Losowe zmiany rezystorów i napięć nie są metodą diagnostyczną.
Kwalifikacja egzemplarza z odzysku#
Po standardowym erase/program/verify wykonuje się:
| Próba | Co wykrywa |
|---|---|
| test wszystkich banków RAM | uszkodzenia pamięci i błąd linkera |
| CRC code Flash przy wielu restartach | niestabilność pamięci/zasilania |
| clock-out albo przebieg TAU | błąd oscylatora i konfiguracji preskalerów |
| CSI loopback przy kilku prędkościach | uszkodzenie portu i margines sygnałowy |
| UART z numerami sekwencji | błędy ramek i overflow |
| sweep ADC z precyzyjnego DAC | monotoniczność oraz błędy kanałów |
| zsynchronizowane wyjścia Timer RD | jitter i spójność kanałów |
| wymuszony timeout każdego zadania | rzeczywistą skuteczność WDT |
| rampę VDD | próg i zachowanie LVD/BOR |
Test portów trzeba dopasować do połączeń płyty dawcy. Pin związany z driverem dużej mocy nie jest przełączany, dopóki stopień wykonawczy nie zostanie fizycznie odłączony.
Co można zbudować rozsądnie#
Moduł I/O i safety monitor#
RL78 mierzy odbiornik RC, napięcie, prąd i temperaturę, generuje kilka wyjść oraz nadzoruje heartbeat głównego FC. To dobra pierwsza rola, ponieważ używa mocnych timerów bez obciążania układu estymacją.
Prosty fixed-wing#
G14 z IMU SPI, barometrem, wejściem RC, dwoma–czterema serwami i telemetrią może realizować stabilizację rate/attitude, ograniczenie przechylenia, utrzymanie wysokości oraz wyzwalanie kamery. Nawigacja GNSS i rozbudowany mission manager wymagają większego projektu, ale zasoby wielu wariantów są wystarczające.
Laboratorium multirotora#
Szybka pętla, cztery zsynchronizowane wyjścia i sprzętowe multiply/MAC pozwalają stworzyć regulator HIL. Lot wymaga dodatkowo zbadania opóźnień IMU, zachowania przy utracie jednego wyjścia, jitteru, zapasu CPU i wszystkich stanów resetu. Sam fakt posiadania Timer RD nie jest dowodem gotowości.
Ograniczenia praktyczne#
Największą przeszkodą RL78 nie jest wydajność, lecz koszt identyfikacji i narzędzi. W jednym kartonie złomu mogą leżeć podobnie oznaczone RL78, 78K i niestandardowe warianty klienta. E2 Lite jest mniej powszechny w warsztacie niż ST-Link albo PICkit. Biblioteki sensorów są częściej pisane dla Arduino i STM32.
Z drugiej strony manual RL78/G14 ma kompletny opis sprzętu, a producent nadal oznacza rodzinę jako aktywną z programem długowieczności. To nie jest martwa architektura. Po stworzeniu jednego działającego HAL kolejne układy tej samej grupy stają się znacznie łatwiejsze.
Plan wykonania#
- zidentyfikuj pełny R5F i obudowę;
- pobierz hardware manual, datasheet, erratę i emulator notes;
- odnajdź VDD/EVDD/VSS/EVSS, RESET i TOOL0;
- zachowaj płytę dawcy i odłącz stopień mocy;
- połącz E2 Lite/RFP przy poprawnym napięciu odniesienia;
- udokumentuj security/option bytes przed kasowaniem;
- uruchom clock-out, UART i test pamięci;
- przenieś ten sam program na FPB i porównaj zachowanie;
- dodaj CSI IMU oraz pomiar deadline;
- uruchom wyjścia najpierw na analizatorze;
- sprawdź watchdog i LVD;
- dopiero po HIL zintegruj odzyskiwalny demonstrator.
Laboratorium fc-lab-rl78#
Katalog git/fc-lab-rl78 zawiera wspólny rdzeń, test jednostkowy, C runner HIL, weryfikator CSV i szkielet portu RL78/G14. Port wskazuje miejsca integracji TAU, CSI, Timer RD i watchdogu, ale nie wymyśla nazw rejestrów dla nieznanego numeru R5F10....
make check działa bez e² studio. Przejście na target wymaga wygenerowania inicjalizacji dla dokładnego układu, zapisania option bytes, mapy TOOL0 oraz zmierzenia deadline na pinie profilującym.
Powiązane tematy#
- Selekcja i odzysk mikrokontrolerów
- PIC16 i PIC18 jako kontroler lotu
- STM8 jako kontroler lotu
- Nowoczesne 8051 z odzysku
- Harmonogram czasu rzeczywistego FC
- Architektura zasilania flight controllera
- IMU w dronie
- Proces uruchomienia nowego UAV
Przypisy#
- Renesas, RL78/G14 User’s Manual: Hardware, R01UH0186 — rdzeń, pamięć, zegary, TAU, Timer RD, ADC, Flash, option bytes, TOOL0 i debug.
- Renesas, RL78/G14 product page — aktualne warianty pamięci, obudowy, peryferia i status produktu.
- Renesas, RL78/G1F sensorless 120-degree conducting control for PMSM — wykonawcze użycie Timer RD, ADC, TAU, PGA, komparatorów i sprzętowego odcięcia PWM.
- Renesas, E2 Emulator Lite oraz dodatkowe dokumenty połączeń RL78 — programowanie i debugowanie.
- Renesas, FPB-RL78G14 — schemat referencyjny, R5F104MLAFB i wbudowany emulator.
- Renesas, e² studio information for RL78 Family — wspierane urządzenia, generowanie kodu i narzędzia.
Źródła z centralnego rejestru
- Renesas RL78/G14 [oficjalna karta rodziny; rdzeń RL78, pamięć, timery, PWM, ADC i zastosowania motor-control]
- Renesas RL78/G14 User’s Manual: Hardware [oficjalny podręcznik sprzętowy; mapa pamięci, zegary, TAU, Timer RD, ADC, TOOL0, Flash i debug]
- Renesas RL78/G1F: sensorless 120-degree PMSM control [nota aplikacyjna producenta; użycie Timer RD, ADC, komparatorów, PGA i wymuszonego odcięcia PWM]
- Renesas E2 Emulator Lite [oficjalna dokumentacja programatora i debuggera, w tym połączenia dla RL78]
- Renesas e² studio — information for RL78 Family [oficjalna dokumentacja środowiska, generatorów kodu i obsługiwanych rodzin RL78]
- Renesas FPB-RL78G14 Fast Prototyping Board [oficjalna płytka referencyjna ze schematem i wbudowanym emulatorem]
- STMicroelectronics AN2639: Soldering recommendations and package information [nota aplikacyjna producenta; profile cieplne, wilgoć, MSL i ryzyko uszkodzenia obudów podczas lutowania]
- STMicroelectronics: STM32WB BLE HID Selfie [oficjalny przykład BLE HID używający klawisza głośności do wyzwalania zdjęcia]