Перейти к содержанию
    

tolstiybh

Участник
  • Постов

    237
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о tolstiybh

  • Звание
    Местный
    Местный

Посетители профиля

1 618 просмотров профиля
  1. STM32F091 CAN filters init

    Все заработало. Спасибо. Использую вариант с IDlist, а не mask.
  2. STM32F091 CAN filters init

    Всем привет. Вот я так делаю: void setup_can_filter(void) { CAN_FilterInitTypeDef CAN_FilterInitStructure; /* CAN filter init 0*/ CAN_FilterInitStructure.CAN_FilterNumber = 0; CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_16bit; CAN_FilterInitStructure.CAN_FilterIdHigh = (0x332<<5);//|(1<<4); CAN_FilterInitStructure.CAN_FilterIdLow = (0x331<<5);//|(0<<4); CAN_FilterInitStructure.CAN_FilterMaskIdHigh = (0x3B3<<5);//|(1<<4); CAN_FilterInitStructure.CAN_FilterMaskIdLow = (0x430<<5);//|(0<<4); CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0; CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); /* CAN filter init 1*/ CAN_FilterInitStructure.CAN_FilterNumber = 1; CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_16bit; CAN_FilterInitStructure.CAN_FilterIdHigh = (0x171<<5);//|(1<<4); CAN_FilterInitStructure.CAN_FilterIdLow = (0x0415<<5);//|(0<<4); CAN_FilterInitStructure.CAN_FilterMaskIdHigh = (0x0434<<5);//|(1<<4); CAN_FilterInitStructure.CAN_FilterMaskIdLow = (0x042F<<5);//|(0<<4); CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0; CAN_FilterInitStructure.CAN_FilterActivation = ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); } void setup_can(CAN_InitTypeDef *can, int baud) { CAN_StructInit(can); CAN_DeInit(CAN); CAN_StructInit(can); /* CAN cell init */ can->CAN_TTCM = DISABLE; can->CAN_ABOM = ENABLE; can->CAN_AWUM = DISABLE; can->CAN_NART = DISABLE; /* orig: DISABLE Transmit only once */ can->CAN_RFLM = DISABLE; can->CAN_TXFP = DISABLE; can->CAN_Mode = CAN_Mode_Normal; can->CAN_SJW = CAN_SJW_1tq; can->CAN_BS1 = CAN_BS1_13tq; can->CAN_BS2 = CAN_BS2_2tq; switch(baud) { case 1000000: can->CAN_Prescaler = 3; break; case 500000: /* CAN Baudrate = 100KBps (tested OK on real car) */ // на самом деле не 100К, а 500К (копипастеры ...) can->CAN_Prescaler = 6; break; case 250000: /* CAN Baudrate = 250KBps */ can->CAN_Prescaler = 12; break; case 125000: /* CAN Baudrate = 125KBps */ can->CAN_Prescaler = 24; break; case 100000: /* CAN Baudrate = 100KBps (tested OK on real car) */ can->CAN_Prescaler = 30; break; case 50000: /* CAN Baudrate = 50KBps */ can->CAN_Prescaler = 60; break; } setup_can_filter(); CAN_Init(CAN, can); CAN_ITConfig(CAN, CAN_IT_FMP0, ENABLE); } Все равно не работает. НЕ нужные сообщения проходят. Что может быть не так?
  3. STM32F091 CAN filters init

    Как Вы указали в приведенном примере, я уже делал, но пропуски ненужных сообщений все равно были. И так на 0 фильтр 4 идентификатора и и на 1 фильтр 4 идентификатора. Толку никакого. Может нужно что-то дополнительно прописывать, чтобы проходили только нужные сообщения? Мне нужно только 10 сообщений, т.е. 3 фильтра.
  4. STM32F091 CAN filters init

    Народ всем привет. Использую STM32F091. Необходимо фильтровать CAN сообщения на аппаратном уровне, чтобы успешно приходили CAN сообщения определенного ID, например, 0x434, 0x3b3, 0x171, 0x42f, 0x041. Как это сделать? Пробовал различные варианты по инициализации CAN_FilterIdHigh, CAN_FilterIdLow, CAN_FilterMaskIdHigh, CAN_FilterMaskIdLow, но все равно пропускается большой поток ненужных сообщений.
  5. Бороздил просторы форумаи и интернета: впринципе, как я и думал, что обработчик ошибок (BUS OFF, FRAME TX OR RX COUNTER и т.д.) нужен либо для дианостики, либо для выполнения какого-нибудь срочного события (например отправка сообщения или recovery), например, при достижении счетчика ошибочных фреймов (например, 96) отправка сообщения в матрицу. В принципе это отпадает :1111493779: НО! Периодичность приема сообщений проверял таймером - проблем не выявлено. Однако меня мучает, что все-таки есть вероятность того, что она может нарушаться. Не будит ли советов, примеров и т.д. по реализации контроля периодичности - уровень session? Или я зря так опасаюсь и таким образом случайно могу загромоздить код?
  6. CAN INFINEON

    Народ, всем привет. Занимаюсь разработкой CAN драйвера. Сначала для ознакомления с контроллером и настройки аппаратной части осуществлял обмен данными с диагностическим устройством - поллингом. Сейчас необходимо привести код к стандарту OSI. Все фреймы принимаю по прерыванию и обрабатываю последовательно, а не кучей. Контроль тайминга фреймов (session) проверял при помощи дебагинга и диагн. ф-й - все работает без проблем. И у меня все-таки есть вопросы: Нужно ли мне вообще организовывать уровень session? И что это дает? Что в нем такого важного, чтобы его делать? Дело в том, что мне очень важно задействовать как можно меньше ресурсов, но при все должно обрабатываться быстро (т.е. код должен быть оптимизирован по скорости)
  7. Вообще насколько я знаю на эмуляторе получается идеальное значение, к которому надо стремиться. Но вот как это реализовать и потом состыковать с измеренными значениями (с программного кода) для сверки и вывода в таблицу. Вот это вопрос. Ни у кого примера или руководства как это сделать не будит?
  8. Народ, всем привет. Насколько я знаю МАТЛАБ может все. В инете находил, что некоторые люди умудрялись использовать Симулинк и Stateflow для проверки написанного кода микроконтроллера на соответствие техническим требованиям (переходы, состояния, режимы работы и т.д.). Но информации и детального описания как это сделать нету. Народ подскажите, пожалуйста, где это можно найти и как это реализовать?
  9. em9201

    Всем привет. Народ если кто работал с данной микросхемой, скиньте, пожалуйста, библиотеку и скажите на какие подводные камни можно натолкнуться? Какие ее + и какие - ?
  10. Все. всем спасибо. Проблема решена использованием маленькой антенны на 2.4 ГГц
  11. Прошу прощения. Файл то выбрал, а загрузить забыл. :smile3046: Да кстати расстояние получается примерно от 10 до 15 мм
  12. Всем привет. Занимаюсь разводкой платы (модернизацей уже существующей с внедрением сс2500). Места катастрофически не хватает. По описанию (см. приложение) антенна должна быть на определенном расстоянии (Н1) от микросхемы сс2500, но этого сделать не получится, потому что плата уже была разведена и компоненты передвигать нельзя. Тем более она должна соответствовать свои размерам и габаритам корпуса. Соответственно у меня вопросы: Как согласовать антенну с сс2500, если расстояние проводников между ними будит примерно 10 мм? Как это повлияет на чувствительность?
  13. em9203

    Всем привет. Народ все те, кто пользовался приемо-передатчиком 2.4 ГГц em9203, пожалуйста, напишите мнения по работе с ним и где можно скачать библиотеку для работы с данной м/с? Или если у Вас уже есть какие-нибудь исходники библиотек, то поделитесь, пожалуйста.
  14. LINUX или Android

    Jury093, помолчали бы лучше!!! Вопрос, что Вы умеете??!! Наверное ничего! Только выеживаться! Подростите сначала! :rolleyes: А Потом занимайтесь серьезными вещами Ладно все что я хотел знать и исследовать, я уже сделал. СПС electronix и тех. суппорт otladka Всем огромное спасибо! За исключением Jury093! P.S. Jury093, еще раз такое повторится, то БАН :smile3046: :bb-offtopic:
  15. LINUX или Android

    EV-IMX287-mini куплена без BSP. "Как она есть". Со стартеркитом я новичок. Не могу найти, где можно скачать там все необходимое для SK-HDMI-Plug. В лаборатории стартеркит нету и в сатьях тоже нету, в ссылке "магазин" тоже нету, а ссылка даунлоад не предусмотрена. Не могли ли бы Вы ей поделиться? Да и еще момент нигде нет BSP для EV-IMX287-mini под LINUX. Где его можно взять?
×
×
  • Создать...