SPI y una memoria Flash IC, lo básico

4

En SPI , tengo algunas preguntas ...

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

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

También: tengo la impresión de lo que he leído ( PIC16f74 datasheet ) es SPI puede ser de 3 hilos, y hay modos de direccionamiento que me confunden tanto, ¡creo que pretenderé que no leí por el momento!

Estoy interconectando un PIC16F con memoria flash de 8 bits Atmel AT45DB011D , así que nada más en las líneas SPI. También tiene comandos de múltiples 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 genial!

    
pregunta CL22

1 respuesta

7

No hay 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.

La recepción de SPI comienza cuando la línea de selección de chip se baja (o se eleva para algunos chips). Los datos luego se sincronizan 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 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 que es bueno, algunos tienen 10 bits, algunos 17 bits, etc.

Si registra en más del número requerido de bits, los primeros bits desaparecen al 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 por 2 bits de datos, entonces un segundo byte de 8 bits de datos, los primeros 6 bits se descartarán a medida que estos caigan al final, y el registro de desplazamiento solo contendrá los últimos 10 bits.

Los modos de direccionamiento consisten básicamente en tomar unos pocos bits adicionales en el flujo de datos SPI y compararlos con un conjunto de pines atados arriba o abajo en el chip. Si coinciden, se debe actuar sobre los datos en el registro de desplazamiento. Si no lo hacen, entonces debería ser descartado.

Un número de chips SPI incluye una función de paso a través donde puede encadenarlos y, a medida que los datos se sincronizan en el primer chip, lo que se encuentra al final de su registro de desplazamiento, y normalmente se descartaría, se envía a una pin de salida. Esto puede luego ir a la entrada del siguiente chip y pasar los datos de un chip a otro. En este caso, es fundamental asegurarse de que sus datos estén empaquetados en una sola secuencia 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 realmente no te dice cuántos cables reales se necesitan.

Normalmente tienes:

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

Es posible que algunos chips no tengan una salida de datos y solo aceptan datos en ellos. Algunos combinan la entrada y la salida juntos, por lo que tiene que separarlos de alguna manera, ya sea en software si es posible o en hardware.

Si tiene tanto entrada como salida de datos, SPI puede trabajar en modo dúplex completo (pero no siempre) donde, a medida que registra los datos en el registro de desplazamiento, los datos también se sincronizan. fuera para que usted lea. Esto no se usa a menudo, ya que la mayoría de los sistemas dependen de un comando que se envía antes de que se produzca una respuesta. A veces hay otra línea para indicar cuando los datos han terminado de enviarse al dispositivo SPI y se debe enviar la respuesta. Sin embargo, más a menudo, ocurre cuando se ha recibido un cierto número de bits, o una cierta combinación de bits. Es común rellenar el inicio de una transmisión con 0 y luego enviar una señal al dispositivo para que comience a recibir con un bit de inicio.

Hay muchas maneras de hacerlo, y nadie parece hacer lo mismo que los demás, ni siquiera a veces.

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

    
respondido por el Majenko

Lea otras preguntas en las etiquetas