Estoy tratando de analizar el enlace en serie entre dos dispositivos, respectivamente una placa controladora de motor y un administrador de baterías Li-Po, cuya batería alimenta ambos dispositivos. La aplicación es una herramienta de jardinería que funciona con baterías.
Los dos dispositivos usan el mismo microcontrolador, un Holtek HT66F018, y usan lo que parecen ser pines GPIO para el enlace serial, ya que el microcontrolador no parece proporcionar ningún I2C o UART o cualquier otra interfaz serial dedicada. El enlace utiliza una conexión de colector abierto (o de drenaje abierto), con resistencias de pull-up externas y líneas separadas de Tx y Rx, en el mismo cable. Q1 y Q4 son 2N5551, no 2N3055, pero no tenía la pieza lista y puse un NPN similar. Q2 y Q3 no están marcados en el esquema.
EnelesquemauC_2estáelmicrocontroladordecontroldelmotor,yuC_1estámontadoenlaplacadeadministracióndelabatería.
Heintentadoleerlaseñalconunalcance,peroactualmentemecuestaidentificarelprotocolo.uC_1pareceactuarcomounmaestro,yaquesiempresetransmiteprimero,yluegouC_2(nosiempre)responde.Puededistinguirunodeotroporquearrastranlalíneaanivelesdiferentes:lomásprobableesqueuC_2tengaunaresistenciadelaseriede200ohmiosenelemisordeQ3.
Lafiguramuestraunejemplodeunintercambioentrelosdosdispositivos:elbusesnormalmentealto,lasecuenciaesiniciadaporuC_1conunpulsolargoybajoysigueconunasecuenciadepulsosconlarespuestadeuC_2.
Cosasquehenotado:
latasadebaudiospareceserdeaproximadamente3.2kbaud,aunquehayunacantidaddecentedejitter;
elprotocolonotieneunrelojseparado,peroseparecemuchoa
El de esta pregunta , donde se sugirió que la serie de pulsos se puede usar para sincronizar los dispositivos, o que el reloj pueda estar integrado en la secuencia de transmisión. -
Hasta ahora, excluyendo los bits de parada, no parece haber pulsos altos de más de un bit de longitud (también podría interpretarse como medio bit si se codificó en Manchester); sin embargo, hay pulsos bajos más largos, nunca más de dos bits seguidos, excepto por la secuencia de inicio.
-
Se espera que el administrador de baterías (uC_1) monitoree el voltaje y la temperatura de la batería, aunque los experimentos que hicimos para simular el voltaje y la temperatura variables de la batería son diferentes para interpretar: el mensaje parece variar en longitud, y parece que solo cambie significativamente cuando el voltaje de la batería sea extremadamente bajo.
Hay algunas consideraciones más, pero ya es bastante largo, me gustaría ver si alguien tiene algunos consejos sobre lo que puede ser la codificación.