Estoy trabajando en un proyecto que involucra el sensor óptico de un mouse. Tengo el PCB de control original (todavía lleno, a excepción del sensor óptico en sí mismo), y tengo el sensor óptico en mi PCB personalizado, que se supone que está controlado por un nrf51822. He conectado los pines de reloj + datos (es una interfaz de dos hilos) a ambas placas, controlados por el tablero de control original (puse el reloj y los pines de datos como entradas sin resistencias de tracción).
Estoy intentando capturar el tráfico para determinar qué señales se están enviando, pero no estoy teniendo mucha suerte. Sospecho que mi velocidad de reloj es demasiado baja. Tan rápido como sea posible (justo dentro de un bucle while true
), estoy escaneando mi pin de reloj y mi pin de datos, luego los imprimo a la salida de mi consola sobre UART a 1M baudios. La ejecución de este bucle en blanco durante 5 segundos da como resultado ~ 4000 ciclos, lo que significa que obtengo > 1 ms de tiempo de ejecución para cada bucle, lo que creo que es mi principal problema.
Tal como está, capturo (en aproximadamente 700 exploraciones) 100 grupos de "reloj 1 y datos 1" y "reloj 0 y datos 0" alternos: cada grupo tiene 4-9 elementos (es decir, 4-9 " 1s "en ambos, seguido de 4-9" 0s "en ambos). Luego, alrededor de 400 exploraciones más tarde (~ 0.5 segundos) obtengo lo mismo, pero 54 grupos. En ese momento dejé de escanear.
¿Hay alguna manera de: A) ¿Acelerar mi ciclo de exploración para que pueda capturar el tráfico con mayor precisión? o B) ¿Decodificar lo que ya tengo (dudoso)?
¿Debo considerar una ruta alternativa? No he encontrado ningún acceso a un osciloscopio, lo cual es ... desafortunado.
Apreciaría cualquier consejo. Gracias.