0
![Вы не можете благодарить!](images/buttons/up_dis.png)
Спасибо: |
Получено: 146 Отправлено: 16 |
На i2c он совсем не похож. Похож он на spi. Практически один в один.
У меня программно все сделано, ни каких аппаратных возможностей не использовал.
Не за что. Главное чтоб пригодилось кому-нибудь.![]()
Спасибо: |
Получено: 0 Отправлено: 4 |
Конечно пригодится)
ковыряю ардуино в сторону SPI, там есть аппаратная поддержка, но и без нее можно. Софтово. очень хочется сдружить моб. тел с машиной. я на телефоне (android) сделал небольшой софт, отправляющий по bluetooth данные(номер звонящего, уровень приема сети, батарея, память и прочее) на bluetooth arduino. Остается только отобразить это все на FIS
--- Добавлено чуть позже ---
не сочтите за сумасшедшего, но у меня в планах отображение количества непрочитанных электронных писем(е-мэил'ов) - по работе необходимость постоянно их мониторить, переключение между данными, предварительно настроенными на телефоне(смс, письма, звонки, играющий трек(воспроизведение через тот же bluetooth в штатную simphony) и прочее), сортировка на телефоне очереди отображения данных. даже придумал логику, как все это будет отображаться и как всем этим управлять с помощью качельки на подрулевом (audi a6 c5)
проблема только в одном - как передавать данные из arduino в FIS
Спасибо: |
Получено: 146 Отправлено: 16 |
Кстати, все что описано выше проверялось только на рестайлинговом пассате и шкоде октавии.
По поводу а6 с5... У меня не получилось выводить данные через 3lb на приборку от а6 с5. Она совершенно не реагировала ни на какие данные по шине. Но как раз на этих машинах у ауди был переход в передаче данных от мультимедиа с 3LB на CAN. И у меня была одна из последних приборок. Так что если есть штатная музыка, проверь сначала как она подключена к приборке. По 3LB или только по CAN шине.
Спасибо: |
Получено: 0 Отправлено: 4 |
да, если авто из последних, то там КАН. но у меня как раз-таки 3lb (99й год авто), проверял магнитолу: http://www.ertasvc.ru/userfiles/AudSim1.jpg С коннектор (8, 9, 10). А вот на приборке на самой еще провода не смотрел.
Как тебе моя идея сдруживания телефона с машиной?
а отличие всего этого от SPI в том, что нету провода MISO — Master Input, Slave Output: данные от ведомого к ведущему ?
Спасибо: |
Получено: 146 Отправлено: 16 |
Идея хорошая, главное чтоб тебе терпения хватило на её реализацию.
Да. И Enable (Slave Select в SPI) немного иначе работает.
Если есть штатная музыка, то оптимально было бы подключиться к 3LB логическим анализатором и посмотреть на формат данных, т.к. на VW и Audi он может немного отличаться.да, если авто из последних, то там КАН. но у меня как раз-таки 3lb (99й год авто), проверял магнитолу: http://www.ertasvc.ru/userfiles/AudSim1.jpg С коннектор (8, 9, 10). А вот на приборке на самой еще провода не смотрел.
Спасибо: |
Получено: 0 Отправлено: 4 |
Телефонная часть реализуема для меня без проблем. Ардуино же - необходимо подцепиться к качельке управления БК на подрулевом переключателе и научиться выводить данные на FIS - в остальном проблем нет, поэтому, думаю, сил и терпения хватит.
Сегодня попробую этим заняться. в планах подсоединить к магнитоле arduino(за неимением ничего лучшего) и смотреть получаемые данные на ноуте.
Но остается вопрос - а кто же тогда посылает данные когда машина только-только завелась - надпись что необходимо нажать педаль тормоза, года трогаешься, так же все остальные данные. ведь они приходят с магнитолы (даже если не только на верхнюю часть а на весь экран). Или магнитола перехватывает права (у ЭБУ) на отображение и захватывает весь экран??? Зная это - можно было бы и из этого источника отследить поступающие потоки.
Спасибо: |
Получено: 146 Отправлено: 16 |
Все сообщения на экран выводит сама приборка. Любые сообщения о неисправностях, открытые двери, необходимость нажатия педали и т.п. От магнитолы идут только данные о музыке (номер трэка, радиостанция и т.п.) и данные о навигации если есть навигация. Ни одно другое устройство не может выводить данные на экран. Так же у приборки есть приоритет на вывод аварийных сообщений независимо от того что магнитола хочет вывести на экран. В общем с этим тебе нужно будет еще разобраться...Но остается вопрос - а кто же тогда посылает данные когда машина только-только завелась - надпись что необходимо нажать педаль тормоза, года трогаешься, так же все остальные данные. ведь они приходят с магнитолы (даже если не только на верхнюю часть а на весь экран). Или магнитола перехватывает права (у ЭБУ) на отображение и захватывает весь экран??? Зная это - можно было бы и из этого источника отследить поступающие потоки.
Одновременно магнитола и твое устройство выводить данные не смогут. Нужно будет магнитолу отключать от приборки и либо заводить с неё данные в твое устройство и через него отправлять в приборку когда это нужно, либо забыть о выводе данных с магнитолы на приборку.
Спасибо: |
Получено: 0 Отправлено: 4 |
да, об этой логике я уже думал. теоретически, я хочу сделать переключение между источниками с помощью долгого зажатия качельки БК, а в сам ардуино пустить данные из магнитолы. тогда получится что у ардуино изиначально отключено вещание на приборку и слушает кнопки БК при этом вещая через себя данные из магнитолы. при зажатии БК он начинает сам вещать на БК. Либо же, не составит проблем, с той же кнопки БК переключать реле средствами ардуино для выбора источника вещания.
--- Добавлено чуть позже ---
autopilot, у меня с прикладными языками плоховато. будь добр. помоги советом на этой странице, описано какими методами может ардуино работать по SPI http://robocraft.ru/blog/arduino/518.html Там доступно 4 метода. я так понимаю, выбрав правильный и потом настроив скорости и частоту можно оперировать именно этой библиотекой. так вот. какой метод подходит? я так понял, что нужен
Режим 3: CPOL=1, CPHA=1
Чтение — на фронте, запись — на спаде
Спасибо: |
Получено: 146 Отправлено: 16 |
Да. Правильно.
Можно попробовать использовать SlaveSelect (или ChipSelect по другому) в штатном режиме. Должно адекватно работать.
--- Добавлено чуть позже ---
не. не правильно я тебе написал.
CPOL=1, CPHA=0
Там выборка на спаде клока (falling edge).
--- Добавлено чуть позже ---
Опять обманул.![]()
Режим 3: CPOL=1, CPHA=1
Все таки правильный. Че-то я на чтение, а не на запись посмотрел. Совсем старый стал видимо...![]()
Спасибо: |
Получено: 0 Отправлено: 4 |
данные от магнитолы получаю, но они вообще непонятного типа
!ä8Íf8Í!!#ä8Í!ä9é³:Ì!¡ä8Ì!!!æ9
û9Ìæ9é!!!!ù:Ì!ä9Îd9ù9Ìd8Ì#!¡#!æ8Í¡å9 ù8M²9é!å9é!æ:Ìå9i!!!#!!¡#!!¡å9é#ä9è³8Í#ä9è²:Ìf:
не могу их в HEX перевести
--- Добавлено чуть позже ---
в HEX перевел получаемые данные, но вот беда - данные идут даже если магнитола выключена.... даже если провод из нее вытащить. но если из ардуино вытащить провод то все ОК - данные "0"
как правильно шункитовать провода? подтянуть их просто к земле?
Спасибо: |
Получено: 59 Отправлено: 17 |
OFF: autopilot, раз уж пошла такая пьянка, нет ли случаем наработок по реверсу протокола CD-чейнджера?
∙ Passat Variant 2.0TDI DSG ⠴R-Line ∙ Genuine High Emissions Volkswagen ∙
Спасибо: |
Получено: 0 Отправлено: 4 |
получается принимать HEX, но данные идут даже если провод от магнитолы отключен. но если отключить провод от ардуино, то данные стабильно FF. что делать с проводом? шунтировать?заводить на землю?
Спасибо: |
Получено: 146 Отправлено: 16 |
По CD ничего нет.
Я в пятницу доберусь до компа, нормально отвечу. С телефона очень не удобно![]()
Спасибо: |
Получено: 146 Отправлено: 16 |
Тебе надо "руками" сначала посмотреть что там на линии происходит, а потом SPI аппаратную включать. В идеале нужен или осциллограф (чтоб увидеть в общих чертах что происходит на каждой линии), или логический анализатор. Но т.к. у тебя видимо нет ничего, придется изобретать велосипед самому. Возьми 3 любые ноги, настрой их на вход. Подключи к 3LB, ну а дальше лови данные программно и запихивай (по USB например) на комп.
Код примерно такой (условно конечно):
while (Not_Key_Pressed)
{
}
byte b = 0;
byte i = 0x80;
if (Enable_High)
{
}
do {
} while (i != 0);
// ждем когда клок опустится
while (Clock_High) {};
// читаем бит
if (Data_Low) b |= i;
// ждем когда клок поднимется
while (Clock_Low) {};
i = (i >> 1);
// приняли байт, отправляем по USB
Send_To_USB(b);
// ждем когда Enable опустится
while (Enable_High) {};
Таким образом у тебя будут все данные если при отправке каждого байта поднимается и опускается линия Enable. Если она поднимается на всю посылку, то у тебя будет только первый байт от каждой посылки и алгоритм чтения нужно поменять немного.
Не забываем что у нас отрицательная логика и то, что байты уходят старшим битом вперед.