Это сообщение I²C?


9

Мне нужно расшифровать связь между двумя устройствами, но у меня нет информации об этих устройствах. Все, что я знаю, это то, что нужны четыре провода (GND, VCC и два провода связи). Я подозреваю, что это связь I²C.

Я пытаюсь расшифровать его с помощью инструмента декодирования осциллографа, но я не совсем уверен в этом. Я не могу правильно определить элементы связи I²C, когда визуально проверяю сигналы.

Глядя на сигналы, я сделал следующие предположения, и, возможно, кто-то может помочь. Это были мои предположения:

  1. Все приводит к убеждению, что часы - это синий сигнал, а данные - красный сигнал.
  2. Часы, кажется, перевернуты, потому что их состояние простоя не на высоком уровне.
  3. Я не уверен, что сигнал данных также инвертирован, но, похоже, так оно и есть.

Верны ли мои предположения?

На последнем рисунке цифра с цифрой 5 обозначена кружком, и есть часть сигнала. Я не могу определить начало, подтверждение и остановку битов. Кто-нибудь может определить эти элементы, просто глядя на фигуру?

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

[Отредактировано] Некоторые люди спрашивали меня об устройствах, которые находятся в связи. Связь между ключом от машины и инструментом мне не разрешена, но я пытаюсь сделать реверс-инжиниринг.


1
У вас есть начальное условие на крайнем левом красном (SDA) ребре. Он понижается, а инвертированный синий (–SCL) удерживается на низком уровне. После этого изменения на красный (SDA), по-видимому, происходят только тогда, когда инвертированный синий (-SCL) высок. Это правда, что я разговариваю.
Янка

2
@ Янка, это только допустимый разговор I2C, если вы предполагаете, что SCL инвертирован. Нет причин предполагать это.
Энни

2
@ Янка, ОП перечислил это как предположение. Это предположение основано на предположении, что это I2C. Есть несколько причин полагать, что это не I2C - одна из них заключается в том, что часы не работают.
Энни

5
@ Даниэль, не могли бы вы рассказать нам, что это за два устройства?
Энни

2
Возможно, вместо того, чтобы беспокоиться о «что это такое», вы должны подумать о «что это говорит». Выясните, какое ребро (а) нужно отобрать. Возьмите логический анализатор, возможно, потокового типа USB, и начните писать декодер, который отражает область изменчивости. Затем начните искать шаблоны в данных.
Крис Страттон

Ответы:


6

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

Кажется, он имеет ACK (короткий импульс на линии данных до растяжения такта очень похож на передачу данных от ведущего к подчиненному).

Как ни странно, кажется, для передачи 7 бит за один раз.


1
Если это проприетарная версия протокола, он также может использовать 7-битную или меньшую связь
Maple

6
@ Мейпл Да. Я могу изобразить инженера, который говорит: «Как мы можем сделать это как I2C, но достаточно отличаться, чтобы нам не нужно было платить гонорары? Инвертируйте часы и отправляйте 7 бит за раз». Но я могу только догадываться.
Энни

11

Учитывая, что на байт всего 8 тактов (I2C требует 9-й такт для бита ACK / NAK) и состояние простоя тактового генератора кажется низким, я бы сказал, что это скорее интерфейс SPI (или SPI-подобный).

Однако не уверен насчет дополнительной тактовой частоты в первом бите каждого байта.


1
С другой стороны, этот узкий импульс в конце тактовой последовательности очень похож на NACK. Кроме того, то, что выглядит низко в режиме ожидания, может быть растяжением часов, которое больше не разрешено спецификацией, но может использоваться старыми рабами. Начальное состояние на рисунках (1) и (2) на самом деле высокое
Maple

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

1
Это правда, я действительно согласен с вами. Что мне странно, так это несовместимое поведение SDI / SDO (что бы это ни было) в конце (1)
Maple

1
@Maple Разве I2C не выпустит линии на холостом ходу?
Selvek

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.