sonyps4.ru

Введение в протокол CAN. CAN-шина в промышленных сетях

ENG 192Kb Control Area Network Rus CAN 2.0 A Rus CAN 2.0 В CAN протоколы высокого уровня Шины для бортовых автомобильных систем

CAN (Control Area Network) - последовательная магистраль, обеспечивающая увязку в сеть "интеллектуальных" устройств ввода/вывода, датчиков и исполнительных устройств некоторого механизма или даже предприятия. Характеризуется протоколом, обеспечивающим возможность нахождения на магистрали нескольких ведущих устройств, обеспечивающим передачу данных в реальном масштабе времени и коррекцию ошибок, высокой помехоустойчивостью. Система CAN обеспечена большим количеством микросхем, обеспечивающих работу подключенных к магистрали устройств, разработку которых начинала фирма BOSH для использования в автомобилях, и в настоящее время широко используемых в автоматизации промышленности. Цеколёвка разема приведена на рисунке.

  • Предназначен для организации высоконадежных недорогих каналов связи в распределенных системах управления. Интерфейс широко применяется в промышленности, энергетике и на транспорте. Позволяет строить как дешевые мультиплексные каналы, так и высокоскоростные сети.
  • Скорость передачи задается программно и может быть до 1 Мбит/с. Пользователь выбирает скорость, исходя из расстояний, числа абонентов и емкости линий передачи.
Расстояние, м 25 50 100 250 500 1000 2500 5000
Скорость, Кбит/с 1000 800 500 250 125 50 20 10
  • Максимальное число абонентов, подключенных к данному интерфейсу фактически определяется нагрузочной способностью примененных приемопередатчиков. Например, при использовании трансивера фирмы PHILIPS PCA82C250 она равна 110.
  • Протокол CAN использует оригинальную систему адресации сообщений. Каждое сообщение снабжается идентификатором, который определяет назначение передаваемых данных, но не адрес приемника. Любой приемник может реагировать как на один идентификатор, так и на несколько. На один идентификатор могут реагировать несколько приемников.
  • Протокол CAN обладает развитой системой обнаружения и сигнализации ошибок. Для этих целей используется поразрядный контроль, прямое заполнение битового потока, проверка пакета сообщения CRC-полиномом, контроль формы пакета сообщений, подтверждение правильного приема пакета данных. Хемминговый интервал d=6. Общая вероятность необнаруженной ошибки 4.7x10 -11 .
  • Система арбитража протокола CAN исключает потерю информации и времени при "столкновениях" на шине.
  • Интерфейс с применением протокола CAN легко адаптируется к физической среде передачи информации. Это может быть дифференциальный сигнал, оптоволокно, просто открытый коллектор и т.п. Несложно делается гальваническая развязка.
  • Элементная база, поддерживающая CAN, широко выпускается в индустриальном исполнении.

Многие сетевые протоколы описываются с помощью семиуровневой модели взаимодействия открытых систем OSI (Open System Interconnection ), как показано на Рис. 1 . Протокол CAN (Controller Area Network - контроллерная локальная сеть ) определяет канальный уровень (Data Link Layer ) и часть физического уровня (Physical Layer ). Оставшаяся часть физического уровня и все остальные вышележащие уровни не входят в спецификацию CAN и могут либо определяться разработчиком системы, либо реализовываться с помощью существующих высокоуровневых протоколов (Higher Layer Protocols - HLPs ) и физических уровней.

Как сказано выше, канальный уровень определяется спецификацией CAN. Подуровень управления логической связью (Logical Link Control - LLC ) обеспечивает управление перегрузкой и уведомление о ней, фильтрацию сообщений и функции управления восстановлением. Подуровень управления доступом к среде (Medium Access Control - MAC ) выполняет инкапсуляцию/декапсуляцию (расформирование) данных, обнаружение ошибок и защиту от них, битстаффинг/дестаффинг (битовое наполнение/удаление наполняющего бита), функции преобразования в последовательную форму и обратно.

Подуровни соединения с физической средой (Physical Medium Attachment - PMA ) и среда-зависимого интерфейса (Medium Dependent Interface - MDI ) - две части физического уровня, не определённые в CAN. Подуровень физической сигнализации (Physical Signaling - PS ), наоборот, определён в спецификации CAN. Разработчик может выбрать любой драйвер/приёмник и среду передачи, если они соответствуют требованиям PS-подуровня.

Международная организация по стандартизации (International Standards Organization - ISO ) определила стандарт, который включает спецификацию CAN в качестве физического уровня. Стандарт ISO-11898 изначально был создан для высокоскоростной связи в транспортных средствах, использующей CAN. ISO-11898 определяет физический уровень для обеспечения совместимости между приёмопередатчиками CAN.

Контроллер CAN обычно реализует всю спецификацию CAN аппаратно, как показано на Рис. 1 . PMA-подуровень не определяется CAN, однако, он определён в ISO-11898. Данный пример применения рассматривает приёмопередатчик CAN MCP2551 и то, насколько он удовлетворяет требованиям спецификации ISO-11898.

Рис. 1. CAN и модель OSI

Краткий обзор ISO11898-2

ISO11898 - международный стандарт для высокоскоростной связи CAN, применяемой в транспортных средствах. ISO-11898-2 определяет PMA и MDI подуровни физического уровня. Общее представления узлов и шины CAN, описанное в ISO-11898 приведено на Рис. 3 .

Уровни шины

CAN определяет два логических состояния: рецессивное (recessive ) и доминантное (dominant ). ISO-11898 определяет дифференциальное напряжение для представления рецессивного и доминантного состояний (или битов), как показано на Рис. 2 .

В рецессивном состоянии (то есть логическая "1" на входе TXD MCP2551) дифференциальное напряжение на CANH и CANL меньше минимального порог (Рис. 4).

В доминантном состоянии (то есть логический "0" на входе TXD MCP2551) дифференциальное напряжение на CANH и CANL больше минимального порога. Доминантный бит перекрывает рецессивный бит на шине для достижения неразрушающего поразрядного арбитража.

Рис. 2. Дифференциальная шина

Разъёмы и провода

В ISO-11898-2 не определены механические провода и разъёмы. Однако спецификация требует, чтобы провода и разъёмы соответствовали электротехническим требованиям.

Спецификация также требует наличие резисторов-терминаторов номиналом 120 Ом на каждом конце шины. На Рис. 3 показан пример шины CAN, основанной на ISO-11898.

Рис. 3. Шина CAN

Рис. 4. Номинальные уровни шины по ISO-11898

Помехоустойчивость

Спецификация ISO11898-2 требует, чтобы приёмопередатчик, соответствующий спецификации или совместимый с ней, соответствовал ряду электротехнических требований. Некоторые из этих требований предусмотрены, чтобы гарантировать, что приёмопередатчик сможет выдержать жёсткие электрические условия, таким образом защищая узел CAN. Входы приёмопередатчика должны выдерживать напряжение от -3 В до +32 В и кратковременное воздействие напряжения от -150 В до +100 В. Таблица 1 показывает главные электрические требования ISO11898-2 в сравнении со спецификацией MCP2551.

Таблица 1. Сравнение спецификаций MCP2551 и ISO11898-2.

Параметр ISO-11898-4 MCP2551 Единица измерения Комментарии
минимум максимум минимум максимум
Постоянное напряжение на CANH и CANL -3 +32 -40 +40 В Превышает ISO-11898
Кратковременное воздействие напряжений на CANH и CANL -150 +100 -250 +250 В Превышает ISO-11898
Напряжение синфазного сигнала шины -2.0 +7.0 -12 +12 В Превышает ISO-11898
Выходное напряжение шины в рецессивном состоянии +2.0 +3.0 +2.0 +3.0 В Соответствует ISO-11898
Дифференциальное выходное напряжение рецессивного состояния -500 +50 -500 +50 мВ Соответствует ISO-11898
Внутреннее сопротивление 10 100 20 100 кОм Соответствует ISO-11898
Входное сопротивление 5.0 50 5.0 50 кОм Соответствует ISO-11898
Дифференциальное выходное напряжение доминантного состояния +1.5 +3.0 +1.5 +3.0 В Соответствует ISO-11898
Выходное напряжение доминантного состояния на CANH +2.75 +4.50 +2.75 +4.50 В Соответствует ISO-11898
Выходное напряжение доминантного состояния на CANL +0.50 +2.25 +0.50 +2.25 В Соответствует ISO-11898
Обнаружение постоянного доминанта (драйвер) Не требуется 1.25 - мс
Сброс при включении питания (POR) и обнаружение кратковременного падения напряжения (BOD) Не требуется Да -

Длина шины

ISO11898 определяет, что приёмопередатчик должен быть способен управлять шиной длиной 40 м на скорости 1 Мбит/с. Большая длина шины достигается при уменьшении скорости передачи данных. Самое большое ограничение на длину шины накладывает задержка распространения приёмопередатчика.

Задержка распространения

Протокол CAN определяет рецессивное (логическая "1") и доминантное (логический "0") состояния для реализации схемы поразрядного неразрушающего арбитража. Именно на эту методологию арбитража больше всего воздействуют задержки распространения. Каждый узел, вовлечённый в арбитраж, должен быть способен осуществлять выборку уровня каждого бита в пределах одного и того же времени передачи бита. Например, если два узла на противоположных концах шины начали передавать сообщения в одно и то же время, они должны выполнить арбитраж для захвата управления шиной. Арбитраж будет эффективен, только если оба узла способны сделать выборку в течение одного и того же времени передачи бита. На Рис. 5 показана односторонняя задержка распространения между двумя узлами. Чрезмерные задержки распространения (вне точки выборки) приведут к ошибочному арбитражу. Это означает, что длина шины ограничена для заданной скорости передачи данных.

Задержка распространения в системе CAN вычисляется как удвоенная сумма времени прохождения сигнала по физической шине туда и обратно (t BUS ), выходной задержки драйвера (t DRV ) и входной задержки компаратора (t CMP ). Приняв, что все узлы в системе имеют одинаковые задержки компонентов, получим задержку распространения:

t PROP = 2·(t BUS + t CMP + t DRV ).

Рис. 5. Односторонняя задержка распространения

MCP2551 - приёмопередатчик CAN

Микросхема MCP2551 - приёмопередатчик CAN, который реализует физический уровень, описанный в спецификации ISO-11898-2. Он поддерживает скорость передачи данных до 1 Мбит/с и подходит для систем с напряжениями питания 12 В и 24 В. MCP2551 обеспечивает защиту от короткого замыкания до ±40 В и защиту от кратковременных напряжений до ±250 В.

Дополнительно, будучи совместим с ISO-11898-2, MCP2551 обеспечивает сброс при включении питания (power-on reset - POR ) и защиту от кратковременного падения напряжения (brown-out protection ), а также обнаружение постоянного доминанта (permanent dominant detection ), чтобы гарантировать, что обесточенный или неисправный узел не будет мешать работе шины. Устройство реализует настраиваемую наклонную регулировку усиления (slope control ) на выводах шины для уменьшения излучения радиопомех (RFI ). На Рис. 6 представлена блок-схема MCP2551.

Рис. 6. Блок-схема MCP2551

Основная работа MCP2551

Передача

Контроллер протокола CAN выдаёт поток последовательных данных на логический вход TXD MCP2551. Соответствующее рецессивное или доминантное состояние выдаётся на выводы CANH и CANL.

Приём

MCP2551 принимает доминантное или рецессивное состояния на те же выводы CANH и CANL, с которых осуществляется передача. Эти состояния выдаются в виде соответствующих логических уровней на вывод RXD, чтобы контроллер протокола CAN принял кадр CAN.

Рецессивное состояние

Логическая "1" на входе TXD отключает драйверы от вводов CANH и CANL, и выводы "подтягиваются" к номиналу 2.5 В через резисторы смещения.

Доминантное состояние

Логический "0" на входе TXD включает драйверы выводов CANH и CANL. На CANH подаётся на ~1 В больше, чем номинал рецессивного состояния 2.5 В, таким образом увеличивая напряжение до ~3.5 В. На CANL подаётся на ~1 В меньше, чем номинал рецессивного состояния, таким образом уменьшая напряжение до ~1.5 В.

Режимы работы

Существует три режима работы, которые управляются извне через вывод RS:
1. Высокоскоростной режим.
2. Режим наклонной регулировки усиления.
3. Режим ожидания (Standby )

Высокоскоростной режим

Высокоскоростной режим выбирается подключением вывода RS к V SS . В этом режиме выходные драйверы имеют быстрое время нарастания и спада, что обеспечивает наивысшие скорости передачи до 1 Мбита/с и/или максимальную длину шины, а также обеспечивая минимальные циклические задержки приёмопередатчика.

Режим наклонной регулировки усиления

Если требуется уменьшить излучаемые драйвером электромагнитные помехи, MCP2551 можно установить в режим наклонной регулировки усиления подключением резистора (R EXT) от вывода RS на общий минус. В режиме наклонной регулировки усиления скорость нарастания выходного напряжения на одном проводе (на CANH или CANL) в основном пропорциональна выходному току на выводе RS. Ток должен быть в диапазоне от 10 мкА Уменьшение скорости нарастания выходного напряжения приводит к уменьшению скорости передачи данных CAN при заданной длине шины, либо к сокращению длины шины при заданной скорости передачи данных.

Режим ожидания

Режим ожидания (или спящий режим (sleep )) устанавливается подключением вывода RS к V DD . В спящем режиме передатчик отключен, а приёмник работает в режиме пониженного энергопотребления. Принимающий вывод (RXD) по-прежнему функционирует, но на более низкой скорости.

Режим ожидания можно использовать для установки устройства в режим низкого энергопотребления и выключения передатчика в случае, если контроллер CAN неисправен и выдаёт на шину непредсказуемые данные.

Обнаружение постоянного доминанта на передатчике

Если на передатчике обнаруживается состояние постоянного доминанта, MCP2551 отключает передатчик от CANH и CANL. Эта возможность предотвращает постоянное разрушение шины CAN неисправным узлом (контроллером CAN или самим MCP2551).

Драйверы отключаются, если низкий уровень присутствует на TXD в течение более чем ~1.25 мс (минимум) (см. Рис. 7).

Драйверы остаются отключенными всё время, пока на TXD остаётся низкий уровень. Появление нарастающего фронта на TXD сбросит логику таймера и включит драйвер.

Рис. 7. Обнаружение постоянного доминанта на TXD

Сброс при включении питания и защита от кратковременного снижения питания

MCP2551 имеет способность сброса при включении питания (Power-On Reset - POR ) и обнаружения кратковременного снижения напряжения питания (Brown-Out Detection - BOD ) (см. Рис. 8 ).

Сброс при включении питания (POR)

Когда на MCP2551 подаётся питание, выводы CANH и CANL остаются в высокоимпедансном состоянии до тех пор, пока VDD не достигнет высокого напряжения POR (POR high voltage - VPORH ). Кроме того, если при включении питания на выводе TXD низкий уровень, выводы CANH и CANL остаются в высокоимпедансном состоянии до тех пор, пока на TXD не установится высокий уровень. После чего драйвер будет функционировать нормально.

Обнаружение кратковременного снижения напряжения питания (BOD)

BOD происходит, когда VDD опускается ниже низкого напряжения сброса при включении питания (power-on reset low voltage - VPORL ). В этой точке выводы CANH и CANL входят в высокоимпедансное состояние и остаются в нем, пока не будет достигнуто напряжение VPORH.

Рис. 8. Сброс при включении питания и обнаружение кратковременного снижения напряжения питания

Смещения земли

Поскольку не требуется обеспечивать общую землю между узлами, то возможно возникновение смещений земли между ними. То есть каждый узел может наблюдать разные однопроводные напряжения шины (напряжения синфазного сигнала шины), в то же время поддерживая одинаковое дифференциальное напряжение. В то время как MCP2551 предусмотрен для управления смещениями земли от -12 В до +12 В, спецификация ISO-11898 требует только от -2 В до +7 В. На Рис. 9 и 10 показано, как между узлами возникают смещения земли.

Рис. 9 показывает передающий узел с положительным смещением земли относительно принимающего узла. Приёмник MCP2551 может работать с CANH = +12 В. Максимальное выходное напряжение доминанта CAN (V O(CANH)) от передающего узла составляет 4.5 В. Вычитание этого максимума даёт смещение земли (относительно принимающего узла) в 7.5 В для передающего узла. В рецессивном состоянии каждый узел пытается притянуть выводы CANH и CANL к их основным уровням (обычно 2.5 В). Однако результирующее напряжение синфазного сигнала в рецессивном состоянии принимает значение 6.25 В для принимающего узла и -1.25 В для передающего.

Рис. 10 показывает передающий узел с отрицательным смещением земли относительно принимающего узла. Приёмник MCP2551 может работать с CANL = -12 В. Минимальное выходное напряжение доминанта CAN (V O(CANL)) из передающего узла составляет 0.5 В. Вычитание этого минимума даёт фактическое смещение земли относительно принимающего узла в -12.5 В. Напряжение синфазного сигнала для рецессивного состояния составляет -6.25 В для принимающего узла и 6.25 В для передающего.

Поскольку все узлы работают как передатчики для части каждого сообщения (то есть каждый приёмник должен подтверждать (ACK) правильные сообщения в течение временного интервала ACK), наибольшее смещение земли, допускаемое между узлами составляет 7.5 В, как показано на Рис. 9 .

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

Рис. 9. Земля принимающего узла ниже земли передающего

Рис. 10. Земля принимающего узла выше земли передающего

Оконечная нагрузка шины

) используется для минимизации отражения сигнала в шине. ISO-11898 требует, чтобы шина CAN имела номинальную характеристику входного полного сопротивления линии передачи в 120 Ом. Поэтому обычное значение согласующего резистора для каждого конца шины составляет 120 Ом. Есть несколько различных способов реализации оконечной нагрузки, используемых для увеличения электромагнитной совместимости (EMC ) (см. Рис. 11 ):

1. Стандартная оконечная нагрузка.
2. Разделённая оконечная нагрузка.
3. Смещённая разделённая оконечная нагрузка.

Примечание : электромагнитная совместимость определяется не только передатчиком и методом оконечной нагрузки, но также и тщательным анализом всех компонентов и топологии системы.

Стандартная оконечная нагрузка

Как подразумевает название, эта оконечная нагрузка состоит из одинарных резисторов номиналом в 120 Ом на каждом конце шины. Этот метод приемлем во многих системах CAN.

Разделённая оконечная нагрузка

Разделённая оконечная нагрузка приобретает всё большую популярность, так как позволяет легко добиваться снижения излучения. Разделённая оконечная нагрузка - модификация стандартной оконечной нагрузки, в которой один резистор номиналом 120 Ом на каждом конце шины разделяется на два резистора по 60 Ом с развязывающим конденсатором, присоединенным между резисторами и подключенным к земле. Номиналы этих резисторов должны как можно меньше отличаться друг от друга.

Смещённая разделённая оконечная нагрузка

Этот метод оконечной нагрузки используется для поддержания синфазного напряжения рецессивного сигнала на постоянном значении, таким образом увеличивая EMC. Эта схема аналогична схеме разделённой оконечной нагрузки, но добавлена дополнительная схема делителя напряжения для достижения напряжения V DD /2 между двумя резисторами по 60 Ом (см. Рис. 11 ).

Примечание : Номиналы резисторов смещения на Рис. 11 , также как и резисторов разделённой оконечной нагрузки, должны как можно меньше отличаться друг от друга.

Рис. 11. Схемы оконечной нагрузки

В данной статье не будем полностью расписывать CAN протокол, а обратим внимание лишь на вещи, которые надо обязательно знать и понимать для использования или разработки электронных устройств с поддержкой CAN.

Протокол CAN был разработан для автомобильной промышленности и впоследствии стал стандартом в области создания бортовых сетей автомобилей, железнодорожного транспорта и т.д. CAN позволяет создавать сети с развитыми средствами контроля ошибок, скоростью передачи до 1Мбит/с и пакетами содержащими не более восьми байтов данных.

Канальный и физический уровни CAN

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

Структура узла сети CAN

Рассматриваемый нами узел сети CAN состоит из микроконтроллера, CAN контроллера и приемопередатчика (рисунок 1). Чаще всего мы используем микроконтроллеры с встроенным CAN контроллером для упрощения схемы, но иногда используется автономный контроллер CAN с интерфейсом SPI (MCP2510). Далее приемопередатчик подключается к витой паре, на концах которой размещены согласующие резисторы (терминатор) с сопротивлением 120 Ом.

Рисунок 1 – Узел сети CAN

Для формирования логической единицы в витой паре, или свободной шине, на оба провода подается напряжение, равное половине разности напряжения между 0 или Vcc. Логическому нулю соответствует подача на провода линии дифференциального напряжения (рисунок 2).




Рисунок 2 – Логические уровни на CAN-шине

Шина CAN позволяет передавать данные со скоростью 1 Мбит/c при длине кабеля не более 40 м. В обучающей литературе написано, что при снижении скорости передачи до 10кбит/с можно добиться длины сети в 1.5км.

Пакет сообщения CAN

Формат сообщения CAN показан на рисунке 3.




Рисунок 3 – Пакет сообщения CAN

По факту пакет сообщения формируется CAN контроллером, а прикладное ПО только устанавливает идентификатор сообщения, длину сообщения и предоставляет байты данных, поэтому полностью рассматривать пакет не будем, а посмотрим на данные которые мы изменяем при работе с CAN шиной.

Идентификатор сообщения используется для идентификации данных, отправленных в этом пакете. Каждое отправленное сообщение принимается всеми узлами сети и в данном случае идентификатор позволяет понять конкретному устройству, необходимо ли обрабатывать данное сообщение. Максимальная длина сообщения 8 байт, но можно уменьшить это значение для сохранения пропускной способности шины CAN. Для примера ниже по тексту есть несколько скриншотов CAN сообщений из автомобильной сети.

Арбитраж на шине CAN

Если без подробностей, то первым по шине CAN всегда передается сообщение с наименьшим идентификатором.

Настройка скорости передачи данных по шине CAN

Скорость передачи данных по CAN шине настраивается за счет формирования квантов времени, а не как во многих других протоколах последовательной передачи данных за счет делителя скорости. В большинстве случаев используются скорости 10Кбит/c, 20Кбит/c, 50Кбит/c, 100Кбит/c, 125Кбит/c, 500Кбит/c, 800Кбит/c, 1MBaud и настройки для этих скоростей уже посчитаны. На рисунке 4 изображено окно выбора скорости в программе PcanView.



Рисунок 4 – Выбор скорости передачи данных в программе PcanView

Как мы видим при установке стандартной скорости настройки проставляются автоматически, но бывают случаи когда необходимо использовать другую скорость передачи данных. Например бортовой CAN автомобиля может работать со скоростью 83Кбит/c. В этом случае придется провести расчет настроек самостоятельно или поискать специализированный калькулятор скорости в интернете. Для самостоятельного расчета скорости необходимо понимать, что для передачи одного бита сообщения используется несколько квантов, а интервал передачи состоит из трех сегментов (рисунок 5).




Рисунок 5 – Время передачи одного бита

Первый сегмент всегда фиксирован и равняется одному кванту. Далее идет два сегмента Tseg1 и Tseg2 и количество квантов в каждом сегменте определяется пользователем и может быть равно от 8 до 25. Точка выборки находится между Tseg1 и Tseg2, т.е. в конце первого и в начале второго сегмента. Так же пользователь может определить ширину скачка синхронизации (Synchronization Jump Width - SJW) для подстройки битовой скорости принимающего устройства, который может быть в диапазоне 1 – 4 квантов времени.

Теперь приведем формулу расчета скорости (Пример расчета скорости для CAN контроллера SJA1000):

BTR = Pclk/(BRP * (1 + Tseg1 + Tseg2))

BTR – скорость передачи данных,

Pclk – частота работы CAN контроллера,

BRP – значение предделителя частоты генератора скорости передачи

Tseg1 – первый сегмент

Tseg2 – Второй сегмент

Для проверки возьмем уже посчитанную скорость 125Кбит/c и попробуем получить настройки вручную. Pclk возьмем 16 МГц.

BRP = 16МГц /(125K * (1 + Tseg1 + Tseg2))

Затем подбираем интервал передачи бита находящийся в диапазоне от 8 до 25 квантов времени, так что бы получилось целое значение BRP. В нашем случае если взять (1 + Tseg1 + Tseg2) = 16, то BRP будет равен 30.

SP = ((1 + Tseg1 + Tseg2) * 70)/100

Подставляем значения и получаем 16 * 0.7 = 11.2, что соответствует соотношению Tseg1 = 10, Tseg2 = 5, т.е. 1 + 10 + 5 = 16. Далее смотрим если Tseg2 >= 5, то SJW = 4, если Tseg2 < 5, то SJW = (Tseg2 – 1). В нашем случае SJW = 4.

Итого для получения скорости 125Кбит/c необходимо в параметрах указать, BRP = 30, Tseg1 = 10, Tseg2 = 5, SJW = 4.

P.S. Конфигурирование baud rate значительно отличается между старыми модулями USB-CANmodul (GW-001 и GW-002) с контроллером SJA1000 и новыми модулями sysWORXX с контроллером AT91SAM7A3. В статье описывающей работу с бортовым CAN автомобиля на скорости 83кбит/c приведен расчет скорости для контроллера AT91SAM7A3.


Пример получения и передачи данных по CAN-интерфейсу

В примере будем использовать CAN-адаптер с программой PcanView от SYSTEC и подключимся к салонному CAN автомобиля, работающему со скоростью 125Кбит/с. Рассматриваемый нами автомобиль оснащен креслами с электроприводом и поэтому исследуем данные отвечающие за положение кресел и постараемся изменить положение спинки подменив пакет с помощью компьютера.

Для начала на схеме автомобиля находим наиболее удобно расположенный разъем с линиями CANH и CANL и подключаем к нему наш адаптер. Если разъем и провода найти не получилось, то можно подлезть к блоку управления кресла, найти там два скрученных между собой провода и аккуратно надрезав провода подключить адаптер. Если после подключения и настройки адаптера сообщения не приходят, то в первую очередь попробуйте поменять между собой CANH CANL и проверить включено ли зажигание.
Далее запускаем программу PcanView, в открывшемся окне настроек устанавливаем Baudrate = 125Кбит/c и нажимаем ОК (рисунок 4). В следующем окне устанавливаем Message filter = Standard, диапазон адресов от 000 до 7FF и нажимаем ОК (рисунок 6).



Рисунок 6 – Настройка CAN фильтра

Если все сделано правильно, то мы увидим сообщения от кресел (рисунок 7), а при нажатии кнопки наклона спинки на пульте управления мы увидим еще одно сообщение с адресом 1F4 идущее от пульта к креслу (рисунок 8).



Рисунок 7 – CAN сообщения от кресла с электроприводом


Рисунок 8 – CAN сообщения от кресла с электроприводом и сообщение от пульта управления к креслу

Теперь мы знаем какие должны быть адрес, длина и данные в CAN пакете для имитации нажатия кнопки изменения положения спинки. Во вкладке Transmit нажимаем NEW и в открывшемся окне создаем копию пакета 1F4, т.е. ID = 1F4, Length = 3, Data = 40 80 00. Period можно оставить 0 ms, тогда сообщения будут отправляться по факту нажатия кнопки пробел (рисунок 9).



Рисунок 9 – Создание CAN сообщения

На рисунке 10 отображено поле Transmit главного окна содержащее все отправляемые сообщения в CAN и информацию о них. При выделении сообщения и нажатии кнопки пробел произойдет отправка пакета в CAN сеть и кресло немного сдвинется в нужном направлении.



Понятное дело, что добиться полноценного управления креслом в таком случае не получиться, т.к. мы не можем исключить из сети пакеты заводского пульта управления, но эта проблема вполне решаема.

Итог

Мы увидели как при определенных усилиях и навыках можно создавать собственные электронные системы с использованием высокотехнологичного протокола CAN и как можно подключаться, исследовать и управлять устройствами подключенными к автомобильной CAN шине.

Полевая шина CAN (Controller Area Network) характеризуется высокими скоростью передачи данных и помехоустойчивостью, а также способностью обнаруживать любые возникающие ошибки. Не удивительно, что благодаря этому CAN сегодня широко используется в таких областях, как автомобильный и железнодорожный транспорт, промышленная автоматика, авиация, системы доступа и контроля. По данным ассоциации CiA (CAN in Automation, www.can-cia.de), в настоящее время в эксплуатации находится около 300 млн CAN-узлов по всему миру. В Германии CAN-шина занимает первое место по популярности среди остальных полевых шин. В данной статье приводится общее описание и технические характеристики CAN-шины и описывается логика ее работы. Кроме того, приводится описание встроенных модулей CAN, автономных контроллеров на примере микроконтроллеров (МК) Infineon, трансиверов и дросселей. Рассматриваются средства разработки устройств с CAN-шиной.

Характеристики протокола CAN Преимущества CAN

Общая тенденция в области автоматизации состоит в замене традиционной централизованной системы управления на распределенное управление путем размещения интеллектуальных датчиков и исполнительных механизмов рядом с управляемым процессом. Это вызвано ростом числа проводов связи, увеличением количества соединений, сложностью диагностики ошибок и проблемами с надежностью. Связь между узлами такой системы осуществляется с помощью полевой шины. CAN - это система связи для многоконтроллерных систем. Рассмотрим более подробно преимущества CAN и причины, по которым CAN приобретает все большее распространение.

Испытанный стандарт. Протокол CAN активно используется уже более 20 лет, что очень важно для таких консервативных областей как железнодорожный транспорт или судостроение. CAN был разработан в 1980 г. фирмой Robert Bosch для автомобильной промышленности. CAN-интерфейс регламентирован международными стандартами ISO 11898 для высокоскоростных и ISO 11519-1 для низкоскоростных приложений. Низкая стоимость определяется хорошим соотношением цена/производительность, также широкой доступностью CAN-контроллеров на рынке. Надежность определяется линейной структурой шины и равноправностью ее узлов, так называемой мультимастерностью (Multi Master Bus), при которой каждый узел CAN может получить доступ к шине. Любое сообщение может быть послано одному или нескольким узлам. Все узлы одновременно считывают с шины одну и ту же информацию, и каждый из них решает, принять данное сообщение или игнорировать его. Одновременный прием очень важен для синхронизации в системах управления. Отказавшие узлы отключаются от обмена по шине.

Высокая помехоустойчивость достигается благодаря подавлению синфазных помех дифференциальным приемопередатчиком, работе встроенных механизмов обнаружения ошибок (одна необнаруженная ошибка за 1000 лет при ежедневной 8-часовой работе сети на скорости 500 Кбит/с), повтору ошибочных сообщений, отключению неисправных узлов от обмена по шине и устойчивости к электромагнитным помехам.

Гибкость достигается за счет простого подключения к шине и отключения от шины CAN-узлов, причем общее число узлов не лимитировано протоколом нижнего уровня. Адресная информация содержится в сообщении и совмещена с его приоритетом, по которому осуществляется арбитраж. В процессе работы возможно изменение приоритета передаваемого сообщения. Следует также отметить возможность программирования частоты и фазы передаваемого сигнала и арбитраж, не разрушающий структуру сообщений при конфликтах. На физическом уровне есть возможность выбора разнотипных линий передачи данных: от дешевой витой пары до оптоволоконной линии связи.

Работа в реальном времени становится возможной благодаря механизмам сетевого взаимодействия (мультимастерность, широковещание, побитовый арбитраж) в сочетании с высокой скоростью передачи данных (до 1 Мбит/с), быстрой реакцией на запрос передачи и изменяемой длиной сообщения от 0 до 8 байт.

Приложения CAN

CAN является идеальным решением для любого приложения, где микроконтроллеры обмениваются сообщениями друг с другом и с удаленными периферийными устройствами. Изначально CAN использовался в автомобилях для обеспечения критичного по времени управления и обмена информацией между двигателем и коробкой передач при гарантированном времени ожидания сообщения и допуске каждого из участников сети к работе с текущими данными. Наряду с достаточно дорогими высокоскоростными решениями существуют и экономичные решения для подключения к сети инерционных устройств, которые работают в шкале времени сотен микросекунд (система управления дверьми, подъемник окна, управление зеркалом). При этом мощные жгуты электрических проводов заменяются двухпроводной CAN-сетью, узлами которой являются, в том числе, тормозные огни и указатели поворота.

Широкое применение CAN нашел в промышленной автоматике, где имеется большое число устройств управления, датчиков, механизмов, электроприводов и других объектов, которые связаны единым технологическим циклом (системы отопления и кондиционирования, насосы, конвейеры, лифты, эскалаторы, транспортеры и т. д.). Важной особенностью таких систем является возможность диагностики и управления объектами, расположенными на большой территории, по адаптивным алгоритмам. В результате достигается существенное уменьшение потребляемой мощности, шума, износа оборудования. Подобная картина наблюдается и в железнодорожных бортовых системах, где решающую роль играет обмен данными между подсистемами при наборе скорости, торможении, управлении дверьми и диагностике.

Физический уровень

Физический уровень CAN-шины представляет собой соединение «монтажное И» между всеми устройствами, подключенными к ней. Дифференциальные сигнальные линии называются CAN_H и CAN_L и в статическом состоянии находятся под потенциалом 2,5 В. Лог. 1 (рецессивный бит) обозначает состояние шины, при котором уровень на линии CAN_H выше, чем уровень CAN_L. При лог. 0 (доминантный бит) уровень на линии CAN_H ниже, чем уровень CAN_L. Принято следующее соглашение о состоянии шины: пассивное состояние шины соответствует уровню лог. 1, а активное - уровню лог. 0. Когда сообщения не передаются по шине, она находится в пассивном состоянии. Передача сообщения всегда начинается с доминантного бита. Логика работы шины соответствует «проводному И»: доминантный бит «0» подавляет рецессивный бит «1» (рис. 1).

Рис. 1. Логика работы CAN шины

При физической реализации конкретного проекта с CAN необходимо определить свойства шины и ее узлов: где располагаются обрабатывающие устройства, какими свойствами они обладают, какие датчики и исполнительные механизмы присутствуют в системе, являются они интеллектуальными или нет, что можно сказать об их физическом расположении. В зависимости от условий эксплуатации могут использоваться однопроводная линия (в пределах печатной платы), двухпроводная линия, витая пара или волоконно-оптическая линия. При дифференциальном методе формирования сигналов двухпроводная линия позволяет значительно повысить помехоустойчивость. При использовании дифференциальных напряжений CAN-сеть продолжает функционировать в чрезвычайно шумной среде или при обрыве одной из сигнальных линий. Даже при простой витой паре дифференциальные входы CAN эффективно нейтрализуют шум.

Максимальная скорость передачи данных составляет 1 Мбит/с при длине шины 40 м и около 40 Кбит/с при длине шины 1000 м.

Арбитраж узлов CAN-шины

CAN имеет много уникальных свойств, отличающих его от других шин. В протоколе CAN осуществляется посылка сообщений по общей CAN-шине, при этом отсутствуют адреса отправителя и получателя сообщения. Каждый узел постоянно «просматривает» шину и осуществляет локальную фильтрацию при приеме, используя битовые маски, и решает, какие сообщения извлекать из шины.

В результате узел принимает и обрабатывает только те сообщения, которые предназначены именно для него.

Каждое сообщение имеет свой приоритет, значение которого содержится в идентификаторе сообщения. Кроме того, идентификаторы используются для обозначения типа сообщения. Сообщению с младшим номером идентификатора соответствует высший приоритет; наивысшим приоритетом обладает сообщение с идентификатором, состоящим полностью из нулей. Передача сообщения начинается с отправки на шину идентификатора. Если доступ к шине требуют несколько сообщений, то сначала будет передано сообщение с наиболее высоким приоритетом, то есть с меньшим значением идентификатора, независимо от других сообщений и текущего состояния шины. Каждый узел перед передачей сообщения проверяет, работает ли узел с более высоким приоритетом. Если да, то он возвращается в состояние приемника и пытается передать сообщение в другое время. Это свойство имеет особое значение при использовании в системах управления реального времени, поскольку значение приоритета жестко определяет время ожидания.

Если передача узла А приостанавливается узлом B, посылающим сообщение с более высоким приоритетом, то, как только шина освободится, будет сделана другая попытка передачи сообщения от узла A. Этот принцип получил название CSMA/CA: Carrier Sense Multiple Access/Collision Avoidance (общий доступ с опросом/предотвращение конфликтов). Такой режим в отличие от Ethernet не позволяет конфликтующим узлам в шине выяснять отношения, а сразу выявляет победителя и сокращает время обмена.

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

Формат сообщений

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

Рис. 2. Кадр данных (Data Frame)

Для передачи данных служит кадр данных - Data Frame (рис. 2), который содержит:

  • идентификатор, указывающий на тип сообщения («скорость_двигателя», «температура_масла») и на приоритет доступа к шине. Поле идентификатора содержит различное количество бит в зависимости от разновидности протокола: в стандартном формате CAN V2.0A предусмотрен 11-разрядный идентификатор, а в расширенном CAN V2.0B - 29-разрядный;
  • поле данных, содержащее соответствую-щее сообщение («скорость_двигателя»= 6000 об/мин, «температура_масла»=110 °C) длиной до восьми байт;
  • два байта контрольной суммы - Cyclic Redundancy Check (CRC) для выявления и коррекции ошибок передачи.

Для запроса информации узел CAN использует кадр запроса данных Remote Frame (рис. 3), который содержит:

  • идентификатор, определяющий тип запрашиваемой информации («скорость_ двигателя», «температура_масла») и приоритет сообщения;
  • два байта контрольной суммы CRC .

Рис. 3. Кадр запроса данных Remote Frame

В этом случае за идентификатором не следуют данные и код длины данных не имеет прямого отношения к количеству байт данных. Узел, которому предложено передать информацию (датчик температуры масла), передает кадр данных, содержащий требуемую информацию. Таким образом, если узел А направляет узлу В кадр запроса с идентификатором «температура_масла», то узел В опрашивает датчик температуры и направляет узлу А кадр данных, содержащий идентификатор «температура_масла» и требуемую информацию.

Дополнительная информация, содержащаяся в кадре, позволяет определить формат и синхронизацию протокола передачи сообщения и тип посылки:

  • какое сообщение послано - запрос о данных или собственно данные определяют бит удаленного запроса передачи (RTR для 11-разрядного идентификатора и SRR для 29-разрядного);
  • код длины данных, сообщающий, сколько байтов данных содержит сообщение; все узлы принимают кадр данных, но те из них, которым эта информация не нужна, ее не сохраняют;
  • для обеспечения синхронизации и контроля кадр содержит поля начала кадра Start of Frame, конца кадра End of Frame и подтверждения Acknowledgement Field;
  • вход в режим синхронизации на шине осуществляется первым битом поля Start of Frame, далее синхронизация поддерживается фронтом при смене уровня посылаемых битов;
  • используется механизм битстаффинга - вставка дополнительного бита при следующих подряд пяти нулях или единицах.

Обнаружение ошибок

Сигнализация об ошибках происходит путем передачи кадра ошибки Error Frame. Он инициируется любым узлом, обнаружившим ошибку. CAN-контроллеры используют метод статистической обработки ошибок. Каждый узел содержит счетчики ошибок при передаче и приеме Transmit Error Counter и Receive Error Counter. Если передатчик или приемник обнаруживают ошибку, значение соответствующего счетчика увеличивается. Когда значение счетчика превышает некоторый предел, текущая передача прерывается. Узел выдает сигнал об ошибке в виде Error Frame, где выставляет активный доминантный флаг ошибки длиной 6 бит. После этого узел, передача которого была прервана, повторяет сообщение. Ненадежным или частично поврежденным узлам разрешено посылать лишь пассивный рецессивный флаг ошибки.

В CAN существует несколько разновидностей ошибок. Из них три типа на уровне сообщений:

  • CRC Error - ошибка контрольной суммы (при несовпадении принятой в поле CRC и вычисленной контрольных сумм).
  • Form Error - ошибка формата кадра при несоответствии принятого сообщения формату CAN.
  • Acknowledgement Error - ошибка подтверждения приема сообщения, если ни один из узлов не подтвердил правильного получения сообщения.

Кроме того, существует два типа ошибок на битовом уровне:

  • Bit Error - обнаружение активным узлом расхождения между посланным в шину уровнем и фактическим значением за счет реализации узлом механизма самоконтроля.
  • Stuff Error - наличие в поле сообщения шести следующих подряд бит 0 или 1 (ошибка битстаффинга).

Благодаря этим механизмам обнаружения и коррекции ошибок вероятность пропуска ошибки крайне мала. Например, при скорости 500 Кбит/с, загруженности шины 25 % и использовании в течение 2000 часов в год возникает лишь одна необнаруженная ошибка за 1000 лет. Кроме того, в шине невозможна ситуация блокировки неисправным узлом работы всей сети. Такие узлы обнаруживаются и отключаются от обмена по шине.

Разновидности CAN

В настоящее время доступны различные устройства с CAN-интерфейсом, которые помимо передачи данных из одной точки в другую позволяют реализовать синхронизацию процессов и обслуживание по приоритетам. Более ранние реализации CAN-контроллеров используют кадры с 11-разрядным идентификатором и возможностью адресации до 2048 сообщений и соответствуют спецификации CAN V. 2.0A. Такие контроллеры носят название Basic CAN и характеризуются сильной загруженностью центрального процессора (ЦПУ), так как каждое входящее сообщение запоминается в памяти и ЦПУ решает, нужны ему данные сообщения или нет (рис. 4). Контроллеры Basic CAN содержат один передающий буфер и один или два приемных буфера сообщений. Чтобы послать или получить сообщение, требуется задействовать ЦПУ через прерывания «сообщение_послано» и «сообщение_получено». В результате проверки каждого входящего сообщения загрузка ЦПУ очень велика, что ограничивает реальную скорость обмена по сети. По этой причине такие контроллеры используются в сетях CAN с низкой скоростью обмена и/или малым количеством сообщений.

Рис. 4. Структура контроллера Basic CAN

Большинство выпускаемых сегодня CAN-контроллеров используют расширенные кадры сообщений с идентификатором длиной 29 разрядов, что позволяет адресовать до 536 млн сообщений. Такие контроллеры соответствуют спецификации CAN V. 2.0B (active) и называются контроллеры Full-CAN. В них предусмотрен буфер для нескольких сообщений, причем каждое сообщение имеет свою маску, и фильтрация осуществляется по соответствию идентификатора маске.

В случае Full-CAN ЦПУ максимально разгружено, поскольку не обрабатывает ненужные сообщения (рис. 5). При приеме сообщения с идентификатором, соответствующим маске, оно запоминается в специальной зоне двухпортового ОЗУ, и работа ЦПУ прерывается. Full-CAN имеет также специальный тип сообщения, которое означает: «у кого бы ни находилась эта информация, пожалуйста, пошлите ее сейчас же». Контроллер Full-CAN автоматически прослушивает все сообщения и посылает запрошенную информацию.

Рис. 5. Структура контроллера Full-CAN

До недавнего времени в промышленности был широко распространен Basic CAN с 11-разрядным идентификатором. Этот протокол допускает простую связь между микроконтроллерами и периферийными устройствами при скорости обмена вплоть до 250 Кбит/с. Однако при стремительном удешевлении CAN-контроллеров использование Full-CAN стало оправданным и для связи с медленными устройствами. Если в промышленных приложениях требуется высокоскоростной (до 1 Мбит/с) обмен данными, то непременно следует использовать Full-CAN.

Элементная база для CAN

На самом нижнем уровне CAN-шины находится собственно двухпроводная линия с терминальными резисторами. Далее для повышения помехоустойчивости расположен дифференциальный приемопередатчик - трансивер. На следующем уровне - контроллер со встроенным модулем или автономный модуль CAN, подключаемый к главному контроллеру через параллельный или последовательный порт. Связь с узлами CAN, осуществляющими обмен информацией, ведется через линии портов микроконтроллеров. CAN-контроллеры осуществляют процедуру приема-передачи данных и соединяются с шиной двумя сигналами: RxD для приема с шины и TxD для передачи на шину. Реализация CAN-шины с помощью микроконтроллеров Infineon представлена на рис. 6.

Рис. 6. Реализация CAN-шины с помощью микроконтроллеров Infineon

Микроконтроллеры с CAN-модулем

Одним из факторов, обеспечивших популярность CAN, является богатый выбор и доступная цена элементной базы различных производителей - Infineon, Motorola, Microchip, Philips и др.

В данной статье упор сделан на элементную базу Infineon. Такое решение основано, в частности, на результатах опроса, проводимого на сайте Keil Software (www.keil.com) для микроконтроллерных платформ 8051/251/С166. На вопрос, какой микроконтроллер со встроенным CAN вы используете, по выборке из 2111 респондентов ответы распределились согласно табл. 1.

Таблица 1. Результаты опроса: "Какой микроконтроллер со встроенным CAN вы используете?"

Фирма Infineon выпускает продукты во всех классах цена/производительность. В настоящее время доступны как 8-разрядные контроллеры C505CA, C515C, так и 16-разрядные: C161CS, C164CI, C167CR, 167CS (табл. 2). Самым дешевым кристаллом с CAN является C505CA. МК C161CS и C167СS содержат два CAN-модуля. Самый мощный и дорогой микроконтроллер TriCore TC1775 также содержит реконфигурируемый модуль TwinCAN с двумя модулями CAN на 32 сообщения. TriCore - это первый 32-разрядный микроконтроллер Infineon с архитектурой DSP, оптимизированный для встроенных приложений реального времени, который заменяет собой МК, процессор DSP и заказную микросхему ASIC. Встроенный модуль соответствует спецификации CAN V2.0 B active и содержит память на 15 сообщений для приема/передачи с собственными идентификаторами, битами состояния и управления. Кроме того, он содержит регистры маски для фильтрации входящих сообщений и оснащен двумя приемными буферами. Встроенный модуль CAN позволяет строить системы с разнообразными задачами, используя минимальное количество микросхем внешнего интерфейса. Подключение любого из микроконтроллеров Infineon к CAN-шине осуществляется по одним и тем же принципам. Пример соединения C167CR с CAN-шиной представлен на рис. 7.

Таблица 2. CAN-микроконтроллеры фирмы Infineon

Тип Версия CAN Кол-во сообщ. CAN-модуль Корпус Примечание
С505СА V2.0 B 15 1 x CAN MQFP-44 8 bit MC
С151С V2.0 B 15 1 x CAN MQFP-80 8 bit MC
С161СS V2.0 B 30 2 x CAN TQFP-128 16 bit MC
C164CI V2.0 B 15 1 x CAN MQFP-80 16 bit MC
C167CR V2.0 B 15 1 x CAN MQFP-144 16 bit MC
C167CS V2.0 B 30 2 x CAN MQFP-144 16 bit MC
TC1775 V2.0 B 32 TwinCAN BGA-329 32 bit MC
SAE81C90 V2.0 A 16 1 x CAN PLCC-44 Stand Alone
SAE81C91 V2.0 A 16 1 x CAN PLCC-28 Stand Alone
SAK82C900 V2.0 B 32 TwinCAN P-DSO-28 Stand Alone

Кроме того, следует сказать также несколько слов о МК фирмы Philips - одного из родоначальников элементной базы CAN. На смену устаревшему автономному CAN-контроллеру Philips PCA82C200 пришел полностью совместимый с ним контроллер SJA1000, работающий со стандартом CAN V2.0 B. Необходимо отметить, что PCA82C200 поддерживает только стандарт CAN V2.0 A и способен передавать и принимать только стандартный CAN-протокол, то есть при приеме расширенного кадра он генерирует ошибку и может разрушить всю сеть. В SJA1000 за счет поддержки стандарта PeliCAN (чтение и запись счетчиков ошибок, программирование их количественного порога) значительно расширены возможности по управлению CAN.

Рис. 7. Пример соединения МК С167CR c CAN-шиной

В результате объединения SJA1000 с ядром XA появился 16-разрядный МК XAC3 с интегрированным CAN-интерфейсом. Совместимый с 8051 режим микроконтроллера Philips XA позволяет осуществить простой переход от 8-разрядной архитектуры 8051 к 16-разрядной, что особенно важно для сохранения преемственности программного обеспечения. Среди 8-разрядных МК следует отметить также Philips P80C592, P8xC591 и 8xCE598.

Motorola тоже предлагает широкий спектр микроконтроллеров с интегрированным CAN-модулем: от самых дешевых 8-разрядных МК 68HC05X до 32-разрядного Power PC MPC555 с дуальным CAN V2.0 B.

Продолжение следует

Входящий в МК STM32 CAN-контроллер является полнофункциональным CAN-узлом, отвечающий требованиям к активным и пассивным устройствам CAB 2.0A и 2.0B и поддерживающий передачу данных на скорости не более 1 Мбит/сек. CAN-контроллер оснащен также дополнительными возможностями для организации детерминистической передачи данных по специальному CAN-протоколу передачи в реальном времени TTCAN. После активизации функции TTCAN будет поддерживаться автоматическая повторная передача сообщений и автоматическая вставка в CAN-пакет двух дополнительных байт с зафиксированным моментом времени передачи сообщения. Все эти возможности необходимы в системах управления через CAN-интерфейс в масштабе реального времени.

Полное наименование CAN-контроллера - модуль bxCAN, где bx указывает на поддержку модулем дополнительных возможностей. Обычный модуль CAN использует один буфер приема и передачи, а у расширенного модуля CAN используется несколько буферов приема и передачи. Модуль bxCAN является гибридом двух архитектур модулей CAN. У него имеется три почтовых ящика для передаваемых сообщений и два почтовых ящика для принимаемых сообщений. Каждый из принимающих почтовых ящиков имеет буфер FIFO для помещения в него трех сообщений. Данная архитектура является компромиссной с точки зрения производительности передачи данных и занимаемого места в кристалле ИС.


Модуль CAN оснащен тремя почтовыми ящиками для передачи сообщений и имеет возможность автоматической вставки в сообщение текущего времени по протоколу TTCAN

Следующая важная функция CAN-контроллера - фильтрация получаемых сообщений. Поскольку CAN является широковещательной шиной, каждое переданное сообщение принимается всеми узлами шины. В CAN-шине любой разумной степени сложности передается достаточно большое число сообщений. Задачей каждого подключенного к CAN-узлу ЦПУ является реагирование на CAN-сообщения. Таким образом, чтобы избавить CAN-контроллер от проблемы приема в буфер нежелательных сообщений, необходима их фильтрация. У CAN-контроллера микроконтроллеров STM32 имеется 14 банков фильтров, которые можно использовать для блокировки всех CAN-сообщений, кроме избранных сообщений или групп сообщений.


14 фильтров сообщений поддерживают две конфигурации, которые можно использовать для фильтрации индивидуальных сообщений

Каждый банк фильтров состоит из двух 32-битных регистров и может работать в одном из четырех режимов. При использовании базового метода в каждый регистр банка фильтров записывается идентификатор сообщения. После поступления сообщения проверяется его идентификатор и, исходя из этого, принимается решение о приеме или отклонении сообщения. Данный режим поддерживает две конфигурации. В первой конфигурации регистры банков фильтров являются 3-битными и могут использоваться для фильтрации 11- и 29-битных полей идентификаторов сообщения, а также бит RTR и IDE в 16-битном режиме.

Во второй конфигурации, в первый 32-битный регистр записывается идентификатор сообщения, во второй - маска сообщения. Регистр маски маркирует биты регистра идентификатора, как "важный" или "неважный". Благодаря этому, появляется возможность принимать группу сообщений с помощью одного банка фильтров. Если принимающие фильтры пропускают сообщение, то вместе с ним принимающий буфер FIFO будет записан указатель на определивший совпадение фильтр. Это позволит прикладной программе ускорить идентификацию сообщения без необходимости считывания и дешифрации идентификатора пакета сообщения.

Все CAN-контроллеры поддерживают два режима работы: нормальный режим для приема и передачи пакетов сообщений и режим инициализации для задания параметров связи. Как уже говорилось, МК STM32 могут работать в экономичном режиме SLEEP. В этом режиме синхронизация модуля bxCAN отключена, однако доступ к регистрам почтовых ящиков остается возможным. Модуль bxCAN имеет возможность активизации работы при обнаружении активности на шине CAN. Его работу можно также реактивировать прикладной программой. Работая в нормальном режиме, поддерживаются два дополнительных подрежима. Первый подрежим - режим SILENT. В нём CAN-контроллер может принимать сообщения, но не может передавать и не генерирует бит ошибок в посылке и подтверждения сообщения. Данный режим рассчитан на CAN-шины с пассивным мониторингом. Второй подрежим - режим LOOPBACK. В этом режиме, передаваемые сообщения сразу же принимаются в приемный буфер. Он необходим для реализации диагностических функций и также полезен на фазе отладки кода программы. Оба рассмотренных режима можно комбинировать. Они идеальны для выполнения функций самотестирования при подключении к работающей шине.



Загрузка...