Jump to content

    
Sign in to follow this  
jcxz

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

Recommended Posts

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

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

Из 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.

 

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

Edited by Andrew_Q

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
On 5/29/2020 at 1:48 PM, jcxz said:

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

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

Share this post


Link to post
Share on other sites
6 минут назад, Doka сказал:

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

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
On 6/1/2020 at 12:18 PM, Edit2007 said:

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

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

----

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

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

Share this post


Link to post
Share on other sites
28 минут назад, Doka сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
3 minutes ago, jcxz said:

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this