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

Нестандартное использование DLC.

Имеем обычный CAN (не CAN-FD).

Судя по разным описаниям поле DLC кадра может содержать значения в диапазоне 0...8. Также кое где встречал упоминания, что при прочих значениях DLC длина кадра считается == 8.

Но не очень понятно: допустимо ли по стандарту в этом поле передавать значения >8 ?

Попробовал (XMC4700) - значения >8 в DLC нормально передаются (вижу лог.анализатором) и нормально принимаются удалённой стороной. USB снифер показывает, что передаются совершенно нормальные кадры длиной ==8 байт.

Так получается значит - можно? Или есть какие-то расширения стандарта, с которыми может быть конфликт?

 

PS: Лишние 3 бита для данных в коротком CAN-кадре часто были бы весьма полезны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из Wiki.

It is physically possible for a value between 9–15 to be transmitted in the 4-bit DLC, although the data is still limited to eight bytes. Certain controllers allow the transmission or reception of a DLC greater than eight, but the actual data length is always limited to eight bytes.

 

Ключевое слово: некоторые контроллеры допускают передачу.

Изменено пользователем Andrew_Q

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит по идее на этих "некоторых контроллерах" можно сиё использовать. И не будет конфликтов с какими-то стандартами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если вы только между "своими некоторыми контроллерами" связь держите, то под вашу ответственность можно. А если кто-то со стороны в вашей сети присутствует, или вы в чужую сеть входите - то лучше не рисковать. И c CAN FD  могут возникнуть проблемы. Там это поле по полной используется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 5/29/2020 at 1:48 PM, jcxz said:

PS: Лишние 3 бита для данных в коротком CAN-кадре часто были бы весьма полезны.

а чем не устраивает использование длинного ID  (29 vs 11 bit) для передачи пользовательской инфы на кадрах без данных?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Doka сказал:

а чем не устраивает использование длинного ID  (29 vs 11 bit) для передачи пользовательской инфы на кадрах без данных?

И длинные и короткие ID - используются. Вопрос был ближе к теоретической возможности экономии полосы пропускания - передать больше полезных бит на той же бодовой скорости. Как резерв на будущее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 5/29/2020 at 1:48 PM, jcxz said:

Попробовал (XMC4700) - значения >8 в DLC нормально передаются (вижу лог.анализатором) и нормально принимаются удалённой стороной. USB снифер показывает, что передаются совершенно нормальные кадры длиной ==8 байт.

очень сильно зависит от реализации IP-core CAN ctrl, даже может на разных ревизиях кремния одного и того же партнамбера поведение отличаться.

т.е. ничто не мешает разработчику закодировать case в RTL так чтобы при записи в регистр длины значения >= 8, в DLC принудительно 8 записывалась

 

 

также, если явно не указано в ISO стандарте на CAN,

хорошим референсом может служить другой ISO - CAN conformance test suite, где расписан набор тестов, который должен пройти каждый новый кастомный контроллер CAN.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/1/2020 at 12:18 PM, Edit2007 said:

А если кто-то со стороны в вашей сети присутствует, или вы в чужую сеть входите - то лучше не рисковать.

есть немного потеоритизировать, то некоторые реализации контроллеров вполне могут (и имеют право) выставлять кадр ошибки при приеме DLC>8 (разработчики могут пожелать включить эту ситуацию в обработчик Form Error, например)

----

ЗЫЖ говорю это по опыту того, когда писали свой CAN с блекджеком и ТТ фичулями, многие моменты приходилось проговаривать с верификаторами:

то, что не было явно прописано в спеке, надо было утвердить детерминированное поведение нашего ядра и внести в документацию на ядро.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, Doka сказал:

очень сильно зависит от реализации IP-core CAN ctrl, даже может на разных ревизиях кремния одного и того же партнамбера поведение отличаться.

Это настораживает... :umnik2:

10 минут назад, Doka сказал:

есть немного потеоритизировать, то некоторые реализации контроллеров вполне могут (и имеют право) выставлять кадр ошибки при приеме DLC>8 (разработчики могут пожелать включить эту ситуацию в обработчик Form Error, например)

Сеть у нас - внутренняя, в которой присутствуют исключительно только наши устройства на одном и том же МК. И протокол (поверх CAN) - свой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, jcxz said:

Сеть у нас - внутренняя, в которой присутствуют исключительно только наши устройства на одном и том же МК. И протокол (поверх CAN) - свой.

тогда можно отбросить сомнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...