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

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

Для начала, нужно обеспечить защиту от помех в линии. Для этого используем два синфазных дросселя в одном корпусе, они создадут препятствие для коротких высоковольтных импульсов, которые могли навестись от системы зажигания автомобиля. Чтобы обеспечить эти импульсам короткий путь на землю, посадим обе линии CAN (CANH и CANL) на локальную землю CAN. Эта земля не должна иметь контакта с землёй устройства, разве что через дополнительный дроссель.

Чтобы защитить входы микросхемы от более мощных высоковольтных импульсов, которые всё-таки прошли через дроссель, посадим обе линии CAN на землю через сапрессор. Удобно использовать сдвоенные в одном корпусе сапрессоры на 20 вольт.

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

Далее — вход в микросхему драйвера. Подключаем линии CAN на контакты CANH и CANL микросхемы. Драйвер имеет настройку slope rate — скорость роста и спада напряжения. Подключим эту ножку через резистор на землю, как указано в даташите.

Питать микросхему драйвера будем от локального питания CAN. Линии интерфейса CAN (TxD и RxD) развяжем с помощью оптопар.

Так, мы имеем два уровня земли в драйвере, а передачу питания сделаем с помощью изолированных DC-DC конвертеров — со стороны МК в сеть CAN или наоборот, в зависимости от ваших задач.

can

Дальше подключаем всё это в микроконтроллер.