Arduino Forum

Using Arduino => Project Guidance => Topic started by: shadowpanda24 on Jul 09, 2014, 08:06 pm

Title: Timing Issues when Interfacing with E28F800 Flash Chip
Post by: shadowpanda24 on Jul 09, 2014, 08:06 pm
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);