Analiza awarii: moduł komunikacji I²C
Zakres: analiza usterek magistrali I²C w modułach sterujących AGD: MCU–EEPROM, MCU–RTC, MCU–czujniki (ciśnienie, temperatura, wilgotność). Prędkości nominalne: 100 kHz (standard-mode), 400 kHz (fast-mode). Linie SDA/SCL: pull-up 4,7 kΩ (3,3 V lub 5 V), długości ścieżek 2–28 cm. Firmware: retry logic, timeout 20 ms, CRC8/CRC16 opcjonalnie.
Objawy i kody błędów
- Losowe zawieszanie się urządzenia, brak odpowiedzi na polecenia MCU → zatrzymanie magistrali.
- Błędne odczyty temperatury/ciśnienia — checksum mismatch.
- Intermitentne błędy zapisu do EEPROM, retry count > 3.
- Kody:
E:I2C-21(NACK timeout),E:I2C-33(bus stuck),W:I2C-05(CRC fail),W:EMI-09(zakłócenia sygnału).
| Kod | Warunek zapisu | Skutek |
|---|---|---|
E:I2C-21 | brak ACK po 3 próbach zapisu/odczytu | reset magistrali, retry ×2 |
E:I2C-33 | SCL utrzymuje stan LOW przez ≥ 32 ms | pełny reset MCU i urządzeń slave |
W:I2C-05 | błąd CRC w ≥ 2 kolejnych pakietach | log ostrzegawczy, request repeat |
W:EMI-09 | σ czasów narastania SDA/SCL > 450 ns | filtracja software i retry |
Stanowisko i metodyka
Stanowisko: analizator logiczny 200 MHz, oscyloskop 350 MHz, generator EMI 5–30 MHz, sonda różnicowa do pomiaru sygnałów, termokamera 320×240, zasilacz laboratoryjny 3,3/5 V. Procedura: zapis/odczyt blokowy 64 B do EEPROM, polling czujników 1–5 Hz, pomiar czasów narastania SDA/SCL, CRC pakietów, rejestracja timeoutów.
| Parametr | Wartość ref. | Uwagi |
|---|---|---|
| fI2C | 100/400 kHz | standard/fast mode |
| RPU | 4,7 kΩ ±5% | czas narastania < 1,2 µs |
| CBUS | < 200 pF | zalecenie specyfikacji |
| VOH/VOL | ≥ 0,7·Vdd / ≤ 0,3·Vdd | logika CMOS |
Wyniki i obserwacje
- Zatrzymanie magistrali: EEPROM (slave) pozostawiał SDA w stanie LOW po niepełnym STOP; SCL blokowany,
E:I2C-33. Analizator wykazał „wiszące” START-y co 32–40 ms. - Zakłócenia EMI: silnik BLDC generował harmoniczne 12–24 kHz i 3,2–5,4 MHz, wchodzące przez pętle masy → fluktuacje czasów narastania 650–900 ns;
W:EMI-09flagowane przy 400 kHz. - Błędy CRC: przy polling 5 Hz do czujnika ciśnienia MS5803, 1/40 pakietów generował mismatch; korelacja z
W:I2C-05. Przyczynowo: osłabiona integralność ścieżek SDA, rezystory pull-up ~10 kΩ zamiast 4,7 kΩ. - Przegrzewanie MCU: TMCU~78 °C → wolniejsza flanka SCL (rise-time ↑ do 1,6 µs), nasilone
W:EMI-09. - Rozkalibrowane zegary: odchyłka ±4,5% w HSI 8 MHz → czas START/STOP generował pakiety niepoprawne (ACK timeout).
LOG START [I2C-COMM-25-452]
t[ms] f[kHz] SDA[V] SCL[V] rise[ns] ACK Flags
0 100 3.3 3.3 480 OK -
428 400 3.3 3.3 750 NOK W:EMI-09
612 400 2.9 3.3 810 NOK W:I2C-05
734 400 3.3 3.3 1220 NAK E:I2C-21
1450 100 0.2 3.3 - BUSY E:I2C-33
LOG END
Hipotezy przyczynowe (ranking)
- HANGUP EEPROM: brak obsługi STOP przez slave → magistrala w stanie LOW, potrzebny reset urządzeń (priorytet: wysoki).
- EMI/MASY: sprzęganie z napędu → fluktuacje narastania, błędy CRC (wysoki).
- PULL-UP: zbyt duże RPU, rise-time > 1,2 µs → błędy start/stop (średni/wysoki).
- CLK MCU: dryft zegara + TMCU↑ → niestabilne timingi (średni).
Wycinek procedury serwisowej
- Odłączyć zasilanie; pomiar rezystancji SDA/SCL do Vdd — oczekiwane ≥ 4,7 kΩ. Wartości > 8 kΩ → wymiana rezystorów pull-up.
- Analiza STOP/START: analizator logiczny, oczekiwany czas flanki SCL < 1,2 µs przy 400 kHz. Wartości > 1,4 µs → redukcja RPU do 3,3–4,7 kΩ.
- Test EMI: ekranowanie przewodów SDA/SCL, single-point ground, dodanie filtru ferrytowego < 600 Ω@100 MHz na wejściu modułu.
- Weryfikacja MCU: TMCU<70 °C; powyżej konieczny radiator termiczny 10×10×5 mm.
- Reset magistrali: sekwencja 9 impulsów SCL 400 kHz + STOP. Jeśli SDA nadal LOW → odłączyć zasilanie EEPROM > 500 ms.
- Test końcowy: polling 5 Hz, 10 000 pakietów, błędy CRC < 0,01%, brak
E:I2C-21/E:I2C-33.
Wnioski
Awaryjność komunikacji I²C w modułach AGD wynika głównie z zawieszania się EEPROM-ów, niewłaściwych wartości pull-up, sprzęgania EMI z napędu oraz przegrzewania MCU. Po redukcji rezystorów RPU, dodaniu filtrów EMI, korekcji timingu i wdrożeniu sekwencji resetu udało się ograniczyć kody E:I2C-33/W:I2C-05 o ~92%.
W przypadku problemów powtarzalnych zalecana jest diagnostyka lokalna (serwis AGD w Miasto) z rejestracją logów SDA/SCL i błędów CRC.