Тайм-аут доминантного состояния TXD
Если микроконтроллер завис, держа вывод TX в нуле, трансивер CAN будет непрерывно передавать доминантный уровень, и вся шина остановится. Чтобы один сбойный узел не блокировал сеть, трансиверы считают, сколько длится ноль на TXD, и отключают передатчик по тайм-ауту.
Обновлено Редакция GAW
Тайм-аут доминантного состояния TXD (TXD dominant time-out) — защита в CAN-трансивере: если на входе TXD слишком долго держится логический ноль, трансивер отключает передатчик и отпускает шину в рецессивное состояние. Так один узел с зависшим контроллером или ошибкой в прошивке не может заблокировать всю сеть постоянным доминантным уровнем (NXP TJA1050).
Как работает
Таймер запускается спадом на TXD. Если низкий уровень длится дольше времени тайм-аута, передатчик выключается; таймер сбрасывается фронтом на TXD, и передатчик снова работает (TJA1050; TJA1051, разд. 7.2.1). NXP описывает отключение именно передатчика.
| Трансивер | Время тайм-аута (мин. / тип. / макс.) | Скорости |
|---|---|---|
| TJA1050 | 250 / 450 / 750 мкс | 60 кбит/с … 1 Мбит/с |
| TJA1051 | 0,3 / 1 / 5 мс | от 20 кбит/с; до 5 Мбит/с в фазе данных CAN FD |
Минимальная скорость
Обратная сторона защиты — нижний предел скорости. NXP указывает, что время тайм-аута TJA1051 задаёт минимальную скорость 20 кбит/с (разд. 7.2.1). По нашему расчёту, при 20 кбит/с бит длится 50 мкс, и минимальные 0,3 мс — это 6 битовых интервалов. В нормальном кадре длинные доминантные последовательности ограничены битстаффингом, но кадр ошибки — исключение: наложенные флаги ошибки дают от 6 до 12 доминантных битов. При 20 кбит/с это 0,3–0,6 мс, то есть на самой нижней скорости длинный флаг ошибки сравним с минимальным тайм-аутом, а у TJA1050 при 60 кбит/с 12 битов — 200 мкс при минимуме 250 мкс (наш расчёт). Запас по скорости у трансиверов поэтому невелик. Для очень медленных сетей выбирают трансивер, у которого паспортный диапазон скоростей это допускает.
Типичные случаи срабатывания (наш комментарий)
- Вывод TX микроконтроллера не переведён в альтернативную функцию CAN и стоит в нуле.
- Контроллер завис в момент передачи доминантного бита.
- Ошибка в разводке: TXD замкнут на землю.
Во всех случаях остальные узлы шины продолжают работу, а сбойный узел перестаёт передавать. Общие правила шины — в статье «CAN».
Не путать
С состоянием bus-off контроллера CAN: его включает сам контроллер по счётчику ошибок передачи, а тайм-аут TXD — аппаратная защита трансивера, которая ничего не знает о кадрах и ошибках.
Частые вопросы
Почему CAN не работает на очень низкой скорости?
Из-за тайм-аута TXD в трансивере. При низкой скорости последовательность доминантных битов длится дольше, и трансивер принимает её за зависание и отключает передатчик. NXP прямо пишет, что тайм-аут TJA1051 задаёт минимальную скорость 20 кбит/с (разд. 7.2.1), а TJA1050 рассчитан на 60 кбит/с … 1 Мбит/с.
Что происходит, когда сработал тайм-аут?
Передатчик отключается, и шина переходит в рецессивное состояние — остальные узлы могут работать. Передатчик включится снова, как только на TXD появится высокий уровень: таймер сбрасывается фронтом (TJA1050, TJA1051).
Может ли тайм-аут сработать в нормальной работе?
При поддерживаемых скоростях — не должен: битстаффинг ограничивает длину одинаковых битов в кадре, а самая длинная доминантная последовательность возникает в кадре ошибки — флаги ошибки от разных узлов накладываются и дают от 6 до 12 доминантных битов. При 60 кбит/с 12 битов — это 200 мкс против минимальных 250 мкс тайм-аута TJA1050: запас есть, но небольшой (наш расчёт). Срабатывает он, если TXD держат в нуле программно или аппаратно — например, вывод TX микроконтроллера не настроен и подтянут к земле.
Источники
- NXP (Philips). TJA1050 High speed CAN transceiver, product specification (22 October 2003) — функциональное описание: таймер запускается спадом на TXD; если низкий уровень длится дольше внутреннего таймера, передатчик отключается и шина переходит в рецессивное состояние; таймер сбрасывается фронтом на TXD; характеристики: tdom(TXD) 250 / 450 / 750 мкс (мин. / тип. / макс.); рабочие скорости 60 кбит/с … 1 Мбит/с
- NXP. TJA1051 High-speed CAN transceiver, product data sheet Rev. 9 (28 November 2017) — разд. 7.2.1: таймер запускается низким уровнем TXD, при превышении tto(dom)TXD передатчик отключается, шина освобождается; время тайм-аута задаёт минимальную скорость 20 кбит/с; табл. динамических характеристик: tto(dom)TXD 0,3 / 1 / 5 мс
Нашли ошибку?
Смотрите также
- CAN-трансиверМикросхема физического уровня между контроллером CAN и шиной
- Доминантный и рецессивный уровниДва состояния шины CAN: кто побеждает, уровни, связь с арбитражем
- TJA1050 и TJA1051Трансиверы CAN на 5 В: выводы, VIO у TJA1051T/3, уровни TXD и RXD, защиты
- CANCAN_H и CAN_L, терминаторы, кадр, арбитраж, ошибки, тайминг, MCP2515
- БитстаффингВставка бита после пяти одинаковых: синхронизация, ошибка заполнения