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

CAN FD

CAN FD — вторая версия протокола CAN: кадр с полем данных до 64 байт, которое после арбитража передаётся на более высокой скорости. Разбираем, что изменилось в кадре, как переключается скорость, зачем ISO добавила к CRC счётчик вставленных битов, как настроить тайминги фазы данных и выбрать трансивер.

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

CAN FD (CAN with Flexible Data-Rate) — расширение протокола CAN, которое Bosch опубликовала в 2012 году, а ISO включила в стандарт ISO 11898-1:2015. Физический уровень, топология, арбитраж и обработка ошибок остались прежними, а кадр изменился: поле данных выросло до 64 байт, и после арбитража кадр может передаваться на второй, более высокой скорости. Классический протокол CAN в терминах CAN in Automation теперь называется CAN CC; с 2024 года оба протокола описаны вместе в ISO 11898-1:2024.

Все числа в статье — из спецификации Bosch CAN FD 1.0, документов Bosch и CiA о доработке CRC для ISO, руководства Microchip по контроллерам MCP25XXFD и даташитов на трансиверы. Где расчёт наш, это сказано прямо.

Коротко

  • Кадр: те же SOF, идентификатор 11 или 29 бит и арбитраж; новые биты FDF, res, BRS и ESI; удалённых кадров нет.
  • Данные: до 64 байт. DLC 0–8 — от 0 до 8 байт, DLC 9–15 — 12, 16, 20, 24, 32, 48 и 64 байта.
  • Две скорости: номинальная — для арбитража, ACK и EOF; скорость данных — от точки выборки бита BRS до точки выборки разделителя CRC.
  • CRC: CRC-17 для полей данных до 16 байт, CRC-21 — для более длинных; вставленные биты входят в расчёт.
  • ISO и non-ISO: в ISO 11898-1:2015 в поле CRC добавлен счётчик вставленных битов, а начальное значение CRC — «10…0». Версии несовместимы.
  • Скорость данных: до 8 Мбит/с у контроллера MCP2518FD и трансиверов MCP2542FD; на высоких скоростях обязательна компенсация задержки трансивера.

Что изменилось по сравнению с классическим CAN

Кадр CAN FD начинается так же, как классический, поэтому арбитраж между кадрами обоих форматов работает как раньше. Отличия начинаются в поле управления.

Кадр CAN FD в базовом формате и классический кадр CANКадр CAN FD начинается так же, как классический: SOF, 11-битный идентификатор и бит IDE. Вместо RTR передаётся доминантный бит RRS, на месте доминантного r0 классического кадра — рецессивный FDF, за ним доминантный res, BRS и ESI. Поле данных — до 64 байт, поле CRC начинается со счётчика вставленных битов SC и содержит CRC из 17 или 21 бита. От точки выборки бита BRS до точки выборки разделителя CRC кадр передаётся на скорости фазы данных, остальное — на номинальной скорости.номинальная скоростьфаза данных: скорость данныхноминальнаяточка выборки BRSточка выборки разделителя CRCCAN FD, базовый формат (FBFF)SOFID11 битRRSIDEFDFresBRSESIDLC4 битаДанные0–64 байтаSC4 битаCRC17 или 21DelACK2 битаEOF7 битКлассический CAN, базовый форматSOFID11 битRTRIDEr0DLC4 битаДанные0–8 байтCRC15 битDelACK2 битаEOF7 бит
Кадр CAN FD в базовом формате над классическим кадром CAN. Медным выделены биты, которых нет в классическом кадре или которые там значат другое; синяя полоса — фаза данных на повышенной скорости
  • RRS вместо RTR. Удалённых кадров в формате CAN FD нет, и на месте бита RTR передаётся доминантный бит RRS. Классический удалённый кадр узел CAN FD передать может.
  • FDF. На месте доминантного бита r0 классического кадра стоит рецессивный FDF: он и отличает кадр CAN FD. В спецификации Bosch он назывался EDL.
  • res. За FDF всегда идёт доминантный резервный бит. Фронт от рецессивного FDF к доминантному res — опорный: по нему узлы жёстко синхронизируются, а передатчик измеряет задержку своего трансивера.
  • BRS. Рецессивный BRS включает скорость фазы данных, доминантный оставляет весь кадр на номинальной скорости.
  • ESI. Передатчик в состоянии error active передаёт ESI доминантным, в состоянии error passive — рецессивным. Так приёмники узнают о проблемах передатчика.
  • Длинное поле данных и CRC. До 64 байт данных; CRC-17 или CRC-21 вместо CRC-15, в ISO-версии — со счётчиком вставленных битов.
  • Подтверждение. Передатчик принимает разделитель CRC из одного или двух рецессивных битов, а доминантное подтверждение ACK может занять два бита: после быстрой фазы данных фазы приёмников немного расходятся.

Форматы кадров CiA называет FBFF (базовый формат CAN FD, идентификатор 11 бит) и FEFF (расширенный, 29 бит). В расширенном формате порядок битов как в классическом: SOF, 11 бит идентификатора, SRR, IDE, ещё 18 бит идентификатора, затем RRS, FDF, res, BRS, ESI и DLC.

Если res принят рецессивным, это сейчас ошибка формы. В ISO 11898-1:2015 есть и вариант «исключение протокола»: узел не сообщает об ошибке, а ждёт свободной шины, чтобы будущие форматы кадров не ломали сеть из узлов CAN FD. У MCP2518FD вариант выбирают битом PXEDIS.

DLC и длина поля данных

Код длины DLC по-прежнему 4-битный. Первые девять значений означают то же, что в классическом CAN, а значения 9–15, которые в классическом CAN тоже означают 8 байт, в CAN FD задают длинные поля:

DLCДвоичныйCAN, байтCAN FD, байтCRC в CAN FD
0000000CRC-17
1000111CRC-17
2001022CRC-17
3001133CRC-17
4010044CRC-17
5010155CRC-17
6011066CRC-17
7011177CRC-17
8100088CRC-17
91001812CRC-17
101010816CRC-17
111011820CRC-21
121100824CRC-21
131101832CRC-21
141110848CRC-21
151111864CRC-21

Промежуточных длин нет: 13 байт данных передают в поле на 16 байт, дополняя остаток. Узлам с ограниченным буфером, которые передают поле длиннее своих данных, спецификация Bosch советует заполнять остаток постоянным байтом, который не вызывает вставки битов, например 0xCC.

Две скорости: фаза арбитража и фаза данных

Скорость не может быть высокой, пока решается арбитраж: все узлы должны успеть увидеть каждый бит. Поэтому CAN FD передаёт на номинальной скорости начало кадра — до бита BRS — и конец: разделитель ACK и EOF, а также кадры ошибки и перегрузки. Если BRS рецессивный, контроллеры переключаются на скорость данных сразу после точки выборки BRS и возвращаются к номинальной в точке выборки разделителя CRC. Поэтому эти два бита «смешанные»: их суммарная длина — один номинальный бит плюс один бит фазы данных.

При ошибке в фазе данных узел сразу возвращается к номинальной скорости и передаёт флаг ошибки на ней. Бит фазы данных не может быть длиннее номинального. Правила счётчиков ошибок TEC и REC и переходов в error passive и bus-off те же, что в классическом CAN; контроллеры MCP25XXFD дополнительно считают ошибки отдельно для каждой фазы.

Битовый тайминг двух фаз

Для каждой фазы у контроллера свой набор параметров: предделитель, сегменты, ширина подстройки SJW. Правила те же, что в классическом CAN, — их разбирает калькулятор битового тайминга CAN. Но фаза данных устроена иначе:

  • Сегмент распространения почти не нужен. В фазе данных нет арбитража, сигнал не должен успеть дойти до дальнего узла и вернуться, поэтому спецификация Bosch разрешает для неё PROP_SEG(D) от нуля.
  • Передатчик не подстраивается в фазе данных: его собственные биты приходят с задержкой трансивера, и подстройка по ним только испортила бы тайминг.
  • Одинаковый квант. Microchip советует брать одинаковые предделители номинальной фазы и фазы данных: при одном кванте нет ошибок округления при переключении скорости.
  • Одинаковая точка выборки во всех узлах. От её положения зависит длина смешанных битов BRS и разделителя CRC, поэтому точки выборки фазы данных должны совпадать у всех узлов сети.

Пример из руководства Microchip — 500 кбит/с и 2 Мбит/с при тактовой частоте контроллера 40 МГц и кванте 25 нс:

ПараметрНоминальная фазаФаза данных
Бит2 мкс, 80 квантов500 нс, 20 квантов
SYNC + TSEG1 + TSEG21 + 63 + 161 + 15 + 4
Точка выборки80 %80 %
SJW16 квантов4 кванта
Регистры MCP2518FDCiNBTCFG: BRP 0, TSEG1 62, TSEG2 15, SJW 15CiDBTCFG: BRP 0, TSEG1 14, TSEG2 3, SJW 3

Номинальный сегмент распространения должен покрыть задержку TPROP=2 (tTXD–RXD+Tшины)T_\text{PROP} = 2\,(t_\text{TXD–RXD} + T_\text{шины}): до 255 нс на трансивер по ISO 11898-1:2015 и около 5 нс на метр кабеля. Для 40 м это 910 нс, то есть не меньше 36,4 кванта; выбрав 47 квантов, Microchip закладывает шину примерно до 60 м.

Допуск генератора считается для обеих фаз сразу. Кроме двух условий классического CAN

Δf≤SJWN20 NBT,Δf≤min⁡(PS1N, PS2N)2 (13 NBT−PS2N),\Delta f \le \frac{\mathrm{SJW}_N}{20\,\mathrm{NBT}}, \qquad \Delta f \le \frac{\min(\mathrm{PS1}_N,\,\mathrm{PS2}_N)}{2\,(13\,\mathrm{NBT} - \mathrm{PS2}_N)},

где длительность бита NBT и сегменты выражены в квантах, появляется такое же условие для фазы данных Δf≤SJWD/(20 DBT)\Delta f \le \mathrm{SJW}_D / (20\,\mathrm{DBT}) и ещё два, связывающие фазы через отношение предделителей (уравнения 3-15 и 3-16 в DS20005678E). Для примера выше наименьшее из пяти условий даёт 0,78 %. Для сравнения: наибольший допуск генератора в классическом CAN по спецификации Bosch — 1,58 %, и то на скоростях до 125 кбит/с.

CRC, вставленные биты и счётчик

Защита кадра от ошибок в CAN FD усилена четырьмя изменениями: полиномы CRC высшей степени, учёт вставленных битов в CRC, фиксированные вставленные биты в поле CRC и, в ISO-версии, счётчик вставленных битов.

Полиномы. Классический CAN использует CRC-15, CAN FD — CRC-17 для полей данных до 16 байт и CRC-21 для более длинных. Все три дают расстояние Хэмминга 6, а множитель (x+1)(x + 1) в каждом позволяет обнаружить любое нечётное число искажённых битов:

CRC-17:  x17+x16+x14+x13+x11+x6+x4+x3+x+1(0x3685B),CRC-21:  x21+x20+x13+x11+x7+x4+x3+1(0x302899).\begin{aligned} \text{CRC-17}: &\; x^{17} + x^{16} + x^{14} + x^{13} + x^{11} + x^{6} + x^{4} + x^{3} + x + 1 \quad (0\text{x}3685\text{B}), \\ \text{CRC-21}: &\; x^{21} + x^{20} + x^{13} + x^{11} + x^{7} + x^{4} + x^{3} + 1 \quad (0\text{x}302899). \end{aligned}

Все три CRC считаются с начала кадра одновременно, а передатчик отправляет тот, который соответствует формату и DLC. В отличие от классического CAN, в расчёт CRC кадра CAN FD входят и вставленные биты.

Фиксированные вставленные биты. В поле CRC обычное правило «после пяти одинаковых битов вставить противоположный» заменено фиксированным: один вставленный бит перед полем и ещё по одному после каждого четвёртого бита. Каждый такой бит — инверсия предыдущего, и приёмник, увидевший на его месте другое значение, фиксирует ошибку. Так длина поля CRC не зависит от передаваемых данных.

Счётчик вставленных битов. В 2014 году, когда стандарт ISO уже готовили, выяснилось, что исходная версия пропускает некоторые сочетания ошибок. Если помеха превращает обычный бит во вставленный или наоборот, приёмник удаляет не те биты, кадр сдвигается, и CRC такое искажение обнаруживает не всегда. Кроме того, при нулевом начальном значении регистр CRC не меняется, пока идут нулевые биты, — а SOF и старшие биты небольших идентификаторов доминантные. В патенте Bosch приведён пример: идентификатор 0x001 при искажении начала кадра принимается как 0x081.

Поэтому в ISO CAN FD передатчик считает вставленные биты кадра и в начале поля CRC передаёт их число по модулю 8 в коде Грея, бит чётности и фиксированный вставленный бит — инверсию бита чётности. Соседние значения в коде Грея отличаются одним битом, а чётность ловит одиночную ошибку в самом счётчике:

Вставленных битов, по модулю 8Код ГреяЧётностьФиксированный бит после
000001
100110
201101
301010
411001
511110
610101
710010

Приёмник сравнивает переданное число со своим подсчётом и при расхождении считает кадр ошибочным, как при несовпадении CRC. Чтобы ошибка осталась незамеченной, теперь нужно не меньше четырёх искажённых битов: два в счётчике и два вставленных или потерянных. Вдобавок регистры CRC-17 и CRC-21 в ISO-версии начинают не с нулей, а с «10…0» — единицы в старшем разряде.

Поле CRC кадра CAN FD с CRC-17 и счётчиком вставленных битов 3Поле CRC в ISO CAN FD: фиксированный вставленный бит, счётчик вставленных битов по модулю 8 в коде Грея (для 3 — 010), бит чётности 1, фиксированный бит 0, затем 17 бит CRC с фиксированным вставленным битом после каждого четвёртого бита поля и разделитель CRC. Всего 28 бит, из них 6 фиксированных вставленных.S0101016151413S1211109S8765S4321S0128 бит: счётчик 4, CRC 17, фиксированные вставленные 6, разделитель 1код Грея 010 = 3чётностьCRC-17, старший бит первым (номера разрядов)разделитель CRCфиксированный вставленный битсчётчик вставленных битов и чётность
Поле CRC кадра ISO CAN FD с CRC-17: фиксированный бит, счётчик 3 в коде Грея (010), чётность 1, фиксированный бит 0, затем 17 бит CRC с фиксированными битами после каждого четвёртого и разделитель — 28 бит

Вместе с разделителем поле CRC занимает 16 бит в классическом CAN, 28 бит с CRC-17 и 33 бита с CRC-21.

ISO CAN FD и non-ISO CAN FD

Кадры по спецификации Bosch 1.0 и по ISO 11898-1:2015 несовместимы: у них разное поле CRC и разное начальное значение CRC, и узел одной версии считает кадры другой ошибочными. CiA рекомендует называть их ISO CAN FD и non-ISO CAN FD и не смешивать в одной сети. Контроллеры MCP2518FD и M_CAN умеют обе версии: у MCP2518FD выбор делает бит ISOCRCEN регистра CiCON (после сброса — ISO), у IP-блока Bosch M_CAN — бит NISO регистра CCCR. При настройке нового узла этот бит стоит проверить первым.

Совместимость с классическими узлами

Каждый узел CAN FD умеет принимать и передавать классические кадры, поэтому может работать в старой сети. Обратное неверно: классический контроллер кадр CAN FD не разберёт и ответит на него кадром ошибки. Поэтому кадры CAN FD допустимы только в сети, где все узлы их понимают или где классические узлы на это время выключены из обмена. Спецификация Bosch предлагает именно такой путь перехода: например, использовать CAN FD только для прошивки блоков на конвейере, держа остальные контроллеры в дежурном режиме.

Длина кадра и пропускная способность

Длина кадра ISO CAN FD в базовом формате без динамических вставленных битов (наш расчёт по длинам полей из руководства Microchip): на номинальной скорости — 17 бит до BRS включительно и 9 бит ACK и EOF, на скорости данных — ESI и DLC (5 бит), 8N8N бит данных и 28 или 33 бита поля CRC. Расширенный формат добавляет к номинальной части 19 бит. Динамические вставленные биты в полях до CRC удлиняют кадр не больше чем на четверть.

T=17+9+3fN+5+8N+LCRCfD,T = \frac{17 + 9 + 3}{f_N} + \frac{5 + 8N + L_\text{CRC}}{f_D},

где 3 бита — межкадровый интервал на номинальной скорости, LCRCL_\text{CRC} — 28 или 33 бита. Период непрерывно идущих кадров и полезная скорость:

Номинальная / данных8 байт16 байт32 байт64 байт
CAN 500 кбит/с222 мкс288 кбит/сбольше 8 байт в кадр классического CAN не помещается
500 кбит/с / 500 кбит/с252 мкс254 кбит/с380 мкс337 кбит/с646 мкс396 кбит/с1,16 мс442 кбит/с
500 кбит/с / 2 Мбит/с107 мкс601 кбит/с139 мкс924 кбит/с205 мкс1,25 Мбит/с333 мкс1,54 Мбит/с
500 кбит/с / 5 Мбит/с77,4 мкс827 кбит/с90,2 мкс1,42 Мбит/с117 мкс2,19 Мбит/с168 мкс3,05 Мбит/с
1 Мбит/с / 8 Мбит/с41,1 мкс1,56 Мбит/с49,1 мкс2,61 Мбит/с65,8 мкс3,89 Мбит/с97,8 мкс5,24 Мбит/с

Классический CAN на 500 кбит/с переносит 8 байт за 222 мкс — около 288 кбит/с полезных данных без учёта вставленных битов. CAN FD с той же номинальной скоростью и 2 Мбит/с в фазе данных переносит 64 байта за 333 мкс — около 1,5 Мбит/с, впятеро больше. Без переключения скорости (BRS доминантный) выигрыш даёт только длинное поле данных: заголовок и CRC приходятся на большее число байтов.

Компенсация задержки передатчика

Передатчик CAN сравнивает каждый переданный бит с тем, что видит на шине, и при расхождении фиксирует ошибку бита. Свой бит он видит на выводе RX только через задержку петли трансивера — до 255 нс у трансиверов прежнего поколения и до 120 нс у MCP2542FD. На 8 Мбит/с бит длится 125 нс, и задержка становится сравнимой с ним: в обычной точке выборки на RX ещё предыдущий бит.

Компенсация задержки передатчика в фазе данных CAN FDПередатчик слышит свой бит на выводе CAN_RX только через время задержки петли трансивера. На скорости 8 Мбит/с бит длится 125 нс, и задержка около 112 нс почти равна биту. В обычной точке выборки, на 80 % бита, на CAN_RX ещё предыдущий бит, и без компенсации передатчик зафиксировал бы ошибку бита. Вторичная точка выборки SSP отстоит от начала переданного бита на измеренную задержку TDCV плюс смещение TDCO и попадает на тот же бит на CAN_RX.101101CAN_TXCAN_RXзадержка петли (TDCV)смещение (TDCO)точка выборки: на CAN_RX ещё прошлый битSSP: тот же бит8 Мбит/с: бит 125 нс, задержка ≈ 0,9 бита; вторичная точка выборки SSP = TDCV + TDCO
Компенсация задержки передатчика: обычная точка выборки на 80 % бита видит на CAN_RX ещё прошлый бит, вторичная точка выборки SSP смещена на измеренную задержку и попадает на тот же бит

Поэтому в фазе данных передатчик проверяет свои биты во вторичной точке выборки (SSP). Задержку он измеряет в каждом кадре на фронте FDF → res, а положение SSP — это задержка плюс смещение, в руководстве Microchip SSP=TDCV+TDCO\mathrm{SSP} = \mathrm{TDCV} + \mathrm{TDCO}. SSP может оказаться уже за концом переданного бита; на ошибку, найденную в SSP, передатчик реагирует в следующей обычной точке выборки. Приёмники и номинальная фаза компенсацию не используют.

  • MCP2518FD: режим задаёт поле TDCMOD регистра CiTDC — автоматический (измерить задержку и прибавить TDCO), ручной или выключен; Microchip советует включать автоматический режим при скорости данных от 1 Мбит/с. В примере 500 кбит/с / 2 Мбит/с TDCO = 15 квантов ставит SSP на 80 % бита.
  • M_CAN: задержку измеряет всегда; сумма задержки и смещения должна быть меньше 6 бит фазы данных и не больше 127 квантов.

Трансиверы для CAN FD

Физический уровень CAN FD — тот же ISO 11898-2, но к трансиверу предъявляются новые требования: малая задержка петли и её симметрия. Задержка петли несимметрична, а передатчик CAN не двухтактный, поэтому рецессивные биты на RXD укорачиваются, и на высокой скорости укороченного бита может не хватить для правильной выборки. Поэтому для трансиверов CAN FD нормируют длительность бита на RXD и на шине. Пример — MCP2542FD при нагрузке 60 Ом и 100 пФ:

СкоростьБит на TXDБит на RXDБит на шине
2 Мбит/с500 нс450–550 нс435–530 нс
5 Мбит/с200 нс160–220 нс155–210 нс
8 Мбит/с120 нс85–135 нс100–140 нс

Значения для 2 и 5 Мбит/с соответствуют ISO 11898-2:2016, а для 8 Мбит/с даны в даташите как характеризованные, вне норм стандарта. Задержка от TXD до RXD у MCP2542FD и MCP2561/2FD — до 120 нс. Даташит MCP2561/2FD предупреждает: при скоростях выше 1 Мбит/с может понадобиться синфазный дроссель.

Контроллеры CAN FD

Классические контроллеры — MCP2515, bxCAN в STM32F1 и F4 — кадры CAN FD не понимают; их разбор — в статье о CAN. Для CAN FD нужен контроллер новой версии:

  • MCP2518FD — внешний контроллер с интерфейсом SPI: до 1 Мбит/с в фазе арбитража и до 8 Мбит/с в фазе данных, ISO 11898-1:2015, прошёл тесты на соответствие по ISO 16845-1:2016. Поддерживает и non-ISO CAN FD.
  • M_CAN — IP-блок контроллера Bosch для встраивания в микросхемы; поддерживает ISO и Bosch 1.0 (бит NISO) и автоматическую компенсацию задержки.

Типичные ошибки

  • Разные версии протокола. Узлы ISO и non-ISO CAN FD видят кадры друг друга как ошибочные. Проверьте ISOCRCEN, NISO или аналогичный бит во всех узлах.
  • Классический узел в сети. Первый же кадр CAN FD вызывает кадры ошибки от классических контроллеров.
  • Выключена компенсация задержки. Когда задержка петли дольше времени до точки выборки — на скоростях в несколько мегабит в секунду — передатчик без TDC фиксирует ошибки бита на собственных кадрах. Microchip советует включать автоматическую компенсацию уже с 1 Мбит/с.
  • Разные точки выборки фазы данных. Смешанные биты BRS и разделителя CRC получаются разной длины в разных узлах.
  • Скорость данных не по трансиверу и линии. Длительность бита на RXD при данной скорости нормирована у конкретного трансивера; отводы и неоднородности линии на высоких скоростях мешают сильнее, чем в фазе арбитража.

Частые вопросы

Чем CAN FD отличается от обычного CAN?

Арбитраж и физический уровень те же, но кадр другой. Поле данных — до 64 байт вместо 8, а после арбитража кадр может переключиться на вторую, более высокую скорость: бит BRS включает её до разделителя CRC. Для длинных полей данных CRC длиннее — 17 или 21 бит, в ISO-версии к нему добавлен счётчик вставленных битов. Удалённых кадров в формате CAN FD нет.

Совместим ли CAN FD с классическим CAN?

Частично. Контроллер CAN FD умеет передавать и принимать классические кадры, поэтому в смешанной сети он работает, пока сам не отправляет кадры CAN FD. Классический контроллер кадр CAN FD не понимает и отвечает на него кадром ошибки. Поэтому кадры CAN FD допустимы, только когда классические узлы отключены от обмена, например в дежурном режиме на время прошивки.

Какая скорость у CAN FD?

Скоростей две. Номинальная — для арбитража, подтверждения и конца кадра — обычно та же, что в классическом CAN, до 1 Мбит/с. Скорость фазы данных выше: контроллер MCP2518FD поддерживает до 8 Мбит/с, трансиверы MCP2561/2FD и MCP2542FD оптимизированы для 2, 5 и 8 Мбит/с. Реальный предел задают трансиверы, длина линии и отводы.

Что такое ISO CAN FD и non-ISO CAN FD?

Non-ISO CAN FD — исходная спецификация Bosch 1.0 2012 года. В ISO 11898-1:2015 поле CRC дополнено счётчиком вставленных битов, а CRC начинает считаться с ненулевого значения. Кадры двух версий несовместимы: узел одной версии считает кадры другой ошибочными. Поэтому в сети все узлы должны работать в одной версии; у контроллеров её выбирают битом, например ISOCRCEN в MCP2518FD или NISO в M_CAN.

Какие значения DLC бывают в CAN FD?

Коды 0–8 значат то же, что в классическом CAN, — от 0 до 8 байт. Дальше длины растут ступенями: DLC 9 — 12 байт, 10 — 16, 11 — 20, 12 — 24, 13 — 32, 14 — 48, 15 — 64 байта. Если данных, например, 13 байт, выбирают DLC 10 и дополняют поле до 16 байт.

Зачем в CAN FD счётчик вставленных битов?

Если помеха превращает обычный бит во вставленный или наоборот, приёмник неверно удаляет вставленные биты, и кадр сдвигается. В ISO CAN FD передатчик сообщает число вставленных битов по модулю 8 в коде Грея с битом чётности в начале поля CRC. Приёмник сверяет его со своим подсчётом и при расхождении считает кадр ошибочным, как при несовпадении CRC.

Источники

  1. Robert Bosch GmbH. CAN with Flexible Data-Rate, Specification Version 1.0, 17 April 2012 — введение — совместимость с CAN 2.0; разд. 3 — форматы кадров, биты EDL (в ISO — FDF), BRS, ESI, коды DLC, полиномы CRC-15, CRC-17 и CRC-21, разделитель CRC и ACK; разд. 5 — фиксированные вставленные биты; разд. 8 — переключение скорости, требования к таймингам обеих фаз, условия допуска генератора, компенсация задержки трансивера; разд. 9 — заполнение поля данных
  2. A. Mutter (Robert Bosch GmbH). Summary of the discussion regarding the CAN FD CRC issue, CiA white paper, 21.12.2014 — разд. 6 — счётчик вставленных битов по модулю 8, код Грея, бит чётности, таблица кодов; начальное значение CRC «10…0»; порядок битов кадра ISO CAN FD и примеры поля CRC
  3. A. Mutter, F. Hartwich. Advantages of CAN FD Error detection mechanisms compared to Classical CAN, iCC 2015 — четыре улучшения обнаружения ошибок; длина поля CRC: 16, 28 и 33 бита
  4. F. Hartwich. CAN with Flexible Data-Rate, iCC 2012 — задержка петли трансиверов по ISO 11898-5 — до 255 нс, измерение задержки на фронте EDL → r0, вторичная точка выборки, опыт 0,5/15 Мбит/с
  5. Microchip. MCP25XXFD CAN FD Controller Module Family Reference Manual, DS20005678E — разд. 1 — длины полей кадра, табл. 1-1 DLC, ISO и non-ISO CRC; разд. 3.4 — номинальная скорость и скорость данных, задержка распространения (уравнение 3-9), TDC и SSP (3-10), допуск генератора (3-12–3-16), рекомендации и пример 500 кбит/с / 2 Мбит/с (табл. 3-3–3-5)
  6. Microchip. MCP2518FD External CAN FD Controller with SPI Interface, DS20006027B, 2020 — скорости до 1 Мбит/с в фазе арбитража и до 8 Мбит/с в фазе данных; регистры CiCON (ISOCRCEN, PXEDIS), CiNBTCFG, CiDBTCFG, CiTDC; табл. 7-4; приложение B — тесты по ISO 16845-1:2016
  7. Microchip. MCP2561/2FD High-Speed CAN Flexible Data Rate Transceiver, DS20005284B — задержка распространения до 120 нс, симметрия петли, длительность бита на RXD при 2, 5 и 8 Мбит/с
  8. Microchip. MCP2542FD/4FD, MCP2542WFD/4WFD CAN FD Transceiver, DS20005514C, 2020 — ISO 11898-2:2016, до 8 Мбит/с; табл. 2-2 — задержки и длительность бита на RXD и на шине при 1, 2, 5 и 8 Мбит/с
  9. Robert Bosch GmbH. M_CAN Controller Area Network User’s Manual, Revision 3.3.0, 2018 — бит CCCR.NISO — выбор ISO или Bosch 1.0; разд. 3.1.4 — компенсация задержки передатчика и её пределы
  10. Robert Bosch GmbH. Patent US 10,083,149 B2: Method for serially transmitting a frame from a transmitter to at least one receiver, 2018 — слабость CRC с нулевым начальным значением, начальное значение «1…0», длина поля CRC 17 + 3 + 1 + 6 и 21 + 3 + 1 + 7 бит
  11. CAN in Automation. Cyclic redundancy check (CRC) in CAN frames; CAN FD — the basic idea — термины ISO CAN FD и non-ISO CAN FD, недопустимость смешения; CAN CC и CAN FD в ISO 11898-1:2024; форматы FBFF и FEFF