Hi,
The only thing I can conclude is that the ezport MCU is not driving MISO like it should...
It seems some possibilities are:
1. disconnected or misconnected pin
2. the ezport MCU has subsequently been reset, and is now out of ezport mode
- either the rsti* pin was asserted when rcon* was not low, or
- someone sent an ezport reset command (0xb9) when rcon* was not low
- the ezport MCU executed a low voltage reset
3. you are sending the ezport command too soon after reset, and the ezport MCU is ignoring you
As for #3, I use a 1ms delay after the initial reset with rcon* low and that succeeds; however, with a 250us delay, the command fails, so some delay is definitely needed.
Also, you have to hold rcon* low until after the reset is complete... Are you sure you're doing that? I have attached a picture of my reset sequence (reset is the 5th signal, starting from the bottom -- all other signals are like the last time).
Now with all that said, if you don't issue the write enable command *before* the read status, then you *should* read back 0 status, right???
10 dim nrsti as pin scl for digital output
20 dim cmd as byte, status as byte
30 rem pulse rsti* low with rcon* low
40 configure qspi for 0 csiv
50 let nrsti = 0
60 let nrsti = 1
70 sleep 1 ms
80 configure qspi for 1 csiv
90 rem send write enable command
100 let cmd = 0x6
110 qspi cmd
120 rem send read status register command
130 let cmd = 0x5, status = 0
140 qspi cmd, status
150 print hex status
In that program scl on the master is tied to rsti* on the slave, and qspi_cs0 on the master is tied to rcon* on the slave.
At line 40, I set the "inactive" chip select state to 0, pulling rcon* low. I then pulse the rsti* line low and delay 1ms. Only *after* the 1ms delay do I bring rcon* back high at line 80 (doing so immediately will make it be not recognized by the slave). Then, at line 110 I send the write enable command, and at line 140 I send the read status command.
The critical things I have noticed are:
1. the delay between reset and allowing rcon* to come high again (see attached timing diagram -- the pins from top to bottom are unused, unused, unused, rsti*, mosi, miso, clk, cs*) must be on the order of a millisecond.
2. if you don't issue a write enable command, you *should* read back a status register of 0.
Let me know what you find... I think the fact that the ezport MCU is not actively driving MISO means either you are not really in ezport mode (despite it seeming a flash erase command works) or were in it and somehow left again (maybe even a low voltage reset???).
-- Rich