Чи достатньо мікроконтролера з підтримкою CAN для управління шиною CAN?


45

На сьогоднішній день є кілька модулів CAN, вбудованих у мікроконтролери. Приклад цього є PIC18F2480 . Цей мікроконтролер (із вбудованою CAN) здатний самостійно керувати шиною CAN або потрібен зовнішній приймач / контролер CAN?

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

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

Припустимо, що у мене будуть необхідні резистори припинення та інші невеликі дискретні компоненти (ковпачки, резистори тощо)

Відповіді:


55

Це дуже гарне запитання. Як правило, CAN вимагає приймач для кожного вузла:

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

Однак за певних обставин ви можете фактично піти без жодних приймачів! Такі обставини:

  • Коротка довжина шини (набагато менше 1 метра)
  • Переважно всі мікроконтролери знаходяться на одній друкованій платі або в копі PCB.
  • Швидкість передачі бітів низька
  • Навколишнє середовище не надто шумно електрично

Це не важкі правила. Ви можете піти з максимальною швидкістю передачі (1 Мб / с), якщо у вас дійсно коротка шина (10 см).

Щоб цього досягти, потрібно трохи знати про те, що робить трансивер. Як і більшість приймачів, вони можуть виводити на шину високий або низький рівень (представляючи 1 і 0), але 0 може домінувати над 1. IE Якщо два приймачі намагаються говорити одночасно, і один говорить 1, а інший говорить 0, тоді 0 переможе. Ми можемо відновити ту ж ситуацію, просто використовуючи діоди:

Простий МОЖЛИВО

Див. Примітку про застосування Seimens AP2921: Бортова комунікація через CAN без приймача

Але ось ще цікавіше: PIC насправді має апаратну підтримку безпередавальної CAN!

Реєстр CIOCON

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

Простіший МОЖЛИВО


2
Абсолютно фантастична відповідь. Я дуже вдячний за час, який ви взяли на відповідь. Можливо, мені доведеться перейти з приймачем, тому що може бути багато електричного шуму, і хоча все буде розміщено у "коробці", вони будуть знаходитися на декількох плат. Знову дякую!
efox29

@ efox29 - Ласкаво просимо. Звичайно, краще, якщо ви можете.
Rocketmagnet

Ця трансиверна установка була для мене новою і виглядає дуже цікавою для налаштування простої мережі контролерів на більші відстані. Приємно!
0x6d64

@ 0x6d64 - Якщо вам це потрібно довго, не забудьте скористатися низькою швидкістю передачі бітів, а обмеження швидкості обмеження ребер.
Rocketmagnet

1
Зауважте, що це спрацює, якщо всі пристрої на шині використовують однакову конфігурацію та використовують однопровідну шину CAN. Якщо ви хочете взаємодіяти з будь-яким іншим, що насправді є "справжнім" ISO CAN і використовує двопровідну шину, цей режим не працюватиме.
Джон Ватт

10

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


3
Так. Правильно. ОП запитує про PIC18. Це не дуже допомагає.
Федеріко Руссо

4
@FedericoRusso він наводить приклад з PIC18, а timrorr дав рішення із вбудованим драйвером. Що з цим?
clabacchio

8
@FedericoRusso - Не будь таким анальним. Ця відповідь дуже цікава.
Rocketmagnet

1
@Rocketmagnet: Отже, питання: "Як зробити X?" A: "Роби Y." все-таки все в порядку? (З вашої власної відповіді)
Федеріко Руссо

2
@FedericoRusso - Якщо на питання добре відповіли на задоволення ОП, і хтось згадує цікаву пов’язану інформацію, то, звичайно, чому б ні?
Rocketmagnet

9

Так, вам потрібен перекладач. CAN-штифти на мікроприймачі приймають та передають. Сама шина CAN використовує кручену пару з диференціальною сигналізацією на два дроти під назвою ВИСОКИЙ і НИЗЬКИЙ.

Одне з завдань приймача - прийняти логічний рівень, який ви представляєте на штифті TX, перетворити його в сигнали шини CAN:

  • логіка '1' представлена ​​не заздалегідь керуванням шиною, тому лінії ВИСОКОГО та НИЗКОГО "пливуть" до 2,5 В - в термінології CAN називають "рецесивним бітом".
  • логіка '0' представлена ​​за допомогою руху ВИСОКОЇ лінії високої та низької лінії НИЗКОГО - називається "домінантним бітом", оскільки це буде перекривати будь-які рецесивні біти, що передаються.

Інша - взяти те, що є на шині, і повернути його назад на логічний рівень, щоб відправити назад з штифта RX на ваш мікрофон.


8

Вам потрібна мікросхема CAN-приймача між процесором та шиною CAN. Перевірте MCP2551.

Оновлення 17 серпня 2017 року:

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


1
Microchip рекомендує 2561 в порівнянні з 2551 зараз. NXP також має кілька цікавих CAN-чіпів. Більшість MCU потребує приймача.
Людвіг Шрейер

2

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

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

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

Нова еволюція - це мікросхеми типу System Base, які включають регулювання напруги, режими живлення та захист від ОУР від шини.

Як і тиморр, про який говорили вище, LCP11C24 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.