¿Es esta comunicación I²C?


9

Necesito decodificar la comunicación entre dos dispositivos, pero no tengo información sobre estos dispositivos. Todo lo que sé es que se necesitan cuatro cables (GND, VCC y dos cables de comunicación). Sospecho que es comunicación I²C.

Estoy tratando de decodificarlo con la herramienta de decodificación del osciloscopio, pero no estoy muy seguro. No puedo identificar elementos de la comunicación I²C de manera apropiada cuando reviso visualmente las formas de onda.

Mirando las formas de onda hice las siguientes suposiciones, y tal vez alguien pueda ayudar. Estas fueron mis suposiciones:

  1. Todo lleva a creer que el reloj es la señal azul y los datos son la señal roja.
  2. El reloj parece estar invertido porque su estado inactivo no está en un nivel alto.
  3. No estoy seguro de si la señal de datos también está invertida, pero parece que sí.

¿Son correctas mis suposiciones?

En la última figura, la figura con el número 5 indicado en un círculo, y hay una parte de la señal. No puedo identificar los bits de inicio, confirmación y detención. ¿Alguien puede identificar estos elementos simplemente mirando la figura?

Ingrese la descripción de la imagen aquí Ingrese la descripción de la imagen aquí

[Editado] Algunas personas me preguntaron sobre los dispositivos que están en la comunicación. La comunicación es entre la llave de un automóvil y una herramienta que no se me permite decir, pero estoy tratando de hacer una ingeniería inversa.


1
Tiene la condición de inicio en el borde rojo más a la izquierda (SDA). Baja cuando el azul invertido (–SCL) se mantiene bajo. Después de eso, los cambios a rojo (SDA) parecen ocurrir solo cuando el azul invertido (–SCL) es alto. Eso es válido hablar I²C.
Janka

2
@ Janka, eso solo es una conversación I2C válida si asumes que SCL está invertido. No hay razón para suponer eso.
Annie

2
@ Janka, el OP lo enumeró como una suposición. Esa suposición se basa en la suposición de que esto es I2C. Hay varias razones para creer que esto no es I2C, una de ellas es que el reloj está inactivo bajo.
Annie

55
@Daniel, ¿podrías decirnos cuáles son los dos dispositivos?
Annie

2
Quizás en lugar de preocuparse por "lo que es" debería pensar en "lo que dice". Averigua qué borde (s) necesitas probar. Obtenga un analizador lógico, probablemente del tipo de transmisión USB, y comience a escribir un decodificador que capture el alcance de la variabilidad. Luego comience a buscar patrones en los datos.
Chris Stratton el

Respuestas:


6

Supongo que es el protocolo "similar a I2C" de alguna compañía. Hubo algunos de aquellos en el pasado cuando usar I2C significaba tener que dar dinero a Philips.

Parece tener un ACK (el pulso corto en la línea de datos antes del estiramiento del reloj se parece mucho a la línea de datos que pasa de maestro a esclavo).

Curiosamente, parece transmitir 7 bits a la vez.


1
Si se trata de una versión patentada del protocolo, también podría utilizar una comunicación de 7 bits o menos
Maple,

66
@Maple Yeah. Me imagino a un ingeniero diciendo: "¿Cómo hacemos esto como I2C pero lo suficientemente diferente como para no tener que pagar regalías? Invierta el reloj y envíe 7 bits a la vez". Pero solo puedo adivinar.
Annie

11

Dado que solo hay 8 relojes por byte (I2C requiere un noveno reloj para el bit ACK / NAK) y el estado inactivo del reloj parece ser bajo, diría que es más probable que sea una interfaz SPI (o similar a SPI).

Sin embargo, no estoy seguro del ancho de reloj adicional en el primer bit de cada byte.


1
Por otro lado, ese pulso estrecho al final de la secuencia del reloj se parece mucho a NACK. Además, lo que parece inactivo bajo podría ser el estiramiento del reloj, que ya no está permitido por las especificaciones, pero podría ser utilizado por esclavos viejos. El estado inicial en las imágenes (1) y (2) es realmente alto
Maple

1
@Maple: veo tu pulso de datos estrecho, pero aún no puedo ver el pulso del noveno reloj. El patrón de datos es perfectamente consistente con ciertas configuraciones SPI de fase de reloj y polaridad de reloj.
Dave Tweed

1
Eso es cierto, de hecho estoy de acuerdo con usted en el reloj. Lo que es extraño para mí es el comportamiento inactivo incoherente SDI / SDO (sea lo que sea) al final de (1)
Maple

1
@Maple ¿No lanzaría I2C las líneas a inactivo alto?
Selvek

1
@Selvek Sí, y eso es exactamente lo que veo en la imagen (1) y el comienzo de la imagen (2). El resto, sin embargo, es más consistente con SPI, como señaló Dave. Bueno, aparte del sorprendente primer reloj que parece un bit de inicio. Hmm ... comience un poco ... podría ser esto ...
Maple

3

Lanzaré mi sombrero al ring ...

Si se trata de dispositivos antiguos, podría estar buscando alguna variante síncrona RS-232 de 7 bits "mínimo":

  • Ese pulso más largo al comienzo de cada cuadro podría ser un bit de inicio, y

  • La meseta en la señal del reloj al principio podría volver a 0 antes de pasar a la "marca" negativa. (No proporcionaste voltaje en las capturas de pantalla, así que supongo que aquí).


1
Oooh, esto es nuevo para mí. ¿Tiene algún reconocimiento? (No pude encontrar uno en mi breve búsqueda en Google). Si no, ¿hay algo más que explique el pulso corto en la línea de datos después del octavo clk?
Annie

1
No que yo sepa. Y, en cualquier caso, si se trata de una serie antigua, cualquier comunicación en otra dirección requeriría cables separados. Ese pulso es demasiado corto para ser algo significativo. Lo más probable es que el controlador se reinicie antes del próximo fotograma. Todo esto es adivinar, como dijiste tú mismo. A menos que OP proporcione más detalles sobre los dispositivos, esto es todo lo que podemos hacer.
Maple

@Maple, la comunicación es entre la llave de un automóvil y una herramienta que no se me permite decir, pero estoy tratando de hacer ingeniería inversa en ella.
Daniel

RS232 es un estándar para niveles eléctricos, no para codificar palabras de datos
Chris Stratton

@ChrisStratton ¿Dónde encontraste algo sobre la codificación en mi respuesta? Todo lo que digo es que si los niveles de voltaje corresponden a RS232 y las señales se parecen a la serie síncrona, lo más probable es que no sea I2C
Maple

-1

Según mi experiencia con I2C, puedo usar un dispositivo multímetro para verificar el reloj configurando el dispositivo para medir la frecuencia (en hercios), por lo que si lee un valor constante como 2k, entonces es el reloj I2C.


3
No, esa no es una conclusión válida en absoluto. Muchas cosas que no son I2C tienen relojes estables. De hecho, I2C no tiene un reloj estable, sino más bien uno de ráfagas. Si su medidor cuenta durante un período de tiempo, en realidad va a estar promediando el reloj activo con intervalos inactivos; necesitaría medir el recíproco del ancho de un pulso, idealmente en un alcance donde pueda estar seguro de que está midiendo realmente lo que se pretende. Por el contrario, algunos otros esquemas como I2S tienden a tener relojes que funcionan continuamente. Pero la frecuencia del reloj solo puede descartar algo, no
entrar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.