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

stm32 bxCAN при выходе из buss off не сбрасывает REC

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

ну то есть шина шумная - все ноды отваливаются периодически, но у stm-а получается период короткий и слишком большие паузы между "доступностью шины"

 

стоит ABOM - то есть автоматом должен поймать 128 кусков по 11 рецесив бит и т.д.

вручную управлять выходом из bus off (то есть инициализирую по прерывания BOF) такая же фигня, счетчик REC остается в том состоянии что был (и TEC тоже, по-моему, но сейчас чего-то я засомневался - посмотрю позже)

а по описанию обработчика ошибок в CAN - должен выходить после инициализации с REC=TEC=0

 

это бага такая или я что-то не так делаю?

 

в принципе, сбросить эти счетчики у меня получилось сбросом всего камня, но хотелось бы найти более гуманный способ (ну и задержку сброс/запуск дает, и переделывать код под такой режим лень....)

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


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

BUS OFF чаще всего из-за несовпадения скорости (например внутренний генератор неточный).

Пересброс СAN обычно делается через его повторную инициализацию (чтоб весь МК не сбрасывать). Если в параметрах уверены - достаточно бывает установить режим инициализации СAN сбросить флаги ошибок, затем вернуться в рабочий режим.

PS - CAN использую не от STM.

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


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

Я вопрос изучал года три назад (на STM32F105), и, в итоге, для сброса ошибок не делаю НИ-ЧЕ-ГО. Бит ABOM работает - при наступлении тишины в шине всё само собой восстанавливается.

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


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

я не говорю, что не работает и не восстанавливается:

на некотором удаленном тестбенче, с которого доступны только логи из устройства (прежде всего результаты периодических опросов статус-бит CAN-a, счетчиков ошибки и т.п.) и CAN-логгера, видно, что устройство на stm32 отваливается от шины чаще и имеет большую среднюю задержку на передачу сообщений

 

при отладе я увидел, что REC не сбрасывается

а тут написано

http://www.can-wiki.info/doku.php?id=can_faq:can_faq_erors

A node which is Bus Off is permitted to become Error Active (no longer Bus Off) with its error counters both set to 0 after 128 occurrence of 11 consecutive recessive bits have been monitored on the bus.

 

то есть после сброса stm32 оказывается не в active, а passive error

 

вопросы к более опытным товарищам: может ли это влиять на задержки? какой механизм выхода из BOF (сброс REC или нет) реализован в can контроллерах других фирм? может встречалась худшая работа stm, чем других контроллеров на одной шине?

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


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

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

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

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

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

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

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

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

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

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