Jump to content

    
Sign in to follow this  
Brain13

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

Recommended Posts

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

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

 

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

 

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

Схема1

Схема2

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

 

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

 

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

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

Share this post


Link to post
Share on other sites
Есть счетчики Меркурий, у них используется CAN драйвер на линии USART.

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

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

 

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

Share this post


Link to post
Share on other sites
Надо же какой маразм! Это ж нужно было догадаться - ежика скрестить с бегемотом

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

 

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

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

 

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

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

 

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

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

 

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

Share this post


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

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

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

 

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

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

 

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

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

 

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

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

 

Share this post


Link to post
Share on other sites
Может там не CAN, а RS-485 ?

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

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

 

 

 

Share this post


Link to post
Share on other sites
Ну, для этого ставиться не только CAN трансивер, но и CAN контроллер.

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

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

 

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

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

 

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

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

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

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

 

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

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

 

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

 

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

Share this post


Link to post
Share on other sites
Используют логику USART, физику CAN.

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

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

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

 

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

Share this post


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

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

 

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

 

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

Share this post


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

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

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

Share this post


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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites
Продается SI9200EY. Стоит 1,5 евро в Farnell и в Mouser.

 

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Схема1

Схема2

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this