Начал осваивать 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);
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
А что тут описывать это все в даташите изложено, настройка маски и фильтра! сами имена вроде за себя говорят!
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 Происходит по разному! я разбирался в железе при отладке, сперва тоже не вьехал! пока в документацию не заглянул.
тоесть если передатчик передает id=0x05; а фильтр настроен на CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000; - Старшая часть фильтра CAN_FilterInitStructure.CAN_FilterIdLow = 0x08; - Младшая часть фильтра он примет данное сообщение?
неочень то и понятно судя по 2 таблице 32bit. Mapping STIDE[0:10] 0-бит это 0, 1-бит это RTR, 2-IDE. c 3 по 10 бит я задаю уже нужный диапазон адресов?
если мне надо принимать диапазон адресов от 0х10 до 0х15, получается F_H = ((0xFFFFF000 & (uint32_t)0х015))>>13; F_L = ((0x0000FFFF & (uint32_t)0х10));
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения