Cómo descubrir el protocolo de inicialización que se está implementando
La comunicación es entre un dispositivo, que no puedo decir (pero lo llamaré DeviceX) y la llave de un auto. No sé qué protocolo utiliza, sin embargo, creo que el protocolo es un tipo de I2C modificado. A continuación hice un esquema de la interconexión eléctrica:
Como muestran los esquemas, puse un diodo en el fondo de la ruta de la clave, de esta manera puedo ver, por las formas de onda, quién controla la línea. A continuación se presentan las formas de onda. Azul es SCL, y Rojo es SDA.
Puedoverque,cuandolalíneaalcanzaunvoltajecero,significaqueelDeviceXloestáponiendoatierra,ycuandono,laClaveestácontrolandolalínea.Enunaimplementaciónanterior,emulounaclavequepodríaverificarquecuandocolocoelSCL,despuésdeuntiempo,elDeviceXcoloquelalíneaSDAabajo.LateclacontrolaSCLySDAparalaprimeracomunicación.
Entonces,comencémipropiaimplementaciónparaemularDeviceX.Hicelossiguientespasos:
- SDA=salida
- SDA=0
- SCL=input
- energizarlaclave
- Espera500us
- SDA=entrada
- EsperequelateclapongaelSCLbajo
Acontinuaciónsemuestranelesquemaylaformadeondaqueobtuve.SCLesazul,SDAesrojo.
Intenté cambiar los pasos anteriores, pero nada hizo que la clave bajara el SCL. Lo único que noté fue que si la línea SDA comienza alta como SCL, tan pronto como se energiza la Tecla, la tecla no establece el SDA hacia abajo (pulso inverso).
¿Alguien tiene una sugerencia?