Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Ответить

Декодирование протокола парктроника

Чт мар 05, 2015 07:49:01

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

Изображение

Re: Декодирование протокола парктроника

Пт мар 06, 2015 06:39:00

очень похоже на SPI . а зачем вручную декодировать? принять это на туже ардуину, и смотреть данные

Re: Декодирование протокола парктроника

Пт мар 06, 2015 06:50:06

20-ть бит на дисплей - вряд ли это SPI. Возможно в дисплее стоит обыкновенный сдвиговый регистр (или несколько последовательно) и его выходы подключены к светодиодам. А может быть и индикатор со вренным сдв. регистром...
Лучше открыть дисплей и посмотреть на его "внутренности". Часть вопросов сразу отпадёт.
P.S.
Проще, даже, вначале попытаться управлять дисплеем.

Re: Декодирование протокола парктроника

Пт мар 06, 2015 08:15:12

Да, я уже нарыл в инете, мне тоже видится что это SPI без линии MISO. Попробую принять на arduino, только вот не могу нормальный пример найти для SPI-slave. Экран конечно же вскрою, посмотрим что там.

Re: Декодирование протокола парктроника

Пт мар 06, 2015 08:19:43

ну уж если на ардуине делать собрались - загляните на SPI Library
http://arduino.cc/en/Tutorial/HomePage

или в дистрибутиве там этих примеров выше крыши

Re: Декодирование протокола парктроника

Пт мар 06, 2015 08:24:19

на хабре была статья, в которой автор рассказывал о том, как он хакнул протокол обмена парктроника - со всеми диаграммами и т.п.
поищите там.

Re: Декодирование протокола парктроника

Сб мар 07, 2015 15:27:03

Вскрыл дисплей, по маркировке микросхем - ничего не нашёл. Микросхема побольше: CH03 501 DOD1, поменьше: APS038 ...
Изображение

Изображение

Попытался считать данные ардуино в роли 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;                   
}

Re: Декодирование протокола парктроника

Сб мар 07, 2015 23:18:19

На осциллограммах не видно (хотя, может только мне ...) режим SPI точно 1 ?

Re: Декодирование протокола парктроника

Вс мар 08, 2015 07:10:27

Если посмотреть на осциллограмму , например 6-й бит и 17 , будет распознаваться однозначно по спаду тактового сигнала, хотя, я могу ошибаться . А Вы как считаете, какой режим?

Re: Декодирование протокола парктроника

Вс мар 08, 2015 07:12:42

Как мне кажется, они все по спаду.
Попробуйте, вначале, такую же посылку дать на индикатор. Потом имените в посылке 1 бит в первом. Сразу станет понятно: последние 4-е бита это контрольная сумма или что-то измениться на индикаторе.

Re: Декодирование протокола парктроника

Вс мар 08, 2015 09:28:28

На какой минимальной частоте может работать spi в микроконтроллерах avr ? По осциллограммам - частота линии clk - 20 kHz , не слишком ли мало для аппаратного spi? Еще смущает то, что посылка 20 бит, в описании протокола spi везде пишут про 8 бит. Может поэтому я не могу получить данные?

Re: Декодирование протокола парктроника

Вс мар 08, 2015 09:33:59

Вот и я о том же. 20-ть бит с такой частотой - не похоже на SPI. Логичнее было бы сделать SPI на более высокой частоте и пакет длиной 16-ть или 24-ре бита.
Всё-таки, попробуйте не принимать а передавать пакеты в индикатор. На мой взгляд, так будет проще "расколоть" код посылки.

Re: Декодирование протокола парктроника

Пн мар 09, 2015 11:58:22

Albert_V писал(а):Вот и я о том же. 20-ть бит с такой частотой - не похоже на SPI. Логичнее было бы сделать SPI на более высокой частоте и пакет длиной 16-ть или 24-ре бита.
Всё-таки, попробуйте не принимать а передавать пакеты в индикатор. На мой взгляд, так будет проще "расколоть" код посылки.

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

Re: Декодирование протокола парктроника

Вт мар 10, 2015 04:49:21

Если у вас есть какой-нибудь PIC12, PIC16 или PIC18 и вы можете его прошить - могу чиркануть программку в тексте которой будете менять данные. Там делов то на 10-ть минут с двумя перекурам.
Условие одно: Вы выложите на форум результаты "раскола" пакета данных.

Re: Декодирование протокола парктроника

Вт мар 10, 2015 06:35:47

Есть PIC18F258, прошить тоже есть чем. Хотелось бы увидеть программку на си, о результатах отпишусь здесь.

Re: Декодирование протокола парктроника

Вт мар 10, 2015 06:37:41

На СИ не пишу. Только ASM.
Надо?

Re: Декодирование протокола парктроника

Вт мар 10, 2015 06:52:45

в асм вообще не разберусь, спасибо, не имеет смысла. Может объясните "не пальцах" логику программки?

Re: Декодирование протокола парктроника

Вт мар 10, 2015 06:56:43

Зачем вам разбираться в ASM?
В "шапке программы" просто будете менять значения трёх байт. При нажатии на кнопку будет передача пакета.

Re: Декодирование протокола парктроника

Вт мар 10, 2015 07:07:34

Мне недостаточно знать какой бит за что отвечает, мне еще нужно научиться получать эти биты в своём проекте. Тоесть главный вопрос: как эти байты считать , а остальное - дело техники.

Re: Декодирование протокола парктроника

Вт мар 10, 2015 07:14:16

Для приёма - задайте прерывания по спаду (CLK) на каком-либо входе и считывайте данные когда CS=LOW. Как только CS=LOW>HI - считаете что пакет принят и "разбираете" его.
Написать сдвиговый регистр на 20-бит (3 байта, перенос через флаг С) - что может быть проще?
Ответить