Electronic – SPI flash memory doesn’t work without huge delays

bit-bangdelayflashmsp430spi

For my graduation work I am developing a microcontroller system where the MCU (MSP430FR5739) talks to an SPI flash (SST25VF080B to be particular). I've achieved this without using the eUSCI SPI master (by bit-banging the thing) but no matter what, the flash always returns a 0x00 byte if I don't leave gigantic 2000-cycle delays between clock pulses.

On the datasheet it says that the flash could work at up to 80 MHz, and I've clocked the MSP430 at 24 MHz, so my thought process here is that it should be working without any delays at all.

My questions would be:

  1. The flash IC is on a daughterboard and is connected to the main
    board with approximately 2 inches of 22 AWG single core wire. I know
    that solid core wire is terrible for high frequency, but would
    replacing these help speed it up?
  2. If I most certainly have to have the delays, what else can I do to
    speed it up?

Best Answer

What concerns me is your disregard for EMC issues in your design when it uses 2" of 24AWG wire for signal wiring without mentioning any ground planes.

A systematic approach must be considered in communication of all signals to determine, which need shielding, common mode filter, ground plane, star ground, radial ground and impedance control on high speed signals.

Can you obtain some low capacitance FET probes or better yet, Tektronix differential FET Probes and scope the clock & data signals at both ends?

Also remember the specs only say 80MHz is MAX and THERE IS NO MIN. Also Maximum clock frequency for Read Instruction, 03H, is 33 MHz in the fine print for this 80MHz part. (darn those marketing guys)

THings to do to improve performance;

  1. Use AWG30 twisted pair 12 turns/ft for every signal to this chip where you need better shielding and less overshoot ripple.
  2. Have a dedicated regulator @ Vdd @ 3.6V for both IC's. Notice there is no spec for the 80MHz part yet the 66MHz part says VDD = 3.0 - 3.6 V, CL = 15 pF, so I would use Vmax=3.6 to get as much performance as possible. (darn those ambiguous specs)
  3. Verify all voltage levels, rise times and setup times.