Programando una SRAM con Arduino

1

Actualmente estoy intentando probar algunos NVSRAMs antiguos para asegurarse de que funcionan antes de ponerlos en uso. Me gustaría probarlos de forma independiente y estoy pensando que un arduino podría hacer el truco. En teoría, ¿debería un arduino mega ser capaz de manejar esto?

PORTC = DQ0-DQ7
PORTA = A0-A7

            #define E           2
        #define G           3
        #define W           4



        void fillOne();


        void setup() {



          Serial.begin(9600);
          pinMode(E, OUTPUT);
          pinMode(G, OUTPUT);
          pinMode(W, OUTPUT);

          DDRA = B11111111; // sets port a to output
          DDRC = B11111111; // set port c to output

          digitalWrite(E, HIGH);
          digitalWrite(G, HIGH);
          digitalWrite(W, HIGH);

         }  



        void loop() {




        fillOne();

        }

        //Test One


        void fillOne()
        {
          int fail = 0;
          int address = 0;

          PORTC = B11111111; // Sets Dataline to one





           Serial.print("Test Start");
          for (address = 0; address < 256; address++)
          {
            PORTA = address;
            digitalWrite(W, LOW);
            digitalWrite(E, LOW);
            digitalWrite(W, HIGH);    
          }


          //Read Back and check for One

           // Sets Datalines to one

         digitalWrite(W, HIGH);
          digitalWrite(E, HIGH);

          PORTC = 0x00; 
          DDRC = 0x00;


        for(address = 0; address < 256; address++)
        {
          PORTA = address;

          digitalWrite(G, LOW);
          digitalWrite(E, LOW);

          if(PORTC != B11111111)
          fail ++;

          digitalWrite(G, HIGH);

        }

        if(fail > 0)
        { 
        Serial.print("FAIL");
        Serial.print(fail);

        while(1);
        }

        Serial.print("PASS");
         while(1);



        }

Actualización: Lo configuro para que solo use A0-A7 hasta que lo haga funcionar, luego lo expandiré a otros bits. También estoy programándolo solo con 1, por lo que es más fácil de depurar por ahora. No funciona del todo, creo que es el direccionamiento .. Tengo la dirección configurada en una INT y va de 0 a 256 ... Si envío la int a un PORT, debería enviar ese número en binario, ¿correcto?

    
pregunta hybridchem

2 respuestas

1

Sí, deberías poder hacer eso. La parte que está utilizando requiere 21 pines para direccionamiento, 8 pines para datos y un par de pines para habilitación de escritura, etc. El Arduino Mega tiene 54 pines IO digitales, por lo que deberías poder simplemente cablearlo y listo.

Cosas que debe verificar: revise los voltajes esperados de los pines en la SRAM para ver cómo definen los niveles lógicos altos / bajos y asegúrese de que corresponda a lo que su Arduino está enviando. En el peor de los casos, es posible que necesite un nivel de conversión entre. También es posible que necesites resistencias desplegables en los pines de la SRAM para asegurarte de que las cosas están a 0 cuando esperas que estén. Y revise la resistencia interna / consumo de corriente en el chip para asegurarse de que no intente hundir más corriente de lo que pueden entregar los pines IO digitales Arduino. De lo contrario podría dañar el Arduino.

    
respondido por el mindcrime
1

No hay razón por la que no funcionaría. Solo requiere un montón de alfileres. Dependiendo de la cantidad de pines de E / S que tenga su chip, es posible que tenga que usar expansores de puerto, registros de desplazamiento, pestillos / chanclas u otros componentes para obtener los pines suficientes. Un método común para interactuar con RAMs con buses de dirección amplios es usar pestillos de dirección para multiplexar las líneas de dirección de orden superior con las líneas de dirección de orden inferior.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas