• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
mrjoun

Can протокол - Bit stuffing

3 сообщения в этой теме

mrjoun    0

Доброе утро!
Возник вопрос, по CAN протоколу!
Bit stuffing - когда узел передает последовательно в шину 5 бит с одинаковым значением, то он добавляет шестой бит с противоположным значением. Принимающие узлы этот дополнительный бит удаляют. Если узел обнаруживает на шине больше 5 последовательных бит с одинаковым значением, то он генерирует ошибку Stuff Error

.CAN.png

Вопрос вот в чем - нужно ли добавлять Stuff бит - если в поле CRC, с CRC[4]...CRC[0] будут все нули или все единицы? (на картинке просто пример кановского протокола - и это не пример пакета) Нет под рукой проверить, как аппаратно это работает!

CAN-Bus-frame_in_base_format_without_stuffbits.svg

Изменено пользователем mrjoun

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
mrjoun    0

Пример пакета:

  • ID     = 0x325;
  • RTR = 0;
  • IDE  = 0;
  • Reserved bit = 0; 
  • DLC = 8;
  • DATA0 = 0x14;
  • DATA1 = 0x02;
  • DATA2 = 0x00;
  • DATA3 = 0x00;
  • DATA4 = 0x01;
  • DATA5 = 0x00;
  • DATA6 = 0x95;
  • DATA7 = 0x0d;
  • CRC = 0x6E9F (Подсчитанное CRC) 
Изменено пользователем mrjoun

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
optima    210

Ничего не нужно добавлять, необходимо только указывать ID 11 ли 29 бит соответственно изменяя бит IDE, если передаете данные то указать их длину DLC если нет данных то RTR, и собственно сами данные DATA.

Все остальное разрулится аппаратно, как думаю и нет необходимости вникать, если конечно нет желания поднять протокол без аппаратного модуля!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Michael4you
      Основные обязанности:
      •проектирование, разработка и поддержка ПО для встраиваемых систем;
      •сопровождение кода и тестов;
      •документирование разрабатываемого ПО;
      Требования к кандидату: 
      • опыт работы от 3 лет;
      • уверенное знание C;
      • опыт разработки встраиваемых приложений;
      • опыт работы с платформами на ARM-процессорах;
      • опыт работы с STM32;
      • опыт работы с ОСРВ (желательно FreeRTOS);
      • опыт работы с Keil, System Workbench;
      • опыт работы c ModBus, USB, CAN;
      Приветствуется:
      • опыт проектирования архитектур ПО;
      • знание Python;
      Условия:
      •трудоустройство по ТК РФ;
      •доход обсуждается с успешным кандидатом (от 60 тыс.руб.)
      •дистанционная работа, можно работать из дома;
      •выплаты заработной платы 2 раза в месяц
      Наш сайт: http://i-mt.net/
      Моя почта: dezh@i-mt.net
      Мой мобильный: +7963 776 36 55 
      С уважением, Михаил.
    • Автор: Стас12
      Доброго дня. Помогите советом. Имеется блок управления климатом от ваз калина 2 и машина без can шины. блок обеспечивает связь и управление по отдельным проводам со всеми датчиками, моторедукторами заслонок и мотором вентилятора. но в его распиновке нет вывода под сингал включения муфты компрессора кондиционера. есть can hi и can low. можно ли это обойти и получить сигнал (любой полярности, постоянный при работе). можно подъпояться к кнопке, но кнопка это сигнал для мозгов климата, мозг так же сам может включать и выключать кондюк. если преобразователь в can это какая то стандартная микруха - помогите опознать ее. или как вариант преобразователь can в аналог обратно.
    • Автор: v0stap
      Пытался настроить CAN для связи с устройством, для конфигурации CAN_BTR использовал онлайн калькулятор. После компиляции сразу было ясно что связи по CAN нет, при анализе сигнала видно что чистота пакетов из STM в пять раз ниже чем чистота из устройства. Может кто то помочь настроить инициализацию CAN через регистры.
      Камень STM32F407AVG
      Частота проца: 168 mHz;
      Необходимая скорость CAN: 500kBs
      Пины PB12, PB13.
      На данный момент функция инициализации выглядит так:
      void CAN_Init (void) {
      RCC->APB1ENR |= RCC_APB1ENR_CAN2EN; // enable clock for CAN2
      GPIOB->MODER |= (0 << 24); //PB12 IN
      GPIOB->MODER |= (2 << 26); //PB13 OUT
      GPIOB->OTYPER |= (0 << 12); //OTYPE PUSH-PULL
      GPIOB->OTYPER |= (0 << 13); //OTYPE PUSH-PULL
      GPIOB->PUPDR |= (0 << 24); //PushUP-PushDOWN NO PP
      GPIOB->PUPDR |= (0 << 26); //PushUP-PushDOWN NO PP
      GPIOB->OSPEEDR |= (2 << 24); //PIN SPEED FAST
      GPIOB->OSPEEDR |= (2 << 26); //PIN SPEED FAST
      GPIOB->AFR[1] |= (9 << 20); //AlternateFunction AF9(CAN)
      GPIOB->AFR[1] |= (9 << 24); //AlternateFunction AF9(CAN)
      CAN2->MCR = (CAN_MCR_NART | CAN_MCR_INRQ); // init mode, disable auto. retransmission
      // Note: only FIFO 0, transmit mailbox 0 used
      CAN2->IER = (CAN_IER_FMPIE0 | CAN_IER_TMEIE); // FIFO 0 msg pending, Transmit mbx empty
      CAN2->BTR = 0x001c0014;
      }
      Настройки камня:
      /**
      * @brief System Clock Configuration
      * The system Clock is configured as follow :
      * System Clock source = PLL (HSE)
      * SYSCLK(Hz) = 168000000
      * HCLK(Hz) = 168000000
      * AHB Prescaler = 1
      * APB1 Prescaler = 4
      * APB2 Prescaler = 2
      * HSE Frequency(Hz) = HSE_VALUE
      * PLL_M = (HSE_VALUE/1000000u)
      * PLL_N = 336
      * PLL_P = 2
      * PLL_Q = 7
      * VDD(V) = 3.3
      * Main regulator output voltage = Scale1 mode
      * Flash Latency(WS) = 5
      * @param None
      * @retval None
      */
    • Автор: dnk_lite
      Всем привет!
      озадачился проблемой мультиплексирования CAN шины в автомобиле.
      имеется контроллер шины CAN и две шины. Необходимо объединить эти две шины и при необходимости разъединять. \
      Основные требования: минимальные габариты (микросхема)
      Поиски по просторам интернета ничего хорошего не дали.
    • Автор: megavolt3101
      Доброго времени суток форумчане. Вторую неделю не могу запустить can на STM32F042. Инициализацию брал с STM32F0xx_Snippets_Package_V1.0.0 с примера работы для STM32F072. Пример скорее всего рабочий. Но процессор у меня в корпусе 20 ножек. По там нет кановских ножек PA_11 и PA_12. Их нужно ремапить на ноги PA_9 и PA_10. Во всем остальном вроде как инициализация должна подойти для моего процессора. Но осциллограф молчит . Инициализация вешается на цикле
      while((CAN->MSR & CAN_MSR_INAK)==CAN_MSR_INAK)
      {
      }
      Инициализация в loopback режиме. С каном только начал работать, поэтому мало что в нем понимаю. Во всем интернете не нашел не одного примера инициализации кроме приведенного выше для F0 линейки STM. Думаю может я ремапнул ноги как то не правильно или еще где какая детская ошибка ? В описании примера написано что на ноге PA12 я могу отследить, работает ли передача. Но увы… Привожу код инициализации, может кто чем поможет.
      Инициализация ног КАН
      __INLINE void Configure_GPIO_CAN(void)
      {
      RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
      SYSCFG->CFGR1 |= SYSCFG_CFGR1_PA11_PA12_RMP; // Добавил ремап для ног PA_9, PA_10
      GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER11 | GPIO_MODER_MODER12))\
      | (GPIO_MODER_MODER11_1 | GPIO_MODER_MODER12_1); /* (1) */
      GPIOA->AFR[1] = (GPIOA->AFR[1] &~ (GPIO_AFRH_AFR11 | GPIO_AFRH_AFR12))\
      | (4 << (3 * 4)) | (4 << (4 * 4));
      }
      Инициализация Кана:
      __INLINE void Configure_CAN(void)
      {
      RCC->APB1ENR |= RCC_APB1ENR_CANEN;
      CAN->MCR |= CAN_MCR_INRQ; /* (1) */
      while((CAN->MSR & CAN_MSR_INAK)!=CAN_MSR_INAK) /* (2) */
      {
      }
      CAN->MCR &=~ CAN_MCR_SLEEP; /* (3) */
      CAN->BTR |= CAN_BTR_LBKM | 2 << 20 | 3 << 16 | 5 << 0; /* (4) */
      CAN->MCR &=~ CAN_MCR_INRQ;
      while((CAN->MSR & CAN_MSR_INAK)==CAN_MSR_INAK) /* (6) */
      {
      }
      // Из цикла программа не выходит!!!
      GPIOA->ODR ^= GPIO_ODR_5;
      CAN->FMR = CAN_FMR_FINIT; /* (7) */
      CAN->FA1R = CAN_FA1R_FACT0; /* (8) */
      #if (FILTER_LIST)
      CAN->FM1R = CAN_FM1R_FBM0; /* (9) */
      CAN->sFilterRegister[0].FR1 = CAN_ID2 << 5 | CAN_ID1 << (16+5); /* (10) */
      #else
      CAN->sFilterRegister[0].FR1 = CAN_ID1 << 5 | CAN_ID_MASK << 16; /* (11) */
      #endif
      CAN->FMR &=~ CAN_FMR_FINIT; /* (12) */
      CAN->IER |= CAN_IER_FMPIE0; /* (13) */
      NVIC_SetPriority(CEC_CAN_IRQn, 1); /* (16) */
      NVIC_EnableIRQ(CEC_CAN_IRQn); /* (17) */
      }
      Передача данных:
      Void TRANSMIT() {
      if ((CAN->TSR & CAN_TSR_TME0) == CAN_TSR_TME0) /* (1) */
      {
      CAN->sTxMailBox[0].TDTR = 1;
      CAN->sTxMailBox[0].TDLR = CMD;
      CAN->sTxMailBox[0].TIR = (uint32_t)(CAN_ID << 21
      | CAN_TI0R_TXRQ); /* (4) */
      }
      } // Из Референсе мануал на STM32F0
      Дефайны программы.
      #define CMD_TOGGLE (0xDA)
      #define CAN_ID_MASK (0xFF70U)
      #define CAN_ID1 (0x651U)
      #define CAN_ID2 (0x652U)
      #define FILTER_LIST (0)
  • Сообщения

    • Товарищи, всем доброго времени суток! Расскажу ситуацию вкратце: Работаю в фирме, которая отчасти занималась обслуживание банкоматов, ремонтом и продажей запчастей для них. Ещё одно из направлений, это обслуживание кассовой техники и торгового оборудования. Если вкратце, то банкоматами перестали заниматься совсем, а на кассовую технику клиенты обновили парк оборудования. В сязи с этим, на складе пылится валяется куча банкоматского и торгового оборудования. От начальства поступил приказ, до конца года избавиться от всего ненужного. Если с банкоматскими железками я быстро нашёл разговор, подготовил их на сдачу в чермет, то с остальным оборудованием случилась беда. Жаба душит меня и всё, не могу такие вещи выбросить. Дело не в том, чтобы навариться, а в том, что наверняка кому-то что-то да нужно, а черметчики без разбора всё попилят и под пресс. По цене пишите, обязательно договоримся. Находится всё добро в Москве, территориально метро Нагатинская. Итак, ниже импровизированный список того, что примерно имеется на складе. 1. Мониторы от банкоматов, 12" . Монитор специфически, по партномеру на фото без труда найдёте полное описание. В наличии наверно штук 20-30. По состоянию, после двух переездов, стали не очень, на многих имеются царапины, различных размеров, но есть и в идеальном состоянии, замотанные в стрейч. 2. Осциллограф с1-112а . Даже не представляю как у нас очутился. 3. Источники бесперебойного питания. По работоспособности не уверен, скорее всего нерабочие. По складу думаю штук 10 наковыряю. 4. Сканер весы NCR. Вприниципе, там ломаться особо нечему, так что должны быть рабочими. На складе достаточное количество. 5. Сканер штрихкодов стационарный, Даталоджик. 6. Куча двигателей от банкоматов на 220в. 7. Денежные ящики от касс.
    • За китайцев утверждать не могу, но российские заводы при слоях более двух автоматически включают электроконтроль. И, вроде как, это считается нормой. Очень нравится качество новосибирского "Электроконнекта" (PS Electro). Немного дороже, чем у большинства других заводов, но за результат их работы платить не жалко. Китайские производственные мощности пока еще не оценивал. Как-то очень радужно все выглядит по описанию, но каков процент брака?
    • Сегодня попробовал поставить последовательно  по 2 диода UF4007 в каждое плечо моста. Нагрузил на 15 кОм резистор (ток около 20мА) На выходе 360В. Замучался со снабберной цепочкой. Ставлю 220пФ+510 Ом - резистор начинает дымить, выбросы по 500 В. Увеличиваю сопротивление до 1 кОм, емкость уменьшил до 120пФ. Выбросы увеличились до 600 В. Но резистор все равно греется нехило. И начинают потихоньку греться диоды выпрямителя.... Может быть уменьшить частоту преобразования? трансформатор мотал на EL33 1 обмотка 40 вит, 2 - 122вит. Мотал неправильно :-) 0,5 первички, вторичка, 0,5 первички. Но, на первичной обмотке транса импульсы четкие, почти без выбросов. Ключи холодные.
    • Посмотри в толкучке, Светlana продает платы DYK DAC от Mazila.  http://forum.vegalab.ru/showthread.php?t=79237 У нас на форуме тоже продает artik по мотивам пикардийского аккорда.
    • Чтобы понимать, что делаешь и не тыкаться вслепую, начни отсюда. Про зарядники для мобилок забудь.
    • Возникла необходимость собрать схему устройства, создающего помехи для микрофона от диктофона. В интернете много схем "генераторов белого шума". Не устраивает то что все они работают в слышимом диапазоне частот, и при их работу будет слышно. Интересует схема генератора на не слышимых частотах звукового диапазона, который может повлиять на микрофон записывающего устройства...
    • Может хватить .  ОС дает дополнительный сервис . Перезапуск , отключение управления после н-го кол-ва запусков с к.з. . Тут обсуждались предохранители с моим скромным участием .