4 votos

¿Selección de dispositivo SPI Flash utilizando SCLK, MOSI así como SS?

En un sistema con N SPI dispositivos que normalmente tomaría N+3 pines en el maestro para comunicarse con todos ellos (NxSS, SCLK, MOSI, MISO). Con el N de ser grande y el dispositivo maestro (FPGA) es el pin limitado, estoy considerando los siguientes 2 técnicas para aumentar el número de posibles SPI dispositivos en el sistema; y quisiera saber si hay alguna (adicional) razones no debe ser utilizado ? (He enumerado las razones que puedo pensar en el final)


Técnica 1) el Uso de " K " SCLK líneas (y 'N' SS líneas) de manera efectiva ", seleccione" NxK dispositivos. Sólo 1 SCLK línea se activa en un momento.

  • U1: SCLK1 y SS1 (U2 seleccionado, pero no recibe ningún reloj)
  • U2: SCLK2 y SS1 (U1 seleccionado, pero no recibe ningún reloj)
  • U3: SCLK1 y SS2 (U4 seleccionado, pero no recibe ningún reloj)
  • U4: SCLK2 y SS2 (U3 seleccionado, pero no recibe ningún reloj)

schematic

simular este circuito – Esquema creado mediante CircuitLab

11 líneas (MISO, MOSI, 5xSS, 4xSCLK) podría operar una matriz de 4x5, de 20 de dispositivos).


Técnica 2) Multiplex MOSI, el uso de 'J' MOSI líneas de envío null comandos para todos los dispositivos, pero uno, esperando sólo el dispositivo de destino a la respuesta y a los demás a permanecer de alta impedancia en el MISO.

  • U1: MOSI1 y SS1 (U2 seleccionado, pero recibe null comando)
  • U2: MOSI2 y SS1 (U1 seleccionado, pero recibe null comando)
  • U3: MOSI1 y SS2 (U4 seleccionado, pero recibe null comando)
  • U4: MOSI2 y SS2 (U3 seleccionado, pero recibe null comando)

schematic

simular este circuito

De nuevo, 11 líneas podría operar una matriz de 4x5, de 20 de dispositivos.


El uso de ambos planes juntos, el 11 pines podría ser utilizado como 4xSS, 3xMOSI, 3xSCLK, 1xMISO, sumando un total de 36 combinaciones de forma exclusiva seleccionable dispositivos (prácticamente seleccionable). Con respecto a la de Atmel 25M01 serie de flash, no puedo encontrar ningún problema con el uso de los programas mencionados. (Yo no SPI maestro que hace esto; una implementación personalizada llevaría a cabo en una FPGA.)

Las preocupaciones que tengo en cuenta son:

  1. Un pulso en la SS y no proporcionar un reloj puede poner un dispositivo esclavo en un estado desconocido, especialmente si no hay actividad en MOSI (lo dudo; todos de la "actividad" se recibe a través de SCLK bordes. El Atmel documentación indica que el SPI esquema de comunicación es "reinicializar" después de cada SS ciclo)
  2. Un nivel activo en la SS ya podrían poner un chip de MISO en el modo de unidad (Como el Atmel AT25M01 serie de flash, creo que la mayoría de los chips de esperar un comando antes de salir de alta impedancia?).
  3. El envío de un comando NULL, todavía podría invocar una respuesta; de hecho no hay una definición de un "Null" de comandos, sólo el concepto de un "no válido" comando. (Atmel estados de documentación no va a responder a un comando no válido y permanecer en alta impedancia)
  4. El diseño de un día podrían ser cambiado y una diferente SPI se añade un dispositivo. No la mayoría de la Flash SPI dispositivos de abordar las inquietudes anteriores, o solo estoy de suerte con el 25M01?
  5. Algunos dispositivos, tales como la Máxima MAX1242 ADC tomar acción inmediata debido únicamente a la SS activo borde; el ADC inicia una conversión en el alto→baja de transición.
  6. Edit: Una preocupación que no pensar es fan-out. (como se mencionó en la respuesta, yo pensaba que se lo merecía mencionar aquí)

3voto

Kimball Robinson Puntos 161

Yo creo que tu solución es probable que el trabajo, dentro de algunas limitaciones. La más obvia es "todos los SPI esclavos deberán exhibir precisamente el mismo bus comportamiento como un Atmel 25M01". También, yo ahora prefiero técnica 1. Algunas respuestas específicas:

  1. Un PGE en un /CS línea debe siempre causa incompleta de autobuses de transacción para terminar de manera inmediata, por lo que incluso si no es el raro falsos reloj generado en los dispositivos seleccionados que no son el objetivo actual que se borran en la operación normal. Del mismo modo, un /CS ventana que no encierre todas las transiciones en SCLK no debería comenzar a cualquiera de las líneas de transacciones.
  2. Esto es más de un problema. Usted necesita estar seguro de que esto no ocurra y, como se señaló, tendrá que ser claro para fines de mantenimiento que cualquier nuevo SPI dispositivos no conducir activamente el MISO línea hasta que reciben una "lectura" de comandos. Usted puede ser que desee considerar fan-out, también; yo sé de alta impedancia salidas no representan gran parte de la carga, pero el 19 de ellos vale la pena prestar atención.
  3. Si no utiliza la técnica de 2, entonces esto no importa...
  4. SPI dispositivos de memoria, especialmente las más grandes, cada vez más, la reunión de JEDEC estándares para las comunicaciones comportamiento. Si usted elija los dispositivos que se JEDEC-compatible entonces usted no debería tener problemas de interoperabilidad, al menos hasta que las normas cambian.
  5. Es cierto, pero muchos SPI ADC, en realidad, de utilizar el SPI del reloj para ejecutar el ADC de aproximaciones sucesivas de la máquina de estado. No hay ciclos de reloj, no hay salida. Dicho esto, que puede conducir el autobús de inmediato. De regreso a mi punto original: establecer un estándar, y requieren que los dispositivos esclavos que no cumplen con la norma no están conectados al bus matrix.

1voto

Alex Andronov Puntos 178

Algunos de los dispositivos de flotación de su línea de salida hasta que reciben una "lectura" de comandos, mientras que otros la unidad tan pronto como sean seleccionados. Si está utilizando dispositivos que se moverán de su salida hasta que se recibe un comando, y que cuando se selecciona sentarse perfectamente feliz sin la conducción de su salida, si reciben una secuencia de 00 o FF bytes después de ser seleccionado, y si no te importa el uso de software de bit bang rutinas, usted podría ser capaz de conectar los dispositivos como un "cubo", con CS cables, CLK cables, y MOSI cables, siendo los planos, filas y columnas; la capacitancia en el MISO puede ser un problema, sin embargo.

Para el control de 64 dispositivos, yo podría estar inclinado a usar dos 74HC138 (http://www.ti.com/lit/ds/symlink/sn74hc138.pdf) fichas: uno para el control de CS y uno para el control de reloj; el uso de un 74HC151 (http://www.ti.com/lit/ds/symlink/sn74hc151.pdf) para multiplex de MISO (que conecta las fichas en grupos de ocho, control de reloj y el MISO juntos).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X