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

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

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

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

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

can
43 голоса | спросил efox29 24 AMpTue, 24 Apr 2012 02:57:41 +040057Tuesday 2012, 02:57:41

5 ответов


52

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

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

<p> Однако при определенных обстоятельствах вы можете уйти без каких-либо приемопередатчиков! Эти обстоятельства: </p>

<ul>
<li> Короткая длина шины (намного меньше 1 метра) </li>
<li> Предпочтительно все микроконтроллеры находятся на одной печатной плате или в стеке печатных плат. </li>
<li> Скорость передачи данных низкая </li>
<li> Среда не слишком электрически шумна </li>
</ul>
<p> Это не жесткие правила. Вы можете уйти с максимальной скоростью передачи (1 МБ /с), если у вас действительно короткая шина (10 см). </p>

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

<p> <img src =

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

Но вот что-то еще интересное: у ПИК есть аппаратная поддержка без трансивера без CAN!

CIOCON Register

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

Упрощенная CAN

ответил Rocketmagnet 24 PMpTue, 24 Apr 2012 15:18:24 +040018Tuesday 2012, 15:18:24
9

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

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

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

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

ответил Martin Thompson 24 PMpTue, 24 Apr 2012 13:11:05 +040011Tuesday 2012, 13:11:05
9

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

ответил timrorr 24 PMpTue, 24 Apr 2012 18:03:55 +040003Tuesday 2012, 18:03:55
8

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

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

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

ответил Olin Lathrop 24 AMpTue, 24 Apr 2012 03:51:44 +040051Tuesday 2012, 03:51:44
2

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

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

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

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

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

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

ответил Chris K 2 J000000Thursday15 2015, 01:23:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132