I'm messing with a Hynix NAND Flash chip -this one's 512MiB and is used in some USB pen drives. I have it hooked up to a spare uC evaluation board with lots of I/O and I'm bit-bashing it to test it. It's an 8 bit wide serial interface - quite easy to use - but it's not behaving quite how I'd expect.
I've written routines to erase, write and read. As a test, my write function decrements the data value with each byte. It seems as if 0xFF is not writing. When I read back a page it seems to skip 0xFF - for example, 0x02, 0x01, 0x00, 0xFE, 0xFD etc. with no 0xFF apparent. I'm confused - the test code is all in assembler and quite straightforward. The page write function shifts in up to 2112 bytes at a time and writes them automatically.
I know that Flash erases to 0xFF so this value wouldn't actually *write* in the physical sense, but I'd certainly expect it to increment the address and read back correctly.
I know there's not much information here, but it seems like it may be a gotcha which one of you has previously encountered...