Привет.
На ESP32-S3 есть куча счетчиков ошибок WIFI, некоторые из них даже полезны :).
Я пользовался несколько раз, чтобы разобраться с тем, почему нет связи. Может кому пригодится.
Примечание: данные по указанным адресам можно читать исключительно как uint32_t. Читать не по 4 байта за раз нельзя - все грохнется.
Примечание: понятно назначение далеко не всех счетчиков.
Общая статистика по принятым пакетам WIFI
| Адрес | Описание |
|---|---|
0x600332f8 |
Сколько пакетов было действительно полезных и предназначенных именно нам. Если не идет реальной передачи данных, счетчик растет крайне медленно, фиксируя приход management/control кадров. |
0x600332bc |
Сколько попыток приема закончилось неудачей (шум в эфире, пакеты не для нас и т.п.). При обычной работе этот счетчик растет довольно быстро. |
0x60033d58 |
Количество событий Wi-Fi железа: принятые пакеты, прерывания и прочая внутренняя активность. Обычно растет быстро. |
Статистика Wi-Fi прерываний (RTS/CTS/ACK)
Используются механизмом предотвращения коллизий в эфире. В нормальных условиях растут очень медленно. Если начинают быстро увеличиваться — это повод насторожиться.
| Адрес | Описание |
|---|---|
0x600332ec |
ACK interrupts. |
0x600332f0 |
RTS interrupts |
0x600332f4 |
CTS interrupts. Если мы слишим чей-то CTS, то нам приходится молчать. Если CTSы идут непрерывно, мы ничего не сможем передать. Так WIFI борется с коллизиями в эфире. И так же можно угробить связь посылая рандомные CTS. При нормальной работе этот счетчик не растет или растет супер медленно. Если растет быстро - шумный эфир (много передатчиков) |
Ошибки приемного радиотракта и демодулятора
| Адрес | Описание |
|---|---|
0x600332c0 |
CCK errors. Растет довольно быстро. |
0x600332c4 |
OFDM errors. Почти всегда близок к CCK error. Похоже, приемник пытается декодировать мусор одновременно как CCK и OFDM, прежде чем признать его мусором. |
0x600332c8 |
AGC RX errors. Ошибки, связанные с уровнем сигнала: слишком тихо, слишком громко или проблемы автоматической регулировки усиления. Обычно тут ноль. |
Ошибки после демодуляции
На этом этапе сигнал уже успешно превращен в цифровые данные, и начинаются проверки содержимого кадра.
| Адрес | Описание |
|---|---|
0x600332d0 |
RX_ABORT. Ну аборт, он и в Африке аборт. |
0x600332d4 |
RX_FCS. Контрольная сумма кадра не совпала с вычисленной. Битый пакет. |
0x600332e0 |
RX_OTHER Прочие ошибки приема. Обычно растет медленно. |
Тсс! Криптография
| Адрес | Описание |
|---|---|
0x600332e4 |
Ошибки TKIP (crypto). |
Внутренние шестеренки и трубопроводы
Эти счетчики обычно стоят на нуле или около него. Если начинают заметно расти — скорее всего, что-то идет не так.
| Адрес | Описание |
|---|---|
0x600332cc |
Счетчик RXSF. Точное значение аббревиатуры неизвестно. Судя по поведению, это счетчик ошибок. Моя ставка — RF Short Frame. |
0x600332d8 |
FIFO Full3. Какая-то внутренняя FIFO переполнилась. Обычно равен нулю. |
0x600332dc |
FIFO Full2. Какая-то внутренняя FIFO переполнилась. Обычно равен нулю. |
0x60033308 |
FIFO Full1. Какая-то внутренняя FIFO переполнилась. Обычно равен нулю. |
0x60033304 |
HOP errors. Что именно означает — неизвестно. Обычно равен нулю. |
0x60033d3c |
TXhung Передатчик завис из-за аппаратного механизма Collision Avoidance. Обычно происходит, когда в эфире слишком много станций и постоянно слышны чужие CTS. |
0x60033d40 |
PANIC. Что именно означает этот счетчик применительно к Wi-Fi железу — неизвестно. Но ничего хорошего он точно не означает. |