Hello, I’ve found a bunch of articles and topic related to this topic. However, none of them seems to be clear enough for initial curve learning.
I just routed an Arduino Due to a Parallel BGA flash pins in other to dump its contents. To be clear, it is just to understand its working principle for a future project.
I’ve read the datasheet, but isn’t clear though.
Please, can someone help me with that. Trial and error methodology is taking to long since Arduino Due upload is lazy.
MT28F320J3
Attached the datasheet. Please, really need some help!
ah. Reading the chip-id is likely to be significantly more difficult.
The way these chips tend to work is that they'll sit there pretending to be an ordinary ROM - set of the address, send CS and RD, get your data.
Accessing additional function, like erasing, or reading the chip-id, requires that you somehow shift it into special modes where you're accessing control registers instead of the memory array...
(do you get reasonable results if you just try to read the memory?)
The point is that I have no clue if the results are correct. I was hopping chip ID may point some code bug.
Otherwise, it will just be random bits throwing through serial. Any other suggestion?
Sorry; I lack any knowledge at that level of detail.
It looks like the special functions are invoked by first doing a "write" cycle to set up the function.
I'd modify your code to have primitives "int readCycle(address);" and "void writeCycle(address, val);", and the "readid" would become something like:
int readID() {
writeCycle(CMD_ADDRESS, READIDSPACE_CMD);
int i = readCycle(ID_ADDRESS);
writeCycle(CMD_ADDRESS, NORMALMODE_CMD);
}
But I don't have any advice on the low-level details, like which bits should be written in which order, nor even a flash chip to try Trial and Error.