SPI y un IC de memoria Flash, lo básico

En SPI , tengo algunas preguntas...

Entiendo cómo se sincronizan los bits, pero ¿cómo se delimitan los bytes?

¿El pin de selección de esclavo solo se requiere para convertir la salida de datos en alta impedancia? ¿O también se requiere para delimitar bytes/palabras?

Además: tengo la impresión de lo que he leído ( hoja de datos PIC16f74 ) es que SPI puede ser de 3 cables, y hay modos de direccionamiento que me confunden tanto que creo que fingiré que no lo leí por el momento.

Solo estoy conectando un PIC16F con una memoria flash de 8 bits Atmel AT45DB011D , así que nada más en las líneas SPI. También tiene comandos de varios bytes, entonces, ¿cómo los delimita?

SPI y el uso del chip flash son totalmente nuevos para mí, ¡cualquier guía de inicio rápido sería excelente!

Respuestas (1)

No existe el concepto de 'delimitación' de bytes en SPI. El simple hecho de que se hayan transmitido 8 bits constituye un byte, y el noveno bit sería el primer bit del siguiente byte.

En SPI, la recepción comienza cuando se baja la línea de selección de chip (o se sube para algunos chips). Luego, los datos se registran en un bit a la vez en un registro de desplazamiento. A medida que llega cada bit, el registro de desplazamiento baraja todos los bits uno hacia abajo.

Un chip SPI generalmente tiene un tamaño de registro de desplazamiento fijo y no está limitado por tamaños de bytes. Algunos tienen múltiplos de 8 bits, lo cual es bueno, algunos tienen 10 bits, algunos 17 bits, etc.

Si ingresa más de la cantidad requerida de bits, los primeros bits caen del final del registro de desplazamiento y se pierden, por lo que si tiene un registro de desplazamiento de 10 bits y solo puede enviar múltiplos de 8 bits (que es común con los chips PIC), entonces si envía el primer byte como 6 bits de 0 seguidos de 2 bits de datos, luego un segundo byte de 8 bits de datos, los primeros 6 bits se descartarán cuando caigan al final, y el registro de desplazamiento solo contendrá los últimos 10 bits.

Los modos de direccionamiento básicamente toman algunos bits adicionales en el flujo de datos SPI y los comparan con un conjunto de pines conectados en la parte superior o inferior del chip. Si coinciden, se debe actuar sobre los datos en el registro de desplazamiento. Si no lo hacen, debe desecharse.

Una cantidad de chips SPI incluyen una función de transferencia en la que puede encadenarlos y, a medida que los datos se registran en el primer chip, lo que está al final de su registro de desplazamiento, y normalmente se descartaría, se envía a un pin de salida. Esto puede ir a la entrada del siguiente chip, pasando así los datos de un chip a otro. En este caso, es fundamental asegurarse de que sus datos estén empaquetados en un solo flujo sin bits que normalmente descartaría (puede ser complicado si los chips no usan múltiplos de 8 bits).

La cantidad de 'cables' en SPI es, en el mejor de los casos, engañosa, ya que en realidad no indica cuántos cables reales se necesitan.

Normalmente tienes:

  • Reloj
  • Selección de fichas
  • Datos en
  • Salida de datos

Algunos chips pueden no tener una salida de datos y solo aceptan datos en ellos. Algunos combinan la entrada y la salida, por lo que debe dividirlos de alguna manera, ya sea en software si puede, o en hardware.

Si tiene datos tanto de entrada como de salida, entonces SPI puede funcionar en modo dúplex completo (pero no siempre lo hace), donde mientras ingresa datos en el registro de desplazamiento, los datos también se registran para que los lea. Esto no se usa con frecuencia, ya que la mayoría de los sistemas dependen de que se envíe un comando antes de que se produzca una respuesta. A veces hay otra línea para señalar cuando los datos terminaron de enviarse al dispositivo SPI y se debe enviar la respuesta. Sin embargo, ocurre con más frecuencia cuando se ha recibido un determinado número de bits o una determinada combinación de bits. Es común rellenar el inicio de una transmisión con 0 y luego indicar al dispositivo que comience a recibir con un bit de inicio.

Hay muchas maneras de hacerlo, y nadie parece hacer lo mismo que los demás, o incluso a veces como ellos mismos.

SPI define cómo se transfieren los datos, no cómo se forman los datos.