Easyelectronics.ru

Электроника для всех
Текущее время: 29 окт 2020, 22:39

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Внимание, засада с CAN фильтрами!
СообщениеДобавлено: 12 апр 2012, 13:16 
Только пришел

Зарегистрирован: 29 сен 2011, 19:37
Сообщения: 21
Отлаживал намедни устройство общающееся с собратьями по шине CAN.
Вылезла проблема, при прямой инициализации заголовка (ID) сообщения, прерывание по RX не происходило.
Оказалось что при инициализации нужно смещать ID и маску на 3 бита влево.
Код:
void init_filter_mask(unsigned int idFilterMask,unsigned char filterBank,unsigned char filterFifo)
{
   unsigned int shiftedFilter=idFilterMask<<3;
   CAN_FilterInitTypeDef CAN_FilterInitStructure;
   /* CAN filter init */
   CAN_FilterInitStructure.CAN_FilterNumber = filterBank;
   CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
   CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
   CAN_FilterInitStructure.CAN_FilterIdHigh = ((unsigned short)((shiftedFilter&0xFFFF0000)>>16));
   CAN_FilterInitStructure.CAN_FilterIdLow = ((unsigned short)(shiftedFilter&0x0000FFFF)) ;
   CAN_FilterInitStructure.CAN_FilterMaskIdHigh = ((unsigned short)((shiftedFilter&0xFFFF0000)>>16));
   CAN_FilterInitStructure.CAN_FilterMaskIdLow = ((unsigned short)(shiftedFilter&0x0000FFFF));
   CAN_FilterInitStructure.CAN_FilterFIFOAssignment = filterFifo;
   CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
   CAN_FilterInit(&CAN_FilterInitStructure);
}

В таком виде все работает правильно.
По непроверенным данным для 11-bit ID смещать нужно уже на 5 бит.

P.S. Самое противное, что в документации от ST я даже полслова об этом не нашел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внимание, засада с CAN фильтрами!
СообщениеДобавлено: 22 апр 2012, 01:13 
Заглядывает иногда

Зарегистрирован: 01 июн 2010, 11:04
Сообщения: 139
Напишите об этом в ST, они включат в это в эррату. Заодно и семплов стрельните.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB