Selección de chip SPI - datos + tolerancia de retardo de reloj

1

Sé que esto depende probablemente de los chips y dispositivos específicos que se usen, pero solo estoy buscando números estimados de juego.

Estoy considerando usar el protocolo spi para un proyecto, y parece que no puedo encontrar ningún buen diagrama de tiempo, en la tolerancia de tiempo de la afirmación de la selección de chip hasta que los datos deben ser empujados en la línea de datos.

Me encantaría que me mostraran diagramas de este tipo para diferentes dispositivos, y lo que parecen ser 'valores estándar', suponiendo que eso es una cosa.

Este es un proyecto de aprendizaje, la electrónica no es mi campo principal.

    
pregunta Skeen

2 respuestas

2

Va por el camino opuesto: el retraso no debe ser más corto que un cierto valor, generalmente un par de cientos de ns. Además, es la demora entre la afirmación de CS y el primer borde de la señal de reloj. No tiene nada que ver con la línea de datos en absoluto.

Tenga en cuenta que este "retraso" siempre puede ser infinito. Si solo tiene un dispositivo esclavo, por lo general puede mantener la CS activada permanentemente, a menos que no haya otra manera de recuperar el inevitable deslizamiento del reloj que el CS en ciclo (piense en la interferencia).

La pregunta es, entonces: ¿estás tratando de diseñar un esclavo SPI, un maestro SPI o un sistema que tenga ambos? Si controla el maestro, siempre puede garantizar un retraso suficiente entre CS y SCLK, es cuestión de programarlo correctamente.

Ya que su intención es cambiar las señales CS manualmente, debe rebotarlas. A continuación se muestra una sencilla push to togle :

simular este circuito : esquema creado usando CircuitLab

Necesitarías una forma de restablecer todas las demás selecciones de chips cuando cualquiera de ellas esté activada.

    
respondido por el Kuba Ober
4

En realidad, el tiempo CS no es muy importante: normalmente se afirma la línea CS (baja) al comienzo de un montón de transferencias, y luego se anula la afirmación (se pone alta) al final. Lo que es más importante es la relación entre el reloj (SCK) y los datos (SI / SO).

Aquí hay un diagrama de tiempo típico para un periférico SPI, en este caso un 2AA1024 1 Mbit EEPROM serial .

Enestecaso,eltiempoesparaescribirunbyteenlaEEPROM.

Comopuedever,laseleccióndechipseponeenbajaalcomienzodelatransferenciade8bitsysedejaallí.(Engeneral,sepuededejarbajoentantosbytescomoseanecesarioparaleer).

Losnúmerosserefierenalasespecificacionesdetiempo,generalmenteaunvoltajeespecífico.Elegíelmáslento,queespara1.8v.

2CSsetup250ns3CSholdtime500ns4CSdisabletime50ns5Datasetuptime50ns6Dataholdtime100ns9Clockhightime250ns10Clocklowtime250ns

Lavelocidades2MHz,ounperíododerelojalto/bajode250nscadauno(horaaltadelreloj,9yhorabajadelreloj,10).

Porlotanto,laseleccióndechipdebeconfirmarse250nsantesdelprimerimpulsoderelojascendente(configuraciónCS,2),peroobviamenteesoesmuycortosisemanejadesdeunasalidademicrocontrolador.

Losdatosdebenestarpresentes50nsantesdelflancoascendentedelreloj(Configuracióndedatos,5),ydebenpermanecerválidoshasta100nsdespués(Retencióndedatos,6);EstogeneralmenteserámanejadoautomáticamenteporelperiféricoSPI,ysoloseríaimportantesilainterfazestásiendo"modificada".

Se debe tener en cuenta que este diagrama asume que la sincronización de los datos se realiza en el flanco ascendente del reloj. Las interfaces SPI también se pueden configurar para sincronizar el reloj.

Al final de la transferencia, la línea CS debe mantenerse baja durante 500 ns (CS Hold time, 3) después de la última transición de reloj, antes de ser elevada; y debe permanecer alto durante 50 ns (Deshabilitación de CS, 4) antes de que pueda volver a activarse.

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas