parallel flash memory DIP32

#1
I was wanting to use a parallel flash memory chip with the picaxe 18X output pins connected to the address of the memory and be able to read the parallel output data directly from the memory data pins.
eg. If I had the letters of the alphabet stored in the memory at the first 26 locations as 8 bit ascii, could I for example by using the let pins = %xxxxxxxx command change the address on the memory and the corresponding character would appear on the data pins. Or do I also need to raise and lower the CE, OE or WE as a read cycle. The datasheet says the flash can be read like an eprom if CEand OE is low and WE is High the data for the address is output to the data pins. But it also says that addresses are latched on falling edge of CE or WE and data is Latched on rising edge of WE or CE. Is this only for commands and will array data read out continuously if CE WE OE are held in the appropriate state continuously while the address pins change as the picaxe sends new codes. I was wanting to use all the output pins of the picaxe as out to the memory address pins so no more pins left for the control if needed ??. The memory chip I was looking at is the Am29F010B by AMD Spansion, I think the Atmel Flash are similar ??. The same query goes for writing data to the memory, can I hold the control pins in the appropriate state and clock up through the addresses and as each address is set will the data I present to the data pins be stored in flash or do I need to raise and lower the control pins to create a write cycle for each address. I have a few of the memory chips, I don't mind blowing one to try it out but would be grateful someone could enlighten me or give me some confirmation on the way to go.......
 

hippy

Technical Support
Staff member
#2
The Am29F010B looks interesting, and quite complicated - <A href='http://www.spansion.com/datasheets/am29f010b_00_c7.pdf' Target=_Blank>External Web Link</a>

I've never used one but it appears it can function in a number of modes, although I get the impression that 'array read' is the same as what would be a normal set-address-read-data operation rather than an auto-increment of address mode.

Apart from the clever tricks, it looks to me to behave just like any other SRAM / EPROM for reading so you'll have to adjust the address and waggle the control lines, although it should be possible to tie OE# and CS# low, WR# high, and as the address changes the data for that address should appear on the data bus. You'd still need an external counter to cycle through the addresses though.

For an 18X I expect I2C Eeprom would be far easier and convenient.
 
#3
&quot; although it should be possible to tie OE# and CS# low, WR# high, and as the address changes the data for that address should appear on the data bus. You'd still need an external counter to cycle through the addresses though. &quot;

That sounds exactly what I want. So if I had a external counter &quot;whizzing&quot; up or down changing the address lines the data out for the addresses would follow it without the control lines changing ie tie them CE and OE low also WE high.
Instead of an external counter I was going to use the outputs of 18X and under program control jump to a specific address and/or scan sequentially over part of it.

I assume the Write would work the same. But I think I cannot write the same location twice to change existing data ?? I have to erase a sector or the whole chip and program all again. ???? This would not be a problem as the data once saved would be static and only read over and over again as the 18X program runs.
Thanks for your help, it give me more confidence to try things....
 

hippy

Technical Support
Staff member
#4
<i>So if I had a external counter &quot;whizzing&quot; up or down changing the address lines the data out for the addresses would follow it without the control lines changing ie tie them CE and OE low also WE high. </i>

That's the way most SRAM / EPROM works ( the address latch being pass-through when low, and latching on the rising edge ) and I cannot see this being any different.

<i>Instead of an external counter I was going to use the outputs of 18X and under program control jump to a specific address and/or scan sequentially over part of it. </i>

You've still got 17 address lines to control, and I don't see how you can avoid having a counter or address latches of some sort.
 
Top