Прошу оказать непосильную помощь в декодировании протокола парктроника. От основного блока на дисплей передаются данные по 3-м проводам: DATA, CLK, CS . Планируется подключение основного блока к Arduino с последующим разбором полученных данных. Есть примерное представление как это работает, но на практике возникают затруднения.
Декодирование протокола парктроника
Декодирование протокола парктроника
Всем привет!
Прошу оказать непосильную помощь в декодировании протокола парктроника. От основного блока на дисплей передаются данные по 3-м проводам: DATA, CLK, CS . Планируется подключение основного блока к Arduino с последующим разбором полученных данных. Есть примерное представление как это работает, но на практике возникают затруднения.


Прошу оказать непосильную помощь в декодировании протокола парктроника. От основного блока на дисплей передаются данные по 3-м проводам: DATA, CLK, CS . Планируется подключение основного блока к Arduino с последующим разбором полученных данных. Есть примерное представление как это работает, но на практике возникают затруднения.
- Реклама
Re: Декодирование протокола парктроника
очень похоже на SPI . а зачем вручную декодировать? принять это на туже ардуину, и смотреть данные
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
20-ть бит на дисплей - вряд ли это SPI. Возможно в дисплее стоит обыкновенный сдвиговый регистр (или несколько последовательно) и его выходы подключены к светодиодам. А может быть и индикатор со вренным сдв. регистром...
Лучше открыть дисплей и посмотреть на его "внутренности". Часть вопросов сразу отпадёт.
P.S.
Проще, даже, вначале попытаться управлять дисплеем.
Лучше открыть дисплей и посмотреть на его "внутренности". Часть вопросов сразу отпадёт.
P.S.
Проще, даже, вначале попытаться управлять дисплеем.
Re: Декодирование протокола парктроника
Да, я уже нарыл в инете, мне тоже видится что это SPI без линии MISO. Попробую принять на arduino, только вот не могу нормальный пример найти для SPI-slave. Экран конечно же вскрою, посмотрим что там.
Re: Декодирование протокола парктроника
ну уж если на ардуине делать собрались - загляните на SPI Library
http://arduino.cc/en/Tutorial/HomePage
или в дистрибутиве там этих примеров выше крыши
http://arduino.cc/en/Tutorial/HomePage
или в дистрибутиве там этих примеров выше крыши
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Декодирование протокола парктроника
на хабре была статья, в которой автор рассказывал о том, как он хакнул протокол обмена парктроника - со всеми диаграммами и т.п.
поищите там.
поищите там.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Декодирование протокола парктроника
Вскрыл дисплей, по маркировке микросхем - ничего не нашёл. Микросхема побольше: CH03 501 DOD1, поменьше: APS038 ...


Попытался считать данные ардуино в роли SPI-slave - тоже облом. Выкладываю здесь скетч, мож я чего не понимаю...
Попытался считать данные ардуино в роли SPI-slave - тоже облом. Выкладываю здесь скетч, мож я чего не понимаю...
Код: Выделить всё
//SLAVE
//определяем пины SPI
#define MOSI_PIN 11 // Data
#define SCK_PIN 13 // CLK
#define SS_PIN 10 // CS
//определяем переменную для получаемого байта
byte recievedByte;
void setup() {
//обнуляем регистр управления SPI
SPCR = B00000000;
//разрешаем работу SPI, фаза тактирования - по спаду (SPI MODE 1)
SPCR = (1<<SPE)|(1<<CPHA);
//инициализируем последовательное соединение
Serial.begin(9600);
//определяем пины для работы с SPI
pinMode(MOSI_PIN, INPUT);
pinMode(SCK_PIN, INPUT);
pinMode(SS_PIN, INPUT);
}
void loop() {
//пока пин slave select опущен
while (digitalRead(SS_PIN)==LOW){
//принимаем байт и записываем его в переменную
recievedByte=spi_receive();
//смотрим в мониторе полученный байт
Serial.println(recievedByte,BIN);
}
}
//функция для приема байта
byte spi_receive()
{
//пока не выставлен флаг окончания передачи, принимаем биты
while (!(SPSR & (1<<SPIF))){};
//возвращяем содержимое регистра данных SPI
return SPDR;
}
-
Minor/2
- Вымогатель припоя
- Сообщения: 536
- Зарегистрирован: Пт ноя 05, 2010 12:53:36
- Откуда: Беларусь Витебск
- Контактная информация:
Re: Декодирование протокола парктроника
На осциллограммах не видно (хотя, может только мне ...) режим SPI точно 1 ?
Re: Декодирование протокола парктроника
Если посмотреть на осциллограмму , например 6-й бит и 17 , будет распознаваться однозначно по спаду тактового сигнала, хотя, я могу ошибаться . А Вы как считаете, какой режим?
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
Как мне кажется, они все по спаду.
Попробуйте, вначале, такую же посылку дать на индикатор. Потом имените в посылке 1 бит в первом. Сразу станет понятно: последние 4-е бита это контрольная сумма или что-то измениться на индикаторе.
Попробуйте, вначале, такую же посылку дать на индикатор. Потом имените в посылке 1 бит в первом. Сразу станет понятно: последние 4-е бита это контрольная сумма или что-то измениться на индикаторе.
Re: Декодирование протокола парктроника
На какой минимальной частоте может работать spi в микроконтроллерах avr ? По осциллограммам - частота линии clk - 20 kHz , не слишком ли мало для аппаратного spi? Еще смущает то, что посылка 20 бит, в описании протокола spi везде пишут про 8 бит. Может поэтому я не могу получить данные?
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
Вот и я о том же. 20-ть бит с такой частотой - не похоже на SPI. Логичнее было бы сделать SPI на более высокой частоте и пакет длиной 16-ть или 24-ре бита.
Всё-таки, попробуйте не принимать а передавать пакеты в индикатор. На мой взгляд, так будет проще "расколоть" код посылки.
Всё-таки, попробуйте не принимать а передавать пакеты в индикатор. На мой взгляд, так будет проще "расколоть" код посылки.
Re: Декодирование протокола парктроника
Это конечно же сделаю, просто у меня недостаточно опыта в этих делах, я пока не представляю себе как это сделать, может подскажете?Albert_V писал(а):Вот и я о том же. 20-ть бит с такой частотой - не похоже на SPI. Логичнее было бы сделать SPI на более высокой частоте и пакет длиной 16-ть или 24-ре бита.
Всё-таки, попробуйте не принимать а передавать пакеты в индикатор. На мой взгляд, так будет проще "расколоть" код посылки.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
Если у вас есть какой-нибудь PIC12, PIC16 или PIC18 и вы можете его прошить - могу чиркануть программку в тексте которой будете менять данные. Там делов то на 10-ть минут с двумя перекурам.
Условие одно: Вы выложите на форум результаты "раскола" пакета данных.
Условие одно: Вы выложите на форум результаты "раскола" пакета данных.
Re: Декодирование протокола парктроника
Есть PIC18F258, прошить тоже есть чем. Хотелось бы увидеть программку на си, о результатах отпишусь здесь.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
На СИ не пишу. Только ASM.
Надо?
Надо?
Re: Декодирование протокола парктроника
в асм вообще не разберусь, спасибо, не имеет смысла. Может объясните "не пальцах" логику программки?
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
Зачем вам разбираться в ASM?
В "шапке программы" просто будете менять значения трёх байт. При нажатии на кнопку будет передача пакета.
В "шапке программы" просто будете менять значения трёх байт. При нажатии на кнопку будет передача пакета.
Re: Декодирование протокола парктроника
Мне недостаточно знать какой бит за что отвечает, мне еще нужно научиться получать эти биты в своём проекте. Тоесть главный вопрос: как эти байты считать , а остальное - дело техники.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Декодирование протокола парктроника
Для приёма - задайте прерывания по спаду (CLK) на каком-либо входе и считывайте данные когда CS=LOW. Как только CS=LOW>HI - считаете что пакет принят и "разбираете" его.
Написать сдвиговый регистр на 20-бит (3 байта, перенос через флаг С) - что может быть проще?
Написать сдвиговый регистр на 20-бит (3 байта, перенос через флаг С) - что может быть проще?


