Can шина трохи теорії і практика

CAN-шина: трохи теорії і практика

Can шина трохи теорії і практика

Уже сьогодні CAN інтерфейс впевнено витісняє UART-похідні інтерфейси (rs485, rs232) як більш функціональна шина з більшою продуктивністю, і на це є причини. Але до сих пір не так багато розробників знає як і з чим "є" цей інтерфейс. Спробуємо розглянути трохи прикладів і поділитися власним досвідом використання цього інтерфейсу, а також загальну теорію, приклади застосування та практичні рекомендації по використанню.

Що ж таке CAN-bus, в загальних словах це подібний ethernet інтерфейс, що описує логіку роботи шини, при цьому не прив'язаний ні до якого фізичного рівня, ну і звичайно ні до якого протоколу. Інтерфейс дуже продуманий, він виключає колізії, помилки на лінії і гарантує доставку, при цьому в ньому немає архітектури master-slave, тут кожен пристрій просто "викидає" на лінію дані і всі пристрої можуть переглядати отримані дані, як-ніби все master'и . Швидкість на кан-шині - до 1 Мбіт. Да да, таке навіть і не снилося rs485, на зміну якого прийшов CAN.

При таких плюсах є і свої недоліки. Пристроїв з інтерфейсом UART дуже багато, а ось з підтримкою CAN bus дуже мало. У той же час гальмуючим фактором для нової шини є сама складність програмної реалізації низького рівня (драйвера), не кожен програміст готовий взятися за освоєння нової тематики. UART звичайно є скрізь і навіть на найпростішому процесорі, це один з найстаріших інтерфейсів, відповідно навіть самий ледачий програміст хоч раз стикався з таким інтерфейсом.

Якщо ж процесор не має на борту CAN-контролера, це не так страшно. Багато хто використовує мікросхеми типу mcp2510, це контролер, що підключається по SPI. Його використовують багато виробників електроніки, embedded linux має навіть підтримку цього чіпа в деяких BSP, так що підключити кан-контролер до пристрій з маленьким лінуксом може не скласти праці.

Тепер трохи про фізичну реалізації. Є стереотип, що CAN пов'язаний з фізичної реалізацією. Це не так. Але тим не менш найчастіше використовується кручена пара для передачі сигналу, рівень сигналу в кручений парі трохи більше 3 вольт. Сигнал добре видно на осцилографі, при правильному підключенні це набір прямокутних імпульсів. Є так само оптична реалізація фізичної лінії, по суті сигнали в ній нічим не відрізняються.

Якщо ми говоримо про реалізацію кручений парою, то варто знати ще кілька речей. На кінцях шини стоять розв'язують опору, їх значення 120 Ом. Практика показує, що можливе використання і резисторів номіналом близько 500 Ом. Застосування цих резисторів пов'язано з поширенням сигнальних хвиль високої частоти. Також є думка, що варто використовувати кабель не менше 1 метра для зв'язку двох пристроїв, хоча все звичайно залежить від навичок схемтохніка і розуміння того, що відбувається на шині.

Про структуру повідомлень можна почитати в іншій статті на цьому сайті.