Diagnostyka komunikacji – UART, SPI, I²C, CRC i timeouty

Strona dokumentuje diagnostykę komunikacji w firmware triaka: logi błędów, analizy opóźnień, utraty ramek i rekomendacje dla UART, SPI i I²C. Firmware: v1.9.3-b.

/diagnostyka-komunikacji UART 115200 8N1 SPI @8 MHz I²C 400 kHz Aktualizacja: 2025-08-24

Fragment logów UART

00:00.012  SYS: boot v1.9.3-b
00:00.025  UART: init baud=115200; dma=on; fifo=2kB
00:02.318  WARN: uart_crc_err=3; retries=3; sync lost
00:02.320  UART: resend seq=12; ok
00:04.100  UART: rx_overrun=1; drop=64B
00:04.120  FAULT: uart_dma_stall; recov=restart DMA
00:04.126  UART: dma_restart=ok; pending=0; crc=0

Fragment logów SPI/I²C

00:00.015  SPI: init @8MHz; dma=on; mode=CPOL=0,CPHA=1
00:00.018  I2C: init @400kHz; retries=3; timeout=8ms
00:02.112  SPI: crc_err=1; retry ok; seq=24
00:02.208  I2C: nack=2; busy=1; recov=bus reset
00:02.212  I2C: retries=3/3 ok; timeout=3.2ms

Komendy serwisowe

$ comm get
uart_baud=115200; uart_crc=0; dma=on; rx_drop=0
spi_crc=0; i2c_nack=0; retries=0
$ comm stats
uart_crc=3; rx_overrun=1; spi_crc=1; i2c_nack=2; timeout=8ms
$ comm set uart 230400   OK
$ comm set retries 5     OK
$ comm clear             OK

Procedura diagnostyczna

  1. Sprawdź uart_crc, rx_overrun i timeout.
  2. Jeśli crc_err rośnie: obniż uart_baud lub zwiększ rozmiar fifo.
  3. Dla rx_overrun > 0 → podnieś DMA FIFO, ustaw flow control.
  4. Dla I²C nack > 0: aktywuj automatyczny bus-reset po timeout.
  5. Dla SPI crc_err: używaj DMA burst, skróć przewody i dodaj rezystory terminujące.

Progi i alarmy

Parametr Opis Ostrzeżenie Krytyczny Akcja FW
uart_crc Błędy CRC na ramkach UART > 1 / 1000 ramek > 5 / 1000 ramek Auto↓baud, retry, sygnalizacja
rx_overrun Bufor RX pełny > 0 / 1k ramek > 3 / 1k ramek Powiększ FIFO, restart DMA
i2c_nack Błędy potwierdzeń > 2 / 100 ramek > 5 / 100 ramek Bus reset, ogranicz prędkość
spi_crc Błędy sum kontrolnych SPI > 1 / 1k ramek > 5 / 1k ramek Retry + korekta linii SPI
timeout Brak odpowiedzi slave > 5 ms > 10 ms Reset magistrali

Zalecenia sprzętowe

Analiza typowych problemów

Checklist