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

 
 
 
Reply to this topicStart new topic
> Детектирование ошибок шины ядром CAN, [не совсем очевидный момент спецификации CAN2.0B]
Doka
сообщение Jul 5 2017, 12:25
Сообщение #1


Electrical Engineer
******

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



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

Но как поступать, в случае наличия ошибок формы также в разделителях кадров ошибки и перегрузки?!
Необходимо ли на это реагировать (IRQ/Flag) и инкрементировать счётчик ошибок?!
Если да, то почему?
Если нет, то почему?


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


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
bullit
сообщение Nov 23 2017, 12:47
Сообщение #2


пуля
****

Группа: Свой
Сообщений: 674
Регистрация: 10-05-06
Из: Уфа
Пользователь №: 16 959



Если еще актуально:
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 - говорит о том, что либо не настроены тайминги (скорость), либо никого нет на шине. Ну и т.д.

Надеюсь помог!
Go to the top of the page
 
+Quote Post

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

 


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


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