PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Общение с машиной (http://pccar.ru/forumdisplay.php?f=14)
-   -   Blaupunkt RD4 + CANhacker (http://pccar.ru/showthread.php?t=19853)

autowp 23.11.2013 02:01

Вложений: 6
Бес вселился.

Решил-таки попробовать собрать "конвертер" CAN сигнала по приведенной схеме.
Заказал в поднебесной микросхемы и начал прикидывать что да как.

Плат я никогда не делал, поэтому конечно совершу какие-то ляпы и грубые ошибки, однако интерес в этом есть.

Сформулировал некоторые требования:
- не трогать canhacker
- коннектор переходника должен быть 1в1 как у canhacker
- переходник должен оставить возможность питаться от +12V
- переходник должен уметь питаться от canhacker (через USB)

Два последних пункта возможны только через небольшой колхоз: на выходном разъеме canhacker питания нет, однако есть дополнительный разъем для программирования платы,

на котором есть +5V. Им-то и решено было воспользоваться для подачи питания.

Вариант с размещением собственного стабилизатора на +5V не устраивает тем, что требует обязательного питания "от машины"

В качестве инструмента для создания схемы выбрал Eagle CAD. Управление в программе ужасное, нетипичное для программ в принципе. Да что там говорить: это первая в моей жизни программа, для которой я нашел ролик "How to copy and paste"

Нужных мне элементов в стандартной библиотеке не нашлось, поэтому обе микросхемы пришлось рисовать с нуля. Благо корпус у них достаточно простой (SOIC) и не вызывает вопросов.

Пассивные компоненты брал совершенно без какого-либо понимания, ориентируясь только лишь на маленький корпус. Думаю, что это не принципиально и что-нибудь так или иначе найду.

Итак, принципиальная схема:

http://pccar.ru/attachment.php?attac...1&d=1385154692

Почти полностью повторяет то, что было приведено в этом посте выше, с небольшими доработками (разъемы, WAKEUP для TJA).

Но до конца дело довести не удалось:
- Осталось совершенно непонятным назначение VREF на MCP.
- Полное непонимание зачем и как использовать VCC и BAT на TJA. Правильно ли я понимаю, что без +12 на BAT драйвер будет выключен?

Если вразумите - буду благодарен.


Однако это не помешало мне ради экспириенса натыкать элементы на виртуальную плату и зароутить по имеющейся схеме:

http://pccar.ru/attachment.php?attac...1&d=1385154692

Роутилось автоматически. Получилось весьма компактненько.
Однако мне совершенно не понятно, на сколько такая плата готова, например, к отправке в фирму, печатающую платы?
Не понятно, как наносить контуры элементов, надписи, чтобы они были напечатаны.

В аттаче даташиты и исходники

З.Ы. как сделать, чтобы картинки в миниатюрах не дублировались?

Vic26 25.11.2013 17:27

Если ты решил изготавливать плату, то почему бы не повторить тот же самый Can-Hacker, только заменить в нем CAN-драйвер на нужный. Это будет более предсказуемый результат чем с переходником.

fmy1 25.11.2013 20:59

Цитата:

Сообщение от autowp (Сообщение 278271)
Бес вселился.

уважаю! )
Цитата:

Сообщение от autowp (Сообщение 278271)
....WAKEUP для TJA).

Зря брат, верни на место, или ещё лучше через 100к. на +
Цитата:

Сообщение от autowp (Сообщение 278271)
- Осталось совершенно непонятным назначение VREF на MCP.

Не бери в голову. Оставь в покое и не парься.) Это просто референсное напряжение, никакого значения в данном случае не имеющее.
Цитата:

Сообщение от Vic26 (Сообщение 278541)
Если ты решил изготавливать плату, то почему бы не повторить тот же самый Can-Hacker, только заменить в нем CAN-драйвер на нужный. Это будет более предсказуемый результат чем с переходником.

Вот это точно

autowp 01.12.2013 19:06

Цитата:

Сообщение от Vic26 (Сообщение 278541)
Если ты решил изготавливать плату, то почему бы не повторить тот же самый Can-Hacker, только заменить в нем CAN-драйвер на нужный. Это будет более предсказуемый результат чем с переходником.

Мысль здравая, но я побаиваюсь большей сложности схемы: большее поле для ошибок.

Цитата:

Зря брат, верни на место, или ещё лучше через 100к. на +
Почему? Он же инверсный (low - проснись)
Вернуть на место (оставить в воздухе) мне не позволила программа - говорит, что это bad idea оставлять висящие input'ы


_________________________

Тем временем продолжил discovering RD4.
Решил, что надо начать с того, чтобы сделать мало-мальски удобный инструмент для анализа данных, а раз уж сам анализ для меня в новинку, то требуется какая-то микрозадача для решения.

Показалось, что не слишком сложным и одновременно ёмким будет эмуляция меню выбора CD-треков. Думаю, что не ошибся с выбором.

Для тех, кто не знаком с магнитолой: splash screen с линейным списком названий треков (cd-text), навигация вверх/вниз и, собственно всё.

Fast-forward: Java-приложение (во имя crossplatform), rxtx library, написание canhacker commands layer, поверх него canframe layer

Первым делом нужно было определить круг сообщений, отвечающих за это меню. Под это дело была сделана табличка с фильтром по id сообщений.
С её помощью не сложно было установить, что за это меню отвечают сообщения с arbitrationID = 0x125

7-и и 2-х байтовые фреймы, не сложный формат данных, show/hide и up/down заработали быстро.

И тут я вставил диск с CD-text'ом...
Оказалось, что по 0x125 идёт мультифрейм (ISO 15765-2).
Пришлось проложить ещё один layer CanMessage, собирающий мультифреймы в одно сообщение.

Названия треков в latin-1 (привет, кириллица). 20 байт на исполнителя и 20 на название трека и формат 0x125ых команд полностью собран.

Код:

125 6 01110000 TTTTTTTT AAAAAAAA 0SXEBBBB MMMMMMMM 00000000 [[JJJJJJJJ x20] [HHHHHHHH x20] x0-4]       
Показать меню списка треков.
TTTTTTTT - количество треков,
AAAAAAAA - offset экрана списка треков,
S - флаг "покажи список треков"
E - флаг "список треков сдвинулся" на 1 позицию выше или ниже за пределы 4х видимых в данный момент. Направление сдвига определяется по BBBB
BBBB - offset выбранного трека внутри экрана списка треков
MMMMMMMM - дескриптор текстовых данных, идущих далее.
каждая пара бит соответствует наличию исполнителя и названия трека, идущих далее пакетами по 20 байт в соответствующем порядке.
Позиции соответствуют позициям на экране, кроме ситуации наличия флага E
[JJJJJJJJ x20] - 20 байт имени исполнителя
[HHHHHHHH x20] - 20 байт названия трека

125 1 00000000 Спрятать меню списка треков. (Нажатие на OK после выбора трека в LIST, нажатие на ESC, по таймаут)

Пруфпикча

(не знаю как лучше снять видео, в котором участвует яркий монитор. Но смею заверить, что слева - магнитола :smile2: )


А также собран небольшой набор инструментов, потребность в которых возникла в процессе:
- canhacker commands monitor
- can frame filter & monitor
- can message filter & monitor


Вопросы:
1. Как принято определять, какие пакеты являются мультифреймовыми?
В данный момент я хардово вписал, что сообщения 0x125 - мультифрейм, но, наверное, есть правильный способ?
Было предположил, что вообще все сообщения ходят по ISO 15765-2, но, например, сообщение с VIN кодом противоречит этому.

2. Изучать формат сообщений было конечно интересно, но все-таки очень хотелось бы разыскать какой-нибудь reference manual, где бы они были хотя бы перечислены. Но гугл почему-то не помог мне в этом. Не подскажете?



Вот тут начал складировать инфу по CAN сообщениям
А вот тут сорцы java (не пинайте - первый java экспириенс)

fmy1 01.12.2013 22:02

Цитата:

Сообщение от autowp (Сообщение 279220)

Почему? Он же инверсный (low - проснись)
Вернуть на место (оставить в воздухе) мне не позволила программа - говорит, что это bad idea оставлять висящие input'ы

Когда STB и EN на +,он не играет значения. Судя по даташиту : To prevent a false local wake-up during an open wire at pin WAKE, this pin has a weak pull-up current source towards VBAT. However, in order to prevent EMC issues, it is recommended to connect a not used pin WAKE to pin BAT. Но это правда для Low power modes. Ну и по схемам магнитол, там на +, одна схема кстати от твоей.) НО!!! На моей магнитоле оказалось на 0.))) Специально влез и глянул(схемы то нет). Во как!. Так что поменял мнение, видимо можно и так и так.)
Слушай, а платки ты будешь делать? Если не затруднит одну для меня? Соответственно с меня..) Буду признателен

autowp 01.12.2013 22:11

Сначала на соплях соберу, посмотрим, заработает ли в принципе. Ну а коли да, так и платку непременно надо будет сделать. Минимальный тираж так или иначе сделает "пару" лишних копий.
Но это все не скоро - когда из поднебесной все придет - одному богу известно

fmy1 01.12.2013 22:31

Ну мне не к спеху, год лежит, ещё подождёт.)
Может видел? К сожалению только схема расположения, но грамотно, что терминальные можно менять.
http://savepic.ru/4854478.jpg

autowp 04.12.2013 01:24

Вложений: 2
Подумалось попробовать самый обычный ELM327 с bluetooth (какой был под рукой) запустить в роли can-adapter'a.

Вроде соединил всё: low, high, +12 и 2xGND, а он даже лампочкой не моргнул.

Может ему ещё что-то особенное надо? На распиновке OBDII ничего не вижу. Не подскажете?

fmy1 06.12.2013 23:58

Никак не пойму, а в чём проблема? Не присоединить, или присоединить но не работает?

autowp 07.12.2013 00:00

Присоединил, но оно не включается. В автомобиле оно сразу лампочками мигать начинает и bluetooth-девайс светится

fmy1 07.12.2013 00:06

Тогда не понял следующее, а к чему его сейчас подключаешь?

autowp 07.12.2013 00:06

К описанному выше комплекту магнитола + дисплей

fmy1 07.12.2013 00:12

Аааа.., ясно. Тогда не знаю. Вернее так, не подключал к магнитоле, но скрещивал для проверки каннахер и ELM. В общем после некоторых танцев с бубнами получил что-то и всё, большего и не надо было. Но у меня USB, и светик питание по крайней мере загорался сразу.

Dmitry8 10.12.2013 09:28

autowp, в твоей машине есть штатные парктроники?

autowp 10.12.2013 11:50

есть

Dmitry8 11.12.2013 10:08

Хочу подключить нештатный парктроник, чтобы работал как штатный (звук с динамиков, изображение на дисплее), в дальнейшем рассматриваю вариант замены дисплея на планшет с андройдом. Для этого спаял для arduino can-bus шилд на mcp2515+mcp2551. Проверил на столе: две ардуины по can благополучно обмениваются сообщениями. Когда же подключил к can в машине - приборная панель стала показывать --- , на центральном дисплее пропали все значения, короче can-info вырубилась полностью. После отключения моего девайса, слава богу, все заработало. Что я делаю не так? Машина citroen c4 2012 года.

awtoap 11.12.2013 14:13

Почитайте тему с самого начала...возможно это тот же случай

autowp 11.12.2013 14:26

Не-не, он завалил сетку. Выглядит абсолютно также, как я однажды нечаянно кинул землю за CAN-L или CAN-H в peugeot - сеть умерла, стрелки приборной панели "легли на ноль" и т.п.

mas_u 11.12.2013 15:34

Такая же хрень - если во время передачи по сети подключить к ней доп. устройство. Если подключать при вытащенном из замка зажигания ключе, то пакеты проходят нормально. Правда я подключаюсь уже после приемо-передатчика.

Dmitry8 11.12.2013 23:34

Подключал по 3-м проводам: CAN-H, CAN-L, GND. Сейчас замерил сопротивление на шилде: Между CAN-H и CAN-L 50 кОм, с землей CAN-H и CAN-L около 15 мОм.

linoobs1 17.12.2013 16:59

скорость на твоем кан нужно выставить такую, как и в сети автомобиля и будет счастье

Dmitry8 19.12.2013 11:47

В мануалах на этой шине указана скорость 125Кбит/с, такую же указал в скетче.

linoobs1 19.12.2013 19:43

Цитата:

Сообщение от Dmitry8 (Сообщение 281104)
В мануалах на этой шине указана скорость 125Кбит/с, такую же указал в скетче.

тебе нужно выставить скорость твоего устройства такую, какаю использует твой автомобиль это первое, для BMW 100 kb/s. Второе, сопротивление между линиями не нужно и третье, читай форумы на свою авто или распиновку штатного радио, дабы правильно подключить линии Hi и Low. На столе это одно, а в машине это другое и еще, я не знаю какой код для твоего контроллера, но если настроены Extendet_ID то пакеты ты не увидишь, надо на Standart_ID переключать.

Dmitry8 20.12.2013 14:19

Я извиняюсь, наверное непонятно написал. Скорость в шине моего автомобиля (125Кбит/с) я узнал из официальной документации для сервисных центров. Сопротивления, конечно же, не ставил. Точки подключения к шине определил по электрическим схемам из той же документации.

linoobs1 20.12.2013 19:57

Цитата:

Сообщение от Dmitry8 (Сообщение 281204)
Я извиняюсь, наверное непонятно написал. Скорость в шине моего автомобиля (125Кбит/с) я узнал из официальной документации для сервисных центров. Сопротивления, конечно же, не ставил. Точки подключения к шине определил по электрическим схемам из той же документации.

если все правильно, но при подключении машина вешается, значит что-то не правильно, могу предположить либо скорость не та, либо ваш кан не выставляет нужную скорость, у меня на бмв машина вешалась, когда выставил скорость 125, а на 100 все работает. Проверяйте все с начала, а если уже проверяли, значит начните все заново :big: либо отложите так на пол годика, потом с новыми силами опять начнете, где-то ведь сидит зараза

Dmitry8 21.12.2013 01:23

Спасибо за советы, еще хотел уточнить: обязательно ли подключать "землю"? или достаточно CAN-H и CAN-L?

dzmitry 21.12.2013 02:26

Цитата:

Сообщение от Dmitry8 (Сообщение 281269)
Спасибо за советы, еще хотел уточнить: обязательно ли подключать "землю"? или достаточно CAN-H и CAN-L?

Не обязательно. Но некоторые ресурсы говорят, что это не помешает. Лично я сейчас подключаюсь к шине без общей земли.

Dmitry8 21.12.2013 18:50

autowp, не мог бы ты отловить пакеты относящиеся к парктронику? Скорее всего в наших авто системы одинаковы.

autowp 21.12.2013 21:29

В целом - это одна из целей, но в данный момент у меня машины нет под рукой, будет только после нового года.
Так что, отловлю-то обязательно, но когда - не знаю

Dmitry8 21.12.2013 22:37

Отлично! буду следить за темой. На какой скорости подключаешься к can-шине? а то я после постов linoobs1 начал сомневаться.

autowp 21.12.2013 22:39

125 на магнитоле, 500 на OBD разъеме

mas_u 24.12.2013 00:21

Вложений: 1
Цитата:

Сообщение от autowp (Сообщение 279565)
Подумалось попробовать самый обычный ELM327 с bluetooth (какой был под рукой) запустить в роли can-adapter'a.

Вроде соединил всё: low, high, +12 и 2xGND, а он даже лампочкой не моргнул.

Может ему ещё что-то особенное надо? На распиновке OBDII ничего не вижу. Не подскажете?

Это распиновка с внутренней части разъема (где провода припаяны).
Тоже пробовал его подключить, только нифига он у меня не сниферит. На выходе mcp2551 данные есть, но как их вывести в терминал не понял. Правда у меня can шина в которой гуляют 4 однобайтовых посылки с левыми id. Скорость - 125
В терминале
> at cs
T:00 R:00

mas_u 24.12.2013 01:18

Цитата:

Сообщение от mas_u (Сообщение 281507)
Это распиновка с внутренней части разъема (где провода припаяны).
Тоже пробовал его подключить, только нифига он у меня не сниферит. На выходе mcp2551 данные есть, но как их вывести в терминал не понял. Правда у меня can шина в которой гуляют 4 однобайтовых посылки с левыми id. Скорость - 125
В терминале
> at cs
T:00 R:00

up:
Если поставить скорость в сети 500 кбит и настроить адаптер на ISO 15765-4 CAN (11 BIT ID, 500 Kbaud) - команда "AT SP 6" и че-нибудь послать, то адаптер отсылает в сеть 8 байтовое сообщение с id - 0x7DF.

Если я правильно понял то со скоростью 125 он работать не будет.

autowp 24.12.2013 01:41

Там есть CAN USER1 (125)

AT SP B


Только с параметрами надо поиграться согласно табличке: как минимум 11bit выставить, переменную длину пакета, отключить множитель 8/7, ... ( PP 2C SV XX, PP 2C ON )
http://elmelectronics.com/DSheets/ELM327DS.pdf 58 страница

Возможно ещё error checking отключить ( PP 2A SV XX, PP 2A ON )

mas_u 24.12.2013 01:46

Цитата:

Сообщение от autowp (Сообщение 281513)
Там есть CAN USER1 (125)

AT SP B


да, тоже работает)))

up:
поставил - pp 2c sv c0 - отсылается кол-во байт как посылаешь в терминале.
Как поменять идентификатор?

mas_u 24.12.2013 03:42

Цитата:

Сообщение от mas_u (Сообщение 281514)
Как поменять идентификатор?

сам отвечу:

заголовок сообщения (идентификатор) - AT SH XXX
текущий протокол - AT DP
вывод всех сообщений в терминал - AT MA
показывать идентификатор - AT H1
фильтр по идентификатору - АT CRA XXX

iGeophysix 13.01.2014 12:37

ууууууууу.... давно я на форуме не был!
Делаю аналогичную фигню только для Ниссан - Инфинити.
У меня проблема - показания климат-контроля показываются только на ЖК экране.
такой же кан читалкой я смог найти команды, но не могу никак перехватить абсолютные значения (только приращения).

Как ты нашел эти мультиплексоры и что это? :-)
я методом проб и ошибок работаю :-( мало че понимаю. Но уже кое-че добился.

autowp 13.01.2014 13:32

>> но не могу никак перехватить абсолютные значения (только приращения)
Ну их может и нет. Зачем бы дублировать в виде абсолютных и приращений.
Очевидно, при включении (зажигания/дисплея) отправляется исходное значение, а дальше только приращения. Найти будет не просто.

Да ещё всякие шуточки встречаются: не знаю как у инфинити, но у французов, например, шкалы баланса/басы/высокие/фронт на дисплее пронумерованы от -9 до 9, что соответствует сигналам на CAN: 36-3F,40-48

-9 36
-8 37
-7 38
-6 39
-5 3A
-4 3B
-3 3C
-2 3D
-1 3E
0 3F
+1 40
+2 41
+3 42
+4 43
+5 44
+6 45
+7 46
+8 47
+9 48

Хотя казалось бы чего проще эти цифры так и посылать F7...09

>> Как ты нашел эти мультиплексоры и что это? :-)
Мультиплексоры?

iGeophysix 13.01.2014 14:29

Цитата:

Сообщение от autowp (Сообщение 283197)
Хотя казалось бы чего проще эти цифры так и посылать F7...09

Ну иногда они заморачиваются - будь здоров.
Допустим с градусами все просто. Есть проблема с направлением потока - в лицо, на окно, в ноги. Цифры - можно открутить в одну сторону до упора - климат регулируется от 18 до 32 (или 34) градусов. Так можно провести калибровку. А вот направление обдува циклическое :-( Хотя надо попробовать что бывает, если нажать режим Auto, а потом тыкнуть в переключение режима.

Это нужно на случай, если комп принял значение, а климат контроль глюканул и моно было перекалибровать все.
Управляющую фигульку можно на Kivy/Python написать :-)

Цитата:

Сообщение от autowp (Сообщение 283197)
>> Как ты нашел эти мультиплексоры и что это? :-)
Мультиплексоры?

ааааай.... это в голове утром каша. Мультифреймы... ну уже понял, что это:-)

Glouck 14.01.2014 04:55

Цитата:

Сообщение от iGeophysix (Сообщение 283190)
ууууууууу.... давно я на форуме не был!
Делаю аналогичную фигню только для Ниссан - Инфинити.

Тоже ковыряюсь с CAN в Ниссане... Хочется выудить оттуда температуру на улице и в салоне. Подскажи, попадались ли тебе эти данные?
Может есть где-нибудь на просторах и-нета хоть какое-то описание CAN фреймов по Ниссанам?


Часовой пояс GMT +4, время: 09:37.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot