SPI: Recepción de bytes desde el esclavo

1

Durante un par de días he estado aprendiendo sobre SPI y decidí probarlo con 2 dispositivos pequeños.

  • DISPOSITIVO 1: Atmega328p (MASTER)
  • DISPOSITIVO 2: MFRC522 (SLAVE)

Por lo que yo entiendo:

  • maestro establece SS pin bajo
  • el maestro mueve los datos a SPDR
  • tan pronto como los datos ingresan al SPDR, el reloj comienza a transmitirse y los datos se desplazan
  • al mismo tiempo, SLAVE desplaza los datos también
  • así que al final de 8 pulsos de reloj, ESCLAVO recibió 1 byte y el maestro recibió 1 byte también
  • El pin SS vuelve a subir

Escenario # 1

Estoy enviando el byte de dirección a MFRC522 desde Atmega328p, y estoy esperando una respuesta. Según la documentación, la primera respuesta de SLAVE es "X", la tomo como 0x00.

En el siguiente byte enviado a ESCLAVO, recibo la respuesta del primer byte que envié, y así sucesivamente hasta el final.

Dado que tiene algún tipo de desplazamiento, ¿necesitaría enviar 0x00 al esclavo para leer el último byte de información?

    
pregunta Anton Stafeyev

1 respuesta

2

La Tabla 6 en la página 11 de la hoja de datos es bastante explícita:

Sí, para recibir el octeto de datos Nth, debe transmitir 00 en la (n + 1) transferencia.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas