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

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


Ссылка на сообщение
Поделиться на других сайтах
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    216

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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: Алексей_238
      Добрый день!
      Прошу подсказать вот в каком вопросе. 
      Есть CAN шина с "умным домом" к ней подключены разные устройства. На концах установлены согласующие резисторы 120 ОМ. Есть в середине шины одно устройство, которое на 1,5 метра отходит от шины (датчик температуры). Его сняли, а провод то остался. 
      Вопрос нужно ли что-то ставить между H и L на этом проводе? Если ничего не ставить не будет ли он антенной (1,5 м все таки)? 
      Спасибо. 
       
       
    • Автор: 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 и две шины. Необходимо объединить эти две шины и при необходимости разъединять. \
      Основные требования: минимальные габариты (микросхема)
      Поиски по просторам интернета ничего хорошего не дали.