netduino SPI detiene el reloj después de escribir en WriteRead ()

0

Tengo un problema donde el bus SPI en mi netduino detiene el generador de reloj SCK después de que la escritura se haya completado en un método WriteRead (). Debido a esto, el dispositivo (un Microchips 25LC320 EEPROM no envía ningún dato). Cualquier ayuda sobre por qué sucede esto sería muy apreciada.

Código fuente:

SPI.Configuration config = new SPI.Configuration(Pins.GPIO_PIN_D10, false, 1, 1, false, false, 1000, SPI.SPI_module.SPI1);
SPI bus = new SPI(config);

byte[] write = new byte[] { 5 };
byte[] read = new byte[1];

spi.WriteRead(write, read);

Esquema:

simular este circuito : esquema creado usando CircuitLab

Captura de Saleae:

    
pregunta Inari

1 respuesta

2

Con una interfaz SPI, necesita hacer escrituras "ficticias" para proporcionar los ciclos de reloj necesarios para recuperar los datos de la mayoría de los dispositivos. Intenta algo como esto:

byte[] write = new byte[] { 5, 0, 0 };
byte[] read = new byte[3];

spi.WriteRead(write, read);

Después de que esto se ejecute, debe tener un byte "basura" en read[0] (esto fue la información en MISO durante los primeros 8 relojes) y luego dos bytes de la memoria en read[1] y read[2] . p>     

respondido por el Dave Tweed

Lea otras preguntas en las etiquetas