Достаточно ли микроконтроллера с поддержкой CAN для управления шиной CAN?


45

В настоящее время в микроконтроллеры встроено несколько модулей CAN. PIC18F2480 является примером этого. Этот микроконтроллер (со встроенным CAN) способен управлять шиной CAN самостоятельно или требуется внешний трансивер / контроллер CAN?

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

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

Предположим, что у меня будут необходимые нагрузочные резисторы и другие небольшие дискретные компоненты (колпачки, резисторы и т. Д.)

Ответы:


55

Это очень хороший вопрос. Как правило, для CAN требуется трансивер для каждого узла:

введите описание изображения здесь

Тем не менее, при определенных обстоятельствах вы можете уйти без каких-либо трансиверов! Эти обстоятельства:

  • Короткая длина автобуса (намного меньше 1 метра)
  • Предпочтительно, чтобы все микроконтроллеры находились на одной плате или на одной пачке плат.
  • Низкий битрейт
  • Окружающая среда не слишком электрически шумно

Это не жесткие правила. Вы можете получить максимальную скорость передачи данных (1 МБ / с), если у вас очень короткая шина (10 см).

Чтобы достичь этого, вам нужно немного узнать о том, что делает трансивер. Как и большинство приемопередатчиков, они могут выводить высокий или низкий уровень на шину (представляя 1 и 0), но 0 может доминировать над 1. IE. Если два приемопередатчика пытаются говорить одновременно, и один говорит 1, а другой говорит 0, тогда 0 победит. Мы можем воссоздать ту же ситуацию, просто используя диоды:

Простой CAN

См. Примечание к приложению Seimens AP2921: Бортовая связь через CAN без трансивера.

Но вот кое-что еще более интересное: PIC фактически имеет аппаратную поддержку CAN без трансивера!

CIOCON Регистрация

Вы можете настроить вывод CAN TX так, чтобы он вел себя точно так же, как и трансивер. Это означает, что вы можете подключить шину CAN без диодов. Вам все равно понадобится резистор.

Проще CAN


2
Абсолютно фантастический ответ. Я очень ценю время, которое вы потратили на ответ. Возможно, мне придется пойти с трансивером, потому что может быть много электрических помех, и, хотя все будет размещено в «коробке», они будут на нескольких печатных платах. Еще раз спасибо!
efox29

@ efox29 - Пожалуйста. Конечно, лучше пойти с трансиверами, если вы можете.
Ракетный магнит

Эта настройка без трансивера была для меня новой и выглядит очень интересной для настройки простой сети контроллеров на большие расстояния. Приятно!
0x6d64

@ 0x6d64 - Если вам это нужно долго, не забудьте использовать низкую скорость передачи данных, а скорость нарастания ограничивает границы.
Ракетный магнит

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

10

LPC11Cxx семейство микроконтроллеров (ARM Cortex-M0 основе) включают в себя приемопередатчик CAN на чипе.


3
Да. Правильно. ОП спрашивает о PIC18. Это не очень полезно.
Федерико Руссо

4
@FedericoRusso он приводит пример с PIC18, а timrorr предлагает решение со встроенным драйвером. Что в этом плохого?
Клабаккио

8
@FedericoRusso - Не будь таким анальным. Этот ответ очень интересный.
Ракетный магнит

1
@Rocketmagnet: Итак, вопрос : "Как мне сделать X?" A: "Делай Y." все-таки нормально? (От вашего собственного ответа)
Федерико Руссо

2
@FedericoRusso - Если на вопрос был получен хороший ответ к удовлетворению ОП, и кто-то упоминает некоторую интересную информацию, конечно, почему бы и нет?
Ракетный магнит

9

Да, тебе нужен трансивер. Штырьки CAN на микро приемно-передающие. Сама шина CAN использует витую пару с дифференциальной сигнализацией на двух проводах, называемых HIGH и LOW.

Одной из задач трансивера является получение логического уровня, который вы представляете на выводе TX, и превращение его в сигналы шины CAN:

  • логика «1» представлена ​​как не приводящая шину, поэтому линии HIGH и LOW «плавают» до 2,5 В - называемые «рецессивный бит» в терминологии CAN.
  • логика «0» представляется путем возбуждения линии HIGH на высоком уровне и линии LOW на низком уровне - так называемого «доминирующего бита», поскольку он будет перекрывать любые передаваемые рецессивные биты.

Другой способ - взять то, что находится на шине, и превратить его обратно в логический уровень для отправки обратно с контакта RX на ваш микро.


8

Вам нужен чип трансивера CAN между процессором и шиной CAN. Проверьте MCP2551.

Обновление 17 августа 2017 г .:

Я сейчас на конференции Microchip Masters. Инженеры Microchip сказали мне, что одна из новых деталей, появившаяся в результате приобретения Atmel, дешевле и лучше, чем MCP2551.


1
Микрочип рекомендует 2561 вместо 2551 сейчас. NXP также имеет некоторые интересные чипы CAN. Большинству микроконтроллеров нужен трансивер.
Людвиг Шрайер

2

Аналоговые устройства имеют пример схемы приемопередатчика CAN с использованием дифференциального усилителя.
Я не пробовал это, просто знаю об этом. Также интересно, можно ли это реализовать с помощью операционного усилителя

аналоговая схема

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

Новая эволюция - это микросхемы типа System Base, которые включают регулирование напряжения, режимы питания и защиту от электростатического разряда от шины.

Как сказал выше Тиморр, LX11C24 от NXP уникален тем, что процессор включает в себя CAN-трансивер. Демонстрационная доска с этим стоит всего $ 19. Другим недорогим решением является использование демонстрационной платы Cypress PSoC5 стоимостью 9,38 доллара, CY8CKIT-059. PSoC5 не имеет контроллера CAN; это идет еще дальше: контроллер реализован в виде FPGA-подобных универсальных блоков. Регистры контроллера настраиваются через графический интерфейс IDE, что значительно упрощает фильтрацию и исследования.

Ключевой метод, который я нашел, просматривая таблицы данных, - это mcu TTL с метками CAN-Tx и CAN-Rx, в то время как линии данных приемопередатчиков на шину всегда обозначаются как CAN-H и CAN-L. Мне не нравятся диаграммы в другом ответе, где показано TxRx, подключенное к шине; это идет вразрез с соглашением и способствует путанице.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.