¿Qué demora debe tener mi PSRAM en el "giro del bus"?

4

Tengo un PSRAM manejado por un STM32. Una de las opciones de temporización para el STM32 es el giro del bus FSMC_BusTurnAroundDuration . El ARM manual de referencia (consulte la página 1250) dice:

  

Estos bits están escritos por software para insertar el retardo de respuesta del bus   después de un acceso de lectura solo desde la memoria flash NOR multiplexada para evitar   contención del bus si el controlador necesita para conducir direcciones en el   databus para la próxima transacción en paralelo.

Ahora mi PSRAM no es NOR Flash y no multiplexa las líneas de datos y direcciones, por lo que asumí que FSMC_BusTurnAroundDuration es un "no importa" en mi caso. Sin embargo, cuando configuro

FSMC_BusTurnAroundDuration = 0;

entonces el ARM se bloquea. Cualquier valor entre 1 y 15 no bloquea el BRAZO.

¿Por qué la duración de la vuelta del autobús es relevante para mi PSRAM?

    
pregunta Randomblue

2 respuestas

3

Parece que no está vinculado al documento correcto, ya que su documento vinculado no tiene una página 1250. No obstante, puedo adivinar la naturaleza general de lo que está sucediendo. Generalmente, cuando se intenta leer un chip de memoria, el dispositivo que realiza la lectura mantendrá la solicitud de lectura activa durante todo un ciclo. El chip de memoria continuará emitiendo datos mientras su solicitud de lectura esté activa y durante un breve período de tiempo a partir de entonces. Si el siguiente ciclo de bus no es una lectura de ese chip de memoria, el chip de memoria puede continuar emitiendo datos durante parte del siguiente ciclo de bus. Esto puede causar contención en el bus, lo que resulta en un consumo de corriente excesivo, y también puede evitar que el dispositivo que debe conducir el bus lo haga con éxito. Se utilizan demoras de respuesta de varios tipos para permitir que un dispositivo que está conduciendo un autobús deje de hacerlo antes de que otro dispositivo comience a conducirlo.

No sé si el problema que está teniendo con demora cero se debe en particular al escenario de contención anterior, ya que muchos sistemas tienen una serie de situaciones en las que posiblemente podría producirse una contención. Sin embargo, el principio general es el mismo para muchos de ellos.

    
respondido por el supercat
0

Quizás FSMC_BusTurnAroundDuration = 1 es la latencia mínima para datos direccionables que no son de mux.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas