Перейти к содержанию

Тайм-аут доминантного состояния TXD

Если микроконтроллер завис, держа вывод TX в нуле, трансивер CAN будет непрерывно передавать доминантный уровень, и вся шина остановится. Чтобы один сбойный узел не блокировал сеть, трансиверы считают, сколько длится ноль на TXD, и отключают передатчик по тайм-ауту.

Обновлено Редакция GAW

Тайм-аут доминантного состояния TXD (TXD dominant time-out) — защита в CAN-трансивере: если на входе TXD слишком долго держится логический ноль, трансивер отключает передатчик и отпускает шину в рецессивное состояние. Так один узел с зависшим контроллером или ошибкой в прошивке не может заблокировать всю сеть постоянным доминантным уровнем (NXP TJA1050).

Как работает

Таймер запускается спадом на TXD. Если низкий уровень длится дольше времени тайм-аута, передатчик выключается; таймер сбрасывается фронтом на TXD, и передатчик снова работает (TJA1050; TJA1051, разд. 7.2.1). NXP описывает отключение именно передатчика.

ТрансиверВремя тайм-аута (мин. / тип. / макс.)Скорости
TJA1050250 / 450 / 750 мкс60 кбит/с … 1 Мбит/с
TJA10510,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 микроконтроллера не настроен и подтянут к земле.

Источники

  1. NXP (Philips). TJA1050 High speed CAN transceiver, product specification (22 October 2003) — функциональное описание: таймер запускается спадом на TXD; если низкий уровень длится дольше внутреннего таймера, передатчик отключается и шина переходит в рецессивное состояние; таймер сбрасывается фронтом на TXD; характеристики: tdom(TXD) 250 / 450 / 750 мкс (мин. / тип. / макс.); рабочие скорости 60 кбит/с … 1 Мбит/с
  2. 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 мс

Нашли ошибку?