CAN шина на STM32F103

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

CAN шина на STM32F103

Сообщение Кинг »

Начал осваивать 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);
Реклама
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: CAN шина на STM32F103

Сообщение optima »

Что значит адрес устройства которое слушает шину? В CAN шине все устройства слушают шину!
Реклама
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

Re: CAN шина на STM32F103

Сообщение Кинг »

и получается что у всех контроллеров будут возникать прерывания по приему при каждой посылке в шине?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CAN шина на STM32F103

Сообщение ARV »

нет, только при приеме сообщений, прошедших фильтр
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: CAN шина на STM32F103

Сообщение optima »

Естественно! не будет его лишь у того который передал пакет, и у тех у которых активирован фильтр. А принимать будут все по любому.
Реклама
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

Re: CAN шина на STM32F103

Сообщение Кинг »

а можите описать каждую строчку в настройке фильтра в 1 посте что за что отвечает
Реклама
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: CAN шина на STM32F103

Сообщение 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 Происходит по разному! я разбирался в железе при отладке, сперва тоже не вьехал! пока в документацию не заглянул.
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

Re: CAN шина на STM32F103

Сообщение Кинг »

тоесть если передатчик передает id=0x05; а фильтр настроен на
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; - Старшая часть фильтра
CAN_FilterInitStructure.CAN_FilterIdLow = 0x08; - Младшая часть фильтра
он примет данное сообщение?
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: CAN шина на STM32F103

Сообщение optima »

Ну вот же, здесь вроде все понятно!
Изображение
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

Re: CAN шина на STM32F103

Сообщение Кинг »

неочень то и понятно судя по 2 таблице 32bit.
Mapping STIDE[0:10] 0-бит это 0, 1-бит это RTR, 2-IDE. c 3 по 10 бит я задаю уже нужный диапазон адресов?
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: CAN шина на STM32F103

Сообщение optima »

Может так дойдет!

Изображение
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

Re: CAN шина на STM32F103

Сообщение Кинг »

Получается адрес нужно запихивать со сдвигом на 3 бита в лево
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: CAN шина на STM32F103

Сообщение optima »

для 29 битного ID как то так.
F_H = ((0xFFFFF000 & (uint32_t)id_data))>>13;
F_L = ((0x0000FFFF & (uint32_t)id_data)) <<3 | +4;

для 11 битного потребуется сдвиг только старшей части.
Кинг
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн дек 07, 2009 19:29:29

Re: CAN шина на STM32F103

Сообщение Кинг »

если мне надо принимать диапазон адресов от 0х10 до 0х15, получается
F_H = ((0xFFFFF000 & (uint32_t)0х015))>>13;
F_L = ((0x0000FFFF & (uint32_t)0х10));
Frosty85
Встал на лапы
Сообщения: 84
Зарегистрирован: Ср окт 22, 2014 04:24:01

Re: CAN шина на STM32F103

Сообщение Frosty85 »

Ну не понимаю я настройку этого фильтра. Может для примера выложите пару настроек под конкретный ID Чтобы хоть как-то прояснить что и как прописывать.
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Re: CAN шина на STM32F103

Сообщение Mishany »

http://radiokot.ru/forum/viewtopic.php? ... start=2560 вот тут поднимался вопрос по фильтру может поможет
Ответить

Вернуться в «ARM»