PSRAM: primera operación falsa, operaciones posteriores bien

3

Tengo un PSRAM manejado por un STM32F2 en el modo predeterminado asíncrono El PSRAM funciona bien excepto para la primera operación de lectura o escritura.

Después de la primera operación de lectura o escritura (que produce resultados de error), todas las operaciones de lectura / escritura se comportan como se espera. La dirección de la primera operación de lectura o escritura no cambia las cosas.

He intentado insertar un retraso de un segundo entre la inicialización de SRAM y la primera operación de lectura o escritura, pero eso no ayudó.

¿Qué podría estar causando este problema?

    
pregunta Randomblue

3 respuestas

3

Al trabajar con chips externos, he visto este problema anteriormente debido al estado de E / S predeterminado del microcontrolador. Por ejemplo, el microcontrolador X se inicia con todas las E / S en un estado de entrada de alta Z. Luego mi código pasa, secuencialmente, con la rutina de inicialización y hace algo como deshabilitar el pull-up, luego cambiar el pin de E / S a una salida, luego establecer el estado predeterminado (nominal) del pin (este no es el Algoritmo recomendado, pero sígueme aquí). Lo que le hace a cualquier parte conectada al chip es posiblemente un bit de datos del reloj 1 (o más) en el chip debido a la alta procesión de I / O de > low > high. Esto puede abarcar desde ser completamente inocuo hasta corromper su primera transacción (ya que el chip se queda con 1/8 de una instrucción). Por lo general, el chip se limpia solo después de su primera lectura / escritura porque la máquina de estado interna puede aclarar las cosas una vez que levante su CE# pin high y pueda seguir leyendo / escribiendo con facilidad. Me gustaría ver esos pines y ver lo que sus chips realmente están viendo en el arranque. Sospecho que encontrará que funciona " perfectamente " en función de las entradas que recibe. Si encuentra que este es el problema, puede forzar los estados de arranque en pines críticos mediante el uso de resistencias de subida / bajada para asegurarse de que esto no suceda. El firmware bien escrito (en la rutina de inicialización de su periférico) debería hacer que el IC se encuentre en un estado sólido y conocido.

    
respondido por el Joel B
1

Esta es una opción de medio a largo, pero tuve un problema similar ... hace 12 años. Pero era un procesador ST, entonces, ¿por qué no?

Había programado incorrectamente los registros de tiempo (entendí mal la hoja de datos) y, como resultado, tuve uno de los tiempos de pulso de escritura establecidos más largo que el tiempo completo para el ciclo de escritura, algo así; No recuerdo los registros exactos. En lugar de empujar los tiempos de escritura a la configuración más larga, en lugar de soltó la parte donde la línea se puso alta. En efecto, en el ámbito, la línea en cuestión estaba baja, y se elevaría durante alguna otra parte del ciclo de escritura, y cuando volviera baja, la escritura se produciría. Como recuerdo, ni siquiera era tan obvio cuando se observaba el alcance. Pero sí recuerdo ese comportamiento en el que la mayoría de las escrituras funcionaría, pero eliminaría la primera. Y como dices, ralentizar las cosas no ayudó.

    
respondido por el gbarry
1

Las especificaciones de inicialización de encendido son T PU > = 150uS, después de Vcc > = 1.7V

  1. VCC y VCCQ deben aplicarse simultáneamente.
  2. Durante el período de inicialización, CE # debe permanecer ALTO.
  3. Cuando se completa la inicialización, el dispositivo está listo para el funcionamiento normal.

¿Confirmaste esto?

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas