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

Детектирование ошибок шины ядром CAN

Согласно спецификации ядро CAN должно детектировать ряд предопределенных ошибок во входном потоке, проблема в том что спека чётко не указывает в каких именно кадрах ядро CAN должно проверять наличие ошибок, однозначно это требуется для кадров данных, включая такие поля как CRC DELIMITER, ACK DELIMITER, EOF (т.н. ошибка формы, когда в принимаемом сообщении какое-нибудь фиксированное поле имеет запрещённое значение).

 

Но как поступать, в случае наличия ошибок формы также в разделителях кадров ошибки и перегрузки?!

Необходимо ли на это реагировать (IRQ/Flag) и инкрементировать счётчик ошибок?!

Если да, то почему?

Если нет, то почему?

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


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

Если еще актуально:

https://en.wikipedia.org/wiki/CAN_bus#Error_frame

 

Не знаю где как, но в stm32 аппаратный кан выдаёт следующие ошибки:

#define HAL_CAN_ERROR_NONE ((uint32_t)0x00) /*!< No error */

#define HAL_CAN_ERROR_EWG ((uint32_t)0x01) /*!< EWG error */

#define HAL_CAN_ERROR_EPV ((uint32_t)0x02) /*!< EPV error */

#define HAL_CAN_ERROR_BOF ((uint32_t)0x04) /*!< BOF error */

#define HAL_CAN_ERROR_STF ((uint32_t)0x08) /*!< Stuff error */

#define HAL_CAN_ERROR_FOR ((uint32_t)0x10) /*!< Form error */

#define HAL_CAN_ERROR_ACK ((uint32_t)0x20) /*!< Acknowledgment error */

#define HAL_CAN_ERROR_BR ((uint32_t)0x40) /*!< Bit recessive */

#define HAL_CAN_ERROR_BD ((uint32_t)0x80) /*!< LEC dominant */

#define HAL_CAN_ERROR_CRC ((uint32_t)0x100) /*!< LEC transfer error */

 

TEC и REC считаются апапратно.

 

На эти ошибки реагировать можно по разному: например наличие ошибки Acknowledgment error - говорит о том, что либо не настроены тайминги (скорость), либо никого нет на шине. Ну и т.д.

 

Надеюсь помог!

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


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

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

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

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

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

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

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

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

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

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