Go Down

Topic: Timing Issues when Interfacing with E28F800 Flash Chip (Read 286 times) previous topic - next topic

shadowpanda24

I'm trying to interface with an E28F800 via an Arduino Mega and am having trouble trying to program it. I'm successful in reading off the chip by toggling CE# & OE# while asserting an address, but I believe I am only able to do so because the chip is in "Read Array" mode by default. In order to program it, there's a two cycle bus operation that has to occur: first, a command needs to be issued to the CUI to switch an internal Write-State-Machine to 'Program' mode, after which the data needs to be pushed to the bus where it's latched on the rising edge of CE#/WE#. The timing restrictions for a Read appear to be less stringent which may be why I was successful in my Read attempts, but I'm having a lot of difficulty with Programming the device and I suspect it's due to timing. Here's a snippet of my code that reads the status register to observe whether the write was successful.

Code: [Select]
   
    //read status register
    PORTA = 0x00;
    PORTB = 0x00;
    PORTC &= B11100000; //drop chip enable
    PORTC &= B11000000; //drop output enable
    NOP;
    statusRegister = PORTL;
    PORTC |= B11100000; //pull up output enable
    PORTC |= B11110000; //pull up chip enable
    Serial.println("Status Register Output: " + String(statusRegister));
   
    DDRL = B11111111;
    delayMicroseconds(10);



Go Up