This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I am trying to use TH58BVG3S0HTAI0 (toshiba.semicon-storage.com/.../lookup.jsp;region=ncsa&lang=en_us?). This NAND uses same IO pins for addressing, data, and commands. I was reading the RM48 reference document, and I can't figure out how to communicate with the chip using EMIF. EMIF looks like it is expecting separate data and addressing pins.
Thank you.
Anthony,
I was thinking that I would have to be talking to the NAND by wrtiting to the pins directly. By your response, can I do the data transfer portion using EMIF (EMIF takes care of the data and RE/WE? Do I just write to EMIF memory location (for example, EMIF CS2 0x6000_0000) a block and then I wait for the busy pin to clear?
Thanks for the help!
Alex
Hi Alex,Yes, basically. I wasn't able to pull down the spec the other day.
But generally it'll be one or two addresses that you'll read and write from, and to send the NAND a command followed by data you'll just write the command and data to the flash. Or you might write a command followed by reads of data.
The 570 has a WAIT input and you could use this to hold off the access during a 'busy' but I would probably not recommend this unless you use it with DMA. Otherwise the CPU will slow down a lot.
Best Regards,Anthony
EDIT: I should clarify - it's probably just one address you'd read and write to / from as you suggest in your last post.
But if the NAND chip has some other 'mode' pin - then sometimes you might hook it up to an address line, so that reading from base + 0x00000 would make the mode pin go one way and base + 0x0001xx would make the mode pin go the other way. The addresses are bogus in the last example - you would need to look at your design to get the right address bit to flip as it will depend on which address line you connect to the NAND. But I'm not even sure your NAND has anything special like this so start out thinking just the way you were... it's probably correct.
I have ASIZE as 8bit in Halcogen. When I try writing to the EMIF location:
*(uint8 *)(0x60000000) = (uint8)0x90;
I was expecting to get 1 pulse, but I get 3 pulses on WE. I have the MPU setup in that EMIF address range as strongly ordered per errata.
Any ideas?
Thank you!
I stepped through the assembly. I can see it calling STRB, but stepping through that, it gives me 3 pulses on WE.