Trouble reading a byte from external Flash via SPI
You don't show the erase function, but depending on which size of erase you send, it may take more than 2000ms to complete. Full chip erase can take 10 seconds. You should check the flash status register if it says it's busy or not. Therefore it may not be ready for the first read command. And you don't enable write latch before byte write, so it will not write anything. Even if it did, page write takes about 3ms, so it would not be immediately ready for another read. Please also note that your write function won't work, as the chip works in 256 byte pages, so you can write up to 256 bytes, and if a write gets split between two 256-byte pages, you need a wrapper to handle it. Reading works from any address with any amount of bytes.