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

 
 
> lpc1754, настройка фильтра сообщений CAN
mempfis_
сообщение Jan 9 2013, 17:05
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Всем добрый день.
Пытаюсь настроить фильтр сообщений CAN-контроллера в LPC1754.
Деляю это после настройки CAN-контроллера.

CODE
//-------------------------------------
#define CAN1_ID (1<<29) //CAN-контроллер 1
#define CAN2_ID (2<<29) //CAN-контроллер 2

__root __no_init unsigned int AF_TABLE[AF_SIZE] @0xE0038000;

#define EFF_SA_NUM 16 //кол-во расширенных индивидуальных идентификаторов

//процедура настройки AF
void canInitAF(void)
{

AFMR = AFMR_ACCOFF; //переводим фильтр в off для конфигурирования

//таблица настроек фильтра
unsigned int id_table[3] = {CAN1_ID|1, CAN1_ID|2, CAN1_ID|78};
unsigned int id_nums = sizeof(id_table)/sizeof(unsigned int);

//заносим данные в таблицу идентификаторов, стандартные идентификаторы не используем поэтому с 0
for(unsigned int i=0; i<id_nums; i++)
{
AF_TABLE[i] = id_table[i];
}

//расставляем индексы
SFF_SA = (0)<<2; //start addres of the table of the individual Standart Identifiers
SFF_GRP_SA = (0)<<2; //start addres of the table of the grouped Standart Identifiers
EFF_SA = (0)<<2; //start addres of the table of the individual Extended Identifiers
EFF_GRP_SA = (EFF_SA_NUM)<<2; //start addres of the table of the grouped Extended Identifiers
ENDOFTABLE = (EFF_SA_NUM)<<2; //end of table

AFMR = 0; //разрешаем режим фильтрации
}
//-------------------------------------


Прогнал процедуру через симулятор. Все регистры настраиваются как положено. AF_TABLE расположена в памяти по верному адресу и нормально инициализируется. Ограничений на индексы для регистров настройки границ идентификаторов я не увидел в документации. Поэтому первые три границы == 0, EFF_GRP_SA и ENDOFTABLE соответственно == 16 (кол-во расширенных идентификаторов).
После включения фильтрации AFMR = 0; вижу что сообщения отправляются, но не не вижу прерываний по приёму.
Если включить режим байпасс AFMR = AFMR_ACCOBP; то вижу и отправленные сообщения, и принятые (выводится информация об ID).
Тестирую контроллер в режиме self-test за неимением второй платы для тестов.
Может кто подскажет в чём я ошибаюсь при настройке фильтрации сообщений?
Спасибо.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 08:31
Рейтинг@Mail.ru


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