Перейти к содержанию
    

Самопальный CAN драйвер

Есть счетчики Меркурий, у них используется CAN драйвер на линии USART. Необходимо с ним связаться.

Собрал схему с драйвером sn65hvd1040-q1. Но у него есть логика против "закусывания" линии(timeout). Это означает, что если предать по USART'у 0x00 на скорости 9600, срабатывает защита и передача прерывается.

 

Нашел драйвер без защиты - SI9200EY фирмы VISHAY. Но дорстать его - проблема.

 

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

Схема1

Схема2

Как работает 2-я схема вообще не понял.

 

Необходимо обеспечить скорость 19200 и совместимость по уровням сигналов.

 

Подскажите, пожалуйста, насколько работоспособны данные схемы?

Может у кого-нибудь есть рабочие схемы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть счетчики Меркурий, у них используется CAN драйвер на линии USART.

Надо же какой маразм! Это ж нужно было догадаться - ежика скрестить с бегемотом :)

А какой у них стоит CAN драйвер?

 

А скажите по-подробнее модель и фирму, кажется я знаю эту контору ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо же какой маразм! Это ж нужно было догадаться - ежика скрестить с бегемотом

Я тоже безбожно матерюсь по этому поводу.

 

А какой у них стоит CAN драйвер?

Насколько я понимаю, чтобы обезопаситься от коллизий на линии. Дайвер 485 "сильно" тянет линии и при 0, и при 1. CAN "сильно" тянет только в доминантном состоянии. Поэтому когда одновременно передают несколько CAN'ов ничего не подгорает.

 

А скажите по-подробнее модель и фирму, кажется я знаю эту контору ....

Меркурий 230, фирма ИНКОТЕКС.

 

Может там не CAN, а RS-485 ?

Нет, там именно CAN драйвер. С 485 таких плясок с бубном бы не было.

 

Так кто-нибудь расскажет про работоспособность приведенных схем? Или, может, есть свои, рабочие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Насколько я понимаю, чтобы обезопаситься от коллизий на линии. Дайвер 485 "сильно" тянет линии и при 0, и при 1. CAN "сильно" тянет только в доминантном состоянии. Поэтому когда одновременно передают несколько CAN'ов ничего не подгорает.

Ну, для этого ставиться не только CAN трансивер, но и CAN контроллер.

И вообще существуют готовые схемные решения для контроля таких коллизий в RS-485.

 

Меркурий 230, фирма ИНКОТЕКС.

Не, это - нет та контора, о которой я подумал.

 

Так кто-нибудь расскажет про работоспособность приведенных схем? Или, может, есть свои, рабочие?

Откройте структурную схема любого CAN трансивера из его даташита - многое станет ясно.

 

Вообще очень странно, что производитель не дает всей необходимой информации о своем изделии.

Может у них самих и запросить то, что вам нужно - схему интерфейсной части?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может там не CAN, а RS-485 ?

Тогда и с USART всё сходиться.

может просто логику LIN используют, а физический уровень от CAN взяли! Можно коллизии детектить.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, для этого ставиться не только CAN трансивер, но и CAN контроллер.

И вообще существуют готовые схемные решения для контроля таких коллизий в RS-485.

Это их проблемы, зачем они используют такие решения. Я просто высказал свое мнение, почему именно так, тем более что где-то(может даже на этом форуме читал о такой же реализации). И задачи именно контроля коллизий, думаю, не стоит: поставили просто чтоб не сгорело.

 

Откройте структурную схема любого CAN трансивера из его даташита - многое станет ясно.

А Вы думаете я их ни разу не видел?

 

Вообще очень странно, что производитель не дает всей необходимой информации о своем изделии.

Может у них самих и запросить то, что вам нужно - схему интерфейсной части?

Далеко не все производители охотно делятся информацией о решениях, примененных в своем изделии.

Схема интерфейсной части проста и понятна: подаем линии USART на CAN драйвер(почему у меня так не получилось см. первый пост).

 

может просто логику LIN используют, а физический уровень от CAN взяли! Можно коллизии детектить.

Используют логику USART, физику CAN.

 

Третий раз задаю вопрос: Так кто-нибудь расскажет про работоспособность приведенных схем? Или, может, есть свои, рабочие?

 

P.S.: Извините пожалуйста, но можно ли услышать что-нибудь по поводу темы "как сделать драйвер?", а не обсуждения по поводу "а зачем козе баян?" и "чем думали разработчики?"(собственно, дабы этого не было, я и расписал все в первом абзаце).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используют логику USART, физику CAN.

Очень хорошее решение.

Пока не было драйверов CAN, для получения такого эффекта приходилось ставить драйверы RS-485, но в другом включении (выход TxD на вход TXE драйвера через инвертор, а TX драйвера на землю) - см. стандарт J1708. Потом для J1708 стали делать спец. драйвера RS-485 (вход TXE инверсный), а потом на базе J1708 разработали CAN.

Но и сейчас у нас работает множество машин (большинство тягачей "американцев" и др.) с шиной (физика) J1708, а протоколом J1587.

 

А по теме - нужно просто поставить драйвер без ограничения длительности доминанты, например, PCA82C250.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А по теме - нужно просто поставить драйвер без ограничения длительности доминанты, например, PCA82C250.

Спасибо за подсказку, его попроще достать чем SI9200EY, сегодня закажу.

 

Нашел у знакомого 1 драйвер CAN без защит, какой-то китайский, поставил, все заработало.

 

Все же хочется узнать, реально ли сделать на рассыпухе драйвер дешевле покупного? Обычный драйвер стоит порядка 60-80 рублей. Впринципе имеет смысл делать такой если цена будет около 30р. Характеристики небольшие: 19200 бод, электрическая совместимость, длина линии 10-20см, 1-2 устройства на линии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Характеристики небольшие: 19200 бод, электрическая совместимость, длина линии 10-20см, 1-2 устройства на линии.

Тогда обычный RS-485 драйвер в "J1708 включении" работать будет. А он рублей 15 стОит. Ну ещё инвертор на транзисторе и 2-х резисторах, например, придётся сгородить.

Странно, что изготовители счётчика у себя так не сделали - была бы стандартная J1708 шина, по защитам то же, что CAN. И к тому же дешевле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда обычный RS-485 драйвер в "J1708 включении" работать будет. А он рублей 15 стОит. Ну ещё инвертор на транзисторе и 2-х резисторах, например, придётся сгородить.

 

То есть это 2 схема из первого поста? Я кажется разобрался как она работает.

Вход драйвера закорочен на землю, то есть передатчик может либо быть отключенным от линии, либо передавать ноль. Во время передачи лог. 0 по линии USART TX, он передается не на вход драйвера, а через инвертор на ногу разрешения передачи, в этом случае передача разрешена, а драйвер жестко фиксирует CANH к питанию, CANL к земле, что соответствует доминантному состоянию линии. Когда на линии USART TX передается лог. 1, то передатчик выключен и линия сама уравнивает напряжения на CANH и CANL, то есть переходит в рецессивное состояние. А приемник всегда включен и считывает линию даже когда идет передача, то есть мы слышим свое "эхо", что необходимо для работоспособности CAN.

Если я что-то не так понял - поправьте меня.

 

Всем спасибо, за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продается SI9200EY. Стоит 1,5 евро в Farnell и в Mouser.

 

С Mouser не работал, а у фарнела очень большой минимальный заказ(по крайней мере если через терру).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

к сожалению, 1я ссылка не работает, а по 2-й схема с драйвером RS-485, не особо пртендующим на оригинальность.

Вопрос вот в чем: как максимально удешевить схему драйвера CAN, если требуется только приём?

Напрашивается ОУ в режиме компаратора (по сути необходимо только приведение уровней к стандартным ТТЛ/КМОП), можно в микрокап нарисовать помоделировать, но может есть и уже готовые опробованные схемы?

 

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

Схема1

Схема2

Как работает 2-я схема вообще не понял.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...