Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 04.12.2018, 11:29  
retro55
Временная регистрация
 
Регистрация: 15.12.2006
Сообщений: 74
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 3 сообщении(ях)
retro55 на пути к лучшему
По умолчанию Знатокам шины CAN. Как программно можно сбросить счетчики ошибок шины CAN по приему и передаче?

Дело в том, что в нормальном режиме, когда можно и передавать в шину CAN сообщения и принимать сообщения, отсутствие подтверждения камень воспринимает не иначе, как ошибку, увеличивает счетчик ошибок передачи TEC на 8. Досчитал до 250 и привет родителям, входит в ступор, который называется bus of состоянием. Вывести его из этого состояния мне не удалось никакими силами. Вообще как я понял, единственным метод борьбы с счетчиками это передача и прием правильных сообщений, то-есть с подтверждением, все как положено. Сбросить счетчики мне удалось только путем полного выключения платы. Можно конечно работать в режиме loopback, но тогда не сможешь читать сообщения с шины, а только свои собственные, что не очень интересно. Камень stm32f205 с двумя CAN шинами.
Реклама:

Последний раз редактировалось retro55; 04.12.2018 в 11:34. Причина: jhgvkkuj
retro55 вне форума  
Непрочитано 04.12.2018, 11:41  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Знатокам шины CAN. Как программно можно сбросить счетчики ошибок шины CAN по приему и передаче?

Вполне можно с этим бороться, я на STM32F042 тоже сначала мучился (при отсутствии "слушателей" на шине было невесело), но настройками удалось выкрутиться.
Вот так все ошибки сбрасываются:
Код:
    if(CAN-›ESR & (CAN_ESR_BOFF | CAN_ESR_EPVF | CAN_ESR_EWGF)){ // much errors - restart CAN BUS
        MSG("bus-off, restarting\n");
        // request abort for all mailboxes
        CAN-›TSR |= CAN_TSR_ABRQ0 | CAN_TSR_ABRQ1 | CAN_TSR_ABRQ2;
        // reset CAN bus
        RCC-›APB1RSTR |= RCC_APB1RSTR_CANRST;
        RCC-›APB1RSTR &= ~RCC_APB1RSTR_CANRST;
        can_status = CAN_ERROR;
}
__________________
Смерть бандеровской мразоте!

Последний раз редактировалось eddy; 04.12.2018 в 11:44.
eddy на форуме  
Сказали "Спасибо" eddy
retro55 (04.12.2018)
Непрочитано 04.12.2018, 13:16  
retro55
Временная регистрация
 
Регистрация: 15.12.2006
Сообщений: 74
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 3 сообщении(ях)
retro55 на пути к лучшему
По умолчанию Re: Знатокам шины CAN. Как программно можно сбросить счетчики ошибок шины CAN по приему и передаче?

Сообщение от eddy Посмотреть сообщение
Вполне можно с этим бороться, я на STM32F042 тоже сначала мучился (при отсутствии "слушателей" на шине было невесело), но настройками удалось выкрутиться.
Вот так все ошибки сбрасываются:
Код:
    if(CAN-›ESR & (CAN_ESR_BOFF | CAN_ESR_EPVF | CAN_ESR_EWGF)){ // much errors - restart CAN BUS
        MSG("bus-off, restarting\n");
        // request abort for all mailboxes
        CAN-›TSR |= CAN_TSR_ABRQ0 | CAN_TSR_ABRQ1 | CAN_TSR_ABRQ2;
        // reset CAN bus
        RCC-›APB1RSTR |= RCC_APB1RSTR_CANRST;
        RCC-›APB1RSTR &= ~RCC_APB1RSTR_CANRST;
        can_status = CAN_ERROR;
}
Ну ты корифей, я только не понял, что то за функция
MSG("bus-off, restarting\n"); // объясни как этим пользоваться
У меня еще вторая проблема
В библиотеке HAL есть функция деинициализации CAN шины, называется HAL_CAN_DeInit ( ( &hcan2 ) ) , так вот эта функция не только выключает CAN шину но и переводит эти два пина в обычные входы. Если эта функция вызывается до того как CAN шина запускалась, то она работает нормально, но если CAN шина уже запускалась, то сразу после команды
/* Configure IO Direction in Input Floating Mode */
GPIOx-›MODER &= ~(GPIO_MODER_MODER0 ‹‹ (position * 2U));
выскакивает 0xf9 счетчик ошибок REC по приему на CAN1 и нормально на CAN2. В последствии я вообще перестал использовать эту функцию деинициализации. Я подозреваю, что там получается соединились два входа. Вход Тх микросхемы Mcp 2551 и вход микропроцессора B9, надо наверно поставить резистор на 3,3V килоом 5.
retro55 вне форума  
Непрочитано 04.12.2018, 13:26  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Знатокам шины CAN. Как программно можно сбросить счетчики ошибок шины CAN по приему и передаче?

Сообщение от retro55 Посмотреть сообщение
что то за функция
Это - для отладки, не обращай на нее внимания.
Сообщение от retro55 Посмотреть сообщение
В библиотеке HAL
Не надо калом пользоваться.
__________________
Смерть бандеровской мразоте!
eddy на форуме  
Непрочитано 04.12.2018, 23:02  
retro55
Временная регистрация
 
Регистрация: 15.12.2006
Сообщений: 74
Сказал спасибо: 1
Сказали Спасибо 13 раз(а) в 3 сообщении(ях)
retro55 на пути к лучшему
По умолчанию Re: Знатокам шины CAN. Как программно можно сбросить счетчики ошибок шины CAN по приему и передаче?

Проблема решена.
retro55 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27


Часовой пояс GMT +4, время: 11:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot