Страница 1 из 1

CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 08:07:37
Кинг
Начал осваивать CAN шину по примерам собрал отправку и прерывание по приему. только не понятно где задается адрес устройства которое слушает шину и принимает свои сообщения?
CAN_FilterInitStructure.CAN_FilterNumber = 1;
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 11:58:46
optima
Что значит адрес устройства которое слушает шину? В CAN шине все устройства слушают шину!

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 12:56:05
Кинг
и получается что у всех контроллеров будут возникать прерывания по приему при каждой посылке в шине?

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 13:02:34
ARV
нет, только при приеме сообщений, прошедших фильтр

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 13:10:42
optima
Естественно! не будет его лишь у того который передал пакет, и у тех у которых активирован фильтр. А принимать будут все по любому.

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 13:26:35
Кинг
а можите описать каждую строчку в настройке фильтра в 1 посте что за что отвечает

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 13:59:02
optima
А что тут описывать это все в даташите изложено, настройка маски и фильтра! сами имена вроде за себя говорят!

CAN_FilterInitStructure.CAN_FilterNumber = 1; - Это номер фильтра
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; - это в каком режиме он работает
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit; - Разрядность фильтра
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; - Старшая часть фильтра
CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000; - Младшая часть фильтра
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000; - Старшая часть маски
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000; - Младшая часть маски
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0; - Этот параметр не использую не в курсе
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; - ну и активация фильтра
CAN_FilterInit(&CAN_FilterInitStructure);

Единственное что при настройке фильтров при 11 битном и 29 битном ID Происходит по разному! я разбирался в железе при отладке, сперва тоже не вьехал! пока в документацию не заглянул.

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 14:27:24
Кинг
тоесть если передатчик передает id=0x05; а фильтр настроен на
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; - Старшая часть фильтра
CAN_FilterInitStructure.CAN_FilterIdLow = 0x08; - Младшая часть фильтра
он примет данное сообщение?

Re: CAN шина на STM32F103

Добавлено: Пт янв 23, 2015 14:48:28
optima
Ну вот же, здесь вроде все понятно!
Изображение

Re: CAN шина на STM32F103

Добавлено: Сб янв 24, 2015 16:12:45
Кинг
неочень то и понятно судя по 2 таблице 32bit.
Mapping STIDE[0:10] 0-бит это 0, 1-бит это RTR, 2-IDE. c 3 по 10 бит я задаю уже нужный диапазон адресов?

Re: CAN шина на STM32F103

Добавлено: Сб янв 24, 2015 16:52:38
optima
Может так дойдет!

Изображение

Re: CAN шина на STM32F103

Добавлено: Вс янв 25, 2015 01:43:08
Кинг
Получается адрес нужно запихивать со сдвигом на 3 бита в лево

Re: CAN шина на STM32F103

Добавлено: Вс янв 25, 2015 08:42:12
optima
для 29 битного ID как то так.
F_H = ((0xFFFFF000 & (uint32_t)id_data))>>13;
F_L = ((0x0000FFFF & (uint32_t)id_data)) <<3 | +4;

для 11 битного потребуется сдвиг только старшей части.

Re: CAN шина на STM32F103

Добавлено: Пт янв 30, 2015 14:43:09
Кинг
если мне надо принимать диапазон адресов от 0х10 до 0х15, получается
F_H = ((0xFFFFF000 & (uint32_t)0х015))>>13;
F_L = ((0x0000FFFF & (uint32_t)0х10));

Re: CAN шина на STM32F103

Добавлено: Вс сен 04, 2016 19:16:12
Frosty85
Ну не понимаю я настройку этого фильтра. Может для примера выложите пару настроек под конкретный ID Чтобы хоть как-то прояснить что и как прописывать.

Re: CAN шина на STM32F103

Добавлено: Пн сен 05, 2016 10:01:22
Mishany
http://radiokot.ru/forum/viewtopic.php? ... start=2560 вот тут поднимался вопрос по фильтру может поможет