SPI Flash capacity and speed

You'll laugh, but I just found about SPI Flash and how cheap it is comparing to the microSD cards (if you need only about 10 Megabytes of data stored).
So please forgive my n00bness but I'm a little confused about capacity specs of flash. It seems to be specified in Megabits, not megabytes. I thought Megabits were reserved for measurement of speed not capacity? Will 128 Megabit flash give me 16 Megabytes of storage or am I confusing specs?
Should I worry about SPI Flash speed specs? i.e. will 108Mhz flash work with Arduinoish ATMega MCUs that runnin at 16 Mhz?

8 bits = 1 byte

bratan:
will 108Mhz flash work with Arduinoish ATMega MCUs that runnin at 16 Mhz?

Yes.

fungus:
8 bits = 1 byte

bratan:
will 108Mhz flash work with Arduinoish ATMega MCUs that runnin at 16 Mhz?

Yes.

Thanks! One more question, does Serial Flash IC (i.e. something like this) have speed comparable to regular SD Cards? I wanted to see if it's feasible to read WAV files from flash IC with WaveShield library...

Looks like an interesting chip.
Supports DC to 90-108MHz operation - best you can do with SPI is 8 MHz, about 1 byte transmitted per microsecond if you can do burst of SPI transfers with no looping.
(I posted code recently that sends out 41 bytes in ~46uS from an array, added 12uS to loop thru it).
Since you have to provide at least the starting address of the locations you want to read from & write to, vs a file name associated with an SD card file, I don't see how the waveshield library will help.

CrossRoads:
Looks like an interesting chip.
Supports DC to 90-108MHz operation - best you can do with SPI is 8 MHz, about 1 byte transmitted per microsecond if you can do burst of SPI transfers with no looping.
(I posted code recently that sends out 41 bytes in ~46uS from an array, added 12uS to loop thru it).
Since you have to provide at least the starting address of the locations you want to read from & write to, vs a file name associated with an SD card file, I don't see how the waveshield library will help.

Oh I didn't know about that :slight_smile: I wonder if it can formatted like SD card?

You probably want this part, instead of the other, which sells in qty = 1800.
http://www.digikey.com/product-detail/en/N25Q128A13ESE40E/557-1562-ND/3874288

108Mhz is the max clock speed, and they usually run at slower speeds. Also, notice these
are 3.3V parts, so you'll need level-shifters to interface with 5V Arduino. Most Flash chips
I've seen are 3.3V, and not 5V, devices.

Also, the reason they're spec'ed in Mbits instead of MBytes is because all serial memory
are usually spec'ed that way.

Also, Mbits isn't speed, Mbits/sec is speed. Don't know about formatting as SD.

oric_dan:
You probably want this part, instead of the other, which sells in qty = 1800.
http://www.digikey.com/product-detail/en/N25Q128A13ESE40E/557-1562-ND/3874288

Yes :slight_smile: oops

oric_dan:
108Mhz is the max clock speed, and they usually run at slower speeds. Also, notice these
are 3.3V parts, so you'll need level-shifters to interface with 5V Arduino. Most Flash chips
I've seen are 3.3V, and not 5V, devices.

Oh yeah I know that, it's same as SD card :slight_smile:

SD card have FAT (file allocation table) code written for Arduino to access them.
You can search the Library page and the Playground to see what's available for accessing serial memory chips.

To access SD cards with arduino you will be using SPI as well, so basically "what you can do with your sd card, you can do with your flash chip", the chip might be a bit faster because it has no FAT on it, so you have no overhead time ploughing through that.

I play WAV files from sd card, 8 bit mono @ 10 kHz, and it sounds good enough for what i need it for. To read from my flash chip you have to send a read command and 3 address bytes, so 4 bytes in total, and then you can read all bytes on the chip sequential, so it doesn't take up much processor time. I use the native atmega328 spi pins, as far as I know it's faster than software spi.

bratan:
So please forgive my n00bness but I'm a little confused about capacity specs of flash. It seems to be specified in Megabits, not megabytes. I thought Megabits were reserved for measurement of speed not capacity?

Memory chips can be specified as bits, bytes or whatever (many early DRAM chips where bit-wide so bits was natural).
Bytes is universal for packaged storage devices like discs, USB sticks, CDroms, because at that level no one is interested
in how the data is stored.

For comms bits or baud are mainly used for actual wire-protocols (like ethernet), but when talking about bus interfaces to mass-storage,
bytes tends to be more common (talking about disc write speeds, for example)

bratan:
Thanks! One more question, does Serial Flash IC (i.e. something like this) have speed comparable to regular SD Cards? I wanted to see if it's feasible to read WAV files from flash IC

Yes

bratan:
with WaveShield library...

That library probably won't help.