Це зв’язок I²C?


9

Мені потрібно розшифрувати зв’язок між двома пристроями, але я не маю інформації про ці пристрої. Я знаю лише про те, що потрібні чотири дроти (GND, VCC та два дроти зв'язку). Я підозрюю, що це зв’язок IC.

Я намагаюся розшифрувати його за допомогою інструмента декодування осцилоскопа, але я не зовсім впевнений у цьому. Я не можу відповідним чином визначити елементи комунікації I²C, коли візуально перевіряю форми хвиль.

Дивлячись на форми хвиль, я зробив наступні припущення, і, можливо, хтось може допомогти. Це були мої припущення:

  1. Все призводить до думки, що годинник - це синій сигнал, а дані - червоний сигнал.
  2. Здається, годинник перевернутий, оскільки його стан холостого ходу не на високому рівні.
  3. Я не впевнений, чи сигнал передачі даних також перевернутий, але, здається, це є.

Чи правильні мої припущення?

На останньому малюнку цифра з цифрою 5 вказана у колі, і є частина сигналу. Я не можу ідентифікувати стартові, ак та стоп біти. Чи може хтось ідентифікувати ці елементи, просто дивлячись на фігуру?

Введіть тут опис зображення Введіть тут опис зображення

[Відредаговано] Деякі люди запитували мене про пристрої, які є в спілкуванні. Комунікація полягає між ключем від машини та інструментом, про який мені не дозволяють говорити, але я намагаюся зробити зворотну інженерію на ньому.


1
У вас є умова запуску в крайньому лівому червоному краї (ПДР). Він знижується, а інвертований синій (–SCL) тримається низько. Після цього зміни на червоний (SDA), здається, відбуваються лише тоді, коли інвертований синій (–SCL) високий. Це дійсна розмова про IC.
Янка

2
@Janka, це правильна розмова I2C лише в тому випадку, якщо ви припускаєте, що SCL перевернуто. Немає підстав вважати це.
Енні

2
@Janka, ОП перерахувало це як припущення. Це припущення засноване на припущенні, що це I2C. Є кілька причин вважати, що це не I2C - одна з них полягає в тому, що годинник простоює.
Енні

5
@Daniel, ти зможеш сказати нам, що таке два пристрої?
Енні

2
Можливо, замість того, щоб турбуватися про те, "що це таке", слід подумати про те, "що це говорить". З'ясуйте, який край (и) потрібно зробити для вибірки. Отримайте логічний аналізатор, можливо, потоковий USB-тип, і починайте писати декодер, який фіксує область змінності. Потім почніть шукати шаблони в даних.
Кріс Страттон

Відповіді:


6

Я здогадуюсь, що це якийсь доморощений протокол "I2C-подібний" компанії. Колись із тих, хто користувався I2C, було ще тих днів, коли вони мали намір віддавати гроші Philips.

Схоже, у нього є ACK (короткий імпульс на лінії передачі даних перед розтяжкою годинника дуже схожий на передачу лінії передачі від ведучого до підлеглому).

Як не дивно, схоже, передається одночасно 7 біт.


1
Якщо це власницька версія протоколу, вона може також використовувати 7 або менше бітове спілкування
Maple,

6
@Maple Так. Я можу уявити інженера, який говорить: "Як нам зробити такий, як I2C, але просто настільки різним, що нам не доведеться платити роялті? Переверніть годинник і надсилайте 7 біт за один раз". Але я можу лише здогадуватися.
Енні

11

Зважаючи на те, що у байті всього 8 годин (I2C вимагає 9-го тактового сигналу для біта ACK / NAK), а стан холостого ходу здається низьким, я б сказав, що це швидше інтерфейс SPI (або SPI-подібний).

Однак не впевнений у додатковій тактовій ширині першого біта кожного байта.


1
З іншого боку, цей вузький імпульс наприкінці послідовності годин виглядає дуже схоже на NACK. Крім того, що схоже на низький час холостого ходу може бути розтягуванням годинника, яке більше не дозволено спецтехніка, але його можуть використовувати старі раби. Початковий стан на фотографіях (1) та (2) насправді високий
Клен

1
@Maple: я бачу ваш вузький імпульс даних, але я все ще не бачу 9-го тактового імпульсу. Шаблон даних цілком відповідає певним конфігураціям SPI фази та тактової полярності.
Дейв Твід

1
Це правда, я фактично погоджуюся з вами за цілий час. Що мені дивно - це непослідовність SDI / SDO (як би там не було) поведінка в режимі очікування в кінці (1)
Maple

1
@Maple Не став би I2C випускати лінії в режим очікування?
Сельвек

1
@Selvek Так, саме це я бачу на малюнку (1) та на початку зображення (2). Однак решта його більше відповідає SPI, як вказував Дейв. Ну, окрім дивного першого годинника, який виглядає як стартовий біт. Гм ... початок трохи ... це могло бути ...
Клен

3

Я кину капелюх на ринг ...

Якщо це старі пристрої, ви можете переглядати якийсь "голий мінімум" 7-бітовий синхронний варіант RS-232:

  • Цей довший імпульс на початку кожного кадру може бути початковим бітом, і

  • Плато в тактовому сигналі на самому початку може повернутися до 0, перш ніж перейти до негативної «позначки». (Ви не надавали напруги на знімках екрану, тому я тут здогадуюсь).


1
Ооо, це для мене нове. У нього є якийсь ак? (Не вдалося знайти його в моєму дуже короткому пошуку в Google). Якщо ні, то щось інше, що б пояснило короткий імпульс на лінії передачі даних після 8-го кліку?
Енні

1
Не те, що я знаю. І в будь-якому випадку, якщо це дійсно старомодний серіал, будь-яке спілкування в іншому напрямку вимагало б окремих проводів. Цей пульс занадто короткий, щоб бути чимось значним. Швидше за все, драйвер скидає себе перед наступним кадром. Все це здогадки, як ви самі сказали. Якщо OP не надає більше інформації про пристрої, це все, що ми можемо зробити.
Клен

@Maple, зв’язок між ключем від машини та інструментом, про який мені не дозволяють говорити, але я намагаюся робити зворотну інженерію на ньому.
Даніель

RS232 - це стандарт для електричних рівнів, а не для кодування слів даних
Кріс Страттон

@ChrisStratton Де ви знайшли щось про кодування у моїй відповіді? Все, що я говорю, це те, що якщо рівні напруги відповідають RS232 і сигнали нагадують синхронний послідовний, то, швидше за все, це не I2C
Maple

-1

Згідно з моїм досвідом роботи з I2C, я можу використовувати багатометровий пристрій для перевірки годинника, встановивши пристрій для вимірювання частоти (в герцах), тому якщо він зчитує постійне значення, як 2k, то це тактова частота I2C.


3
Ні, це зовсім не вагомий висновок. Багато речей, які не є I2C, мають стійкі годинники. Насправді I2C не має стійкого годинника, а швидше розмитого. Якщо ваш лічильник рахується протягом певного періоду часу, це фактично буде усереднювати активну тактову частоту з непрацюючими інтермедіями - вам потрібно буде виміряти зворотну ширину імпульсу, в ідеалі за сферою, де ви можете бути впевнені, що ви є насправді вимірює те, що призначено. На відміну від цього, деякі інші схеми, такі як I2S, мають постійно працює годинник. Але тактова частота може виключати лише щось, а не
Кріс Страттон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.