Una forma de decodificar esto sería invertirlo y luego alimentarlo a una UART que esté configurada para 2,6 Mbps (un poco extremo, pero algunas UARTs pueden configurarse tan alto).
El flanco ascendente de cada pulso se convertiría en un flanco descendente -un bit de inicio- para la UART, y cada tipo de pulso produciría un patrón de datos único en el receptor de la UART: un "1" se convertiría en 0x80, un "0" se convertiría en 0xFE, y un "bit de inicio" se convertiría en 0x00 (y posiblemente causaría un error de "sobrecarga"). El firmware convertiría estos valores de bytes en bits y luego decodificaría el protocolo según corresponda.
Es posible que puedas configurar la UART a 1,3 Mbps y recibir dos de los pulsos de señal por byte - la decodificación se vuelve un poco más complicada, pero sólo tendrías que lidiar con la mitad de la tasa de interrupción.
- 0x00 → impulso de inicio
- 0x7F → 0 seguido de 0
- 0x0F → 0 seguido de 1
- 0x74 → 1 seguido de 0
- 0x04 → 1 seguido de 1
Un enfoque completamente diferente sería utilizar un par de multivibradores monoestables con disparo posterior . Uno se ajustaría a un periodo de aproximadamente 1,9 µs; crearía un borde de reloj en el centro de cada bit. El otro se ajustaría a un periodo de unos 5 µs; detectaría el pulso de "inicio".
Entonces conectarías estas señales a un puerto esclavo SPI de tu micro: la señal de datos original a MOSI, la señal de reloj a SCLK y la señal de inicio a SSEL. La interfaz SPI recogería 8 bits a la vez, y los entregaría al firmware a una velocidad de unos 32 kB/seg.