реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Поведение при отключенных устройствах (no ack)
_3m
сообщение Apr 29 2016, 13:57
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Во всех ли случаях контроллер переходит в ERROR PASSIVE когда нет подключенных устройств (обрыв кабеля, ACK не выдается) ?

Разбираюсь с формированием флагов состояния и счетчиками ошибок. (линукс, socketcan, чип allwinner A20)
Обнаружил что если во время работы отключить все кан устройства выдернув кабель начинает увеличиваться tx error counter и когда он достигает 128 драйвер рапортует о состоянии ERRER PASSIVE. Это соответствует спецификации.

Если же ни одного устройства не подключено при старте или рестарте драйвера он переходит в состояние ERROR WARNING, при этом tx error counter равен 128. Нет ли здесь ошибки ? Разве может быть ERROR WARNING при том что счетчик ошибок = 128 ?

В примечаниях спецификации бош упоминается ситуация старта системы когда еще некому выдавать ACK и там написано что контроллер не должен переходить в состояние BUS-OFF.
Go to the top of the page
 
+Quote Post
AndruB
сообщение May 7 2016, 15:17
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 31-07-07
Из: Москва
Пользователь №: 29 490



У Миландра это описано так :

В каждом CAN контроллере имеется два счетчика.
Этими счетчиками являются счетчик ошибок приема и счетчик ошибок передачи .
Изменение состояния этих счетчиков происходит при приеме или передаче кадра ошибки.
Когда любой счетчик достигает значения 128, контроллер CAN переходит в режим «error passive».
В этом режиме он продолжает отзываться на кадры ошибки, однако при генерации кадра ошибки он вместо доминантных битов выставляет на шину рецессивные.
Если счетчик ошибок передачи достигает значения 255, то контроллер CAN переходит в режим «bus-off» и больше не принимает участия в обмене по шине.
Для возобновления обмена необходимо вмешательство процессора, который повторно инициализирует контроллер и подключает его обратно к шине.


--------------------
Обойденные грабли - недополученный опыт!
Go to the top of the page
 
+Quote Post
Doka
сообщение Sep 1 2016, 09:13
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



цитата из Миландра - почти цитирование стандарта бош, за исключением последней строчки:
ЕМНИП, выход из BUSOFF зависит от конкретной реализации - некоторые контроллеры надо из программы дергать, а некоторые имеют флаг, отвечающий за автоматический выход из BUSOFF по условию 11*28 рецесивных бит (согласно конечному автомату на счетчик ошибок из стандарта бош).

еще момент:
Цитата
Обнаружил что если во время работы отключить все кан устройства выдернув кабель начинает увеличиваться tx error counter и когда он достигает 128 драйвер рапортует о состоянии ERRER PASSIVE.
это тоже зависит от конкретной реализации - у неокторые есть бит SingleShot (выключен по умолчанию) - при включении при отправке и неполучении аск не будет пытаться вновь передать кадр (в каких-то применениях может оказаться полезным)



--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
nordrise
сообщение Apr 24 2018, 12:41
Сообщение #4





Группа: Новичок
Сообщений: 2
Регистрация: 20-10-17
Пользователь №: 99 842



Цитата(AndruB @ May 7 2016, 18:17) *
Когда любой счетчик достигает значения 128, контроллер CAN переходит в режим «error passive».
В этом режиме он продолжает отзываться на кадры ошибки, однако при генерации кадра ошибки он вместо доминантных битов выставляет на шину рецессивные.

тоже читал это в стандарте, но не понимаю какой смысл выставлять passive error frame из рецессивных битов?
все равно никакой узел это не увидит...
Go to the top of the page
 
+Quote Post
syoma
сообщение Apr 30 2018, 13:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата
Обнаружил что если во время работы отключить все кан устройства выдернув кабель начинает увеличиваться tx error counter и когда он достигает 128 драйвер рапортует о состоянии ERRER PASSIVE. Это соответствует спецификации.
Если же ни одного устройства не подключено при старте или рестарте драйвера он переходит в состояние ERROR WARNING, при этом tx error counter равен 128. Нет ли здесь ошибки ? Разве может быть ERROR WARNING при том что счетчик ошибок = 128 ?

STMовский CAN передатчик ведет себя точно также... При этом во втором случае он продолжает передавать на пинах.

Цитата
В примечаниях спецификации бош упоминается ситуация старта системы когда еще некому выдавать ACK и там написано что контроллер не должен переходить в состояние BUS-OFF.

Наверное, эти гады что-то знают...

ИМХО в первом случае передатчик знает, что на шине кто-то был, поэтому при увеличении счетчика ошибок первым делом делает так, чтобы он не уложил уже существующую сеть. А во втором случае возможно это связано с автоопределением скорости - т.е. он будет что-то передавать, пока не получит первый Ack - это значит, что приемник настроился на нужную частоту. Если он в эетом случае быстро перейдет в Error Passive, то передача остановится и приемнику не на что будет настраиваться.
ПС. Это все предположения.
Go to the top of the page
 
+Quote Post
yes
сообщение May 2 2018, 17:52
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(nordrise @ Apr 24 2018, 15:41) *
тоже читал это в стандарте, но не понимаю какой смысл выставлять passive error frame из рецессивных битов?
все равно никакой узел это не увидит...

так _все_ узлы выставляют error frame - типа некая пауза для восстановления линии, возможности перехода глючного узла в пассивное состояние
ну и завязано на эти счетчики ошибок и хитрый бошевский алгоритм
я миландр не читал, но осуждаю sm.gif там еще бывают инкременты не на 1
вот http://www.can-wiki.info/doku.php?id=can_faq:can_faq_erors по-моему лучше описано

и, кстати, встречал у крупных производителей свои расширения обработчика ошибок (полагаю, что это секретно и публиковать нельзя, но добавляются еще таймеры) - проблема дописывать это вместо прошитого в железе стандартного обработчика...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 13:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016