I am very much new to Electronics. I recently bought a Flash memory of 4mbit size. The interface is parallel type. The link to the memory is http://www.mouser.com/Search/ProductDetail.aspx?R=SST39SF040-70-4C-PHEvirtualkey57940000virtualkey804-39SF0407CPHE. I want to know if I can program this flash memory using Arduino Uno. I am guessing that this memory type is not serial so I cannot use the usual protocols (like SPI, I2C etc) to program the memory. But given the limited number of pins in Arduino UNO, would I still be able to program the flash?


  • \$\begingroup\$ In case you haven't found it, the actual datasheet is here: ww1.microchip.com/downloads/en/DeviceDoc/25022A.pdf \$\endgroup\$ – vicatcu Aug 25 '15 at 0:54
  • \$\begingroup\$ Yes, but since I am new to electronics, I am not able to fully understand if it can be programmed using arduino uno. \$\endgroup\$ – pokiman Aug 25 '15 at 0:56
  • \$\begingroup\$ Need 27 pins to read/write the flash memory, for simpler solutions, you need a microcontroller that has more I/O pins \$\endgroup\$ – Oka Aug 25 '15 at 1:12
  • 1
    \$\begingroup\$ My gut reaction is this will be too complex for you (e.g. the statement "I am guessing that this memory type is not serial" does not inspire confidence). You might want to start with an easier project before you jump into something with this steep a learning curve. \$\endgroup\$ – Daniel Griscom Aug 25 '15 at 1:36

Short answer: yes, but not without a couple extra parts.

Longer answer: You can program your flash device if you add 2 I/O expanders into the path between your Arduino and the flash memory, and use them as the middle-men when interacting with your flash.

One expander is required to hold the R/W address during the R/W operation, because according to the datasheet, the address must be held on the address lines throughout the operation.

A second expander is required to handle the R/W data lines. It will be used as a serial-to-parallel converter when performing write operations, and then as a parallel-to-serial when reading.

I/O expanders come in both I2C and SPI flavors, so you can certainly use these usual protocols to the expanders.

In any case, an Uno might not be the best choice for the task here. You'd really benefit from a microcontroller with more available I/O.


May I suggest you use something simpler like an Atmel AT24C32 or you can get more memory with the AT24C1024. It's I2C, very easy to hook up, address, read, and write bytes too. Also, there are existing arduino drivers for this chip to. It'll kick start your project!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.