Memoria de lectura SPI sobre SPI con Bus Pirate

4

Estoy tratando de aprender sobre SPI y tengo un auricular Bluetooth viejo con puntos de soldadura SPI. Ya he soldado los pines {MISO, MOSI, CS, CLK} correspondientes y los he conectado correctamente al Bus Pirate. El chip del auricular es un CSR-31315 (9A11U-717AT) que he encontrado a PDF para (SPI en la página 74).

El PDF dice que para realizar una operación de lectura todo lo que debe suceder es que la CS deba pasar de alta a baja, luego se debe enviar un comando de lectura de 8 bits de 0b00000011, luego la dirección de 16 bits para leer las necesidades para ser enviado. Después de eso, emitirá en MISO una palabra de verificación compuesta por {comando, dirección [15: 8]} (¿para qué sirve [15: 8]?) Y, finalmente, el contenido de la dirección. Luego, vuelva a tomar CS high nuevamente para que no continúe imprimiendo la dirección + 1 en MISO.

El comando que estoy enviando a mi Bus Pirate es [ 0b11 0x00 0x00 r:16 r:16 ] , que creo que debería tomar CS de alto a bajo (ralentí alto), muestra el comando de lectura en 0b00000011, escribe la dirección de 16 bits de 0x00 0x00, lea la palabra clave de 16 bits, lea los datos de la dirección de 16 bits y, finalmente, vuelva a tomar el nivel alto de CS. Creo que debería funcionar pero no funciona.

    
pregunta Kevin Reid

1 respuesta

5

El comando 'r' para el pirata de bus lee un solo byte, por lo que r: 16 está intentando leer 16 bytes, no 16 bits. Supongo que quieres "r: 2 r: 2" (o simplemente "r: 4")

Pero, dudo que ese sea el problema. Si hubiera funcionado, habrías visto los 4 bytes y luego algunos FFs.

Creo que es más probable que su chip no esté listo para aceptar comandos sobre SPI.

Hace algunos años trabajé con CSR BC04. Se pueden configurar para aceptar comandos a través de UART, SPI o USB. Es posible que el tuyo no acepte comandos sobre SPI. Arreglar esto puede implicar volver a grabar el firmware.

Podrías darle una oportunidad al sniffer SPI de Bus Pirate y ver si puedes interceptar algunas señales de apariencia válida cuando tu dispositivo está funcionando normalmente. Eso daría cierta confianza de que realmente está usando SPI. Otra forma de hacer esto sería usar un osciloscopio de 2 canales, activar el CS y buscar el tictac del reloj SPI mientras el CS está activado.

Para ser honesto, si solo está tratando de que SPI opere en el Bus Pirate, elija algo más fácil. El primer dispositivo en el que utilicé el mío fue una matriz de LED RGB de Sparkfun .

    
respondido por el Toby Jaffey

Lea otras preguntas en las etiquetas