EEPROM is essential for many microcontroller based projects. Unfortunately, the Raspberry Pi Pico misses out on the EEPROM. So, in this write-up, I shall go through the process of adding an EEPROM to your Pi Pico.
The EEPROM has 8 pins, of which 3 are address pins as shown in the figure. The communication between the EEPROm and the microcontroller is via I2C. By setting the address pins A0, A1, A2 to either high or low, the default I2C address of the EEPROM chip can be configured. It is suggested to connect all the address pins to ground, unless you have multiple I2C devices or multiple EEPROMs connected.
The WP or Write Protect pin when set to high prevents anything from being written on to the EEPROM. When the WP pin is connected to ground, write protection is disabled and things can be written on to the EEPROM.
And then there is is the usual SDA (I2C Data), SCL (I2C Clock), Vcc (Supply) and Gnd (Ground) pins.
The SDA, SCL and WP should not be left floating and hence they need to be pulled up via 3.9k resistors. The schematic for the EEPROM has also been attached. Please go through the same for clarity.
I have designed PCBs for making the Pi Pico-EEPROM connection easier. There are variants to the PCB designed. In the sample PCB image, you can see that one has a jumper for write protection and in the other, the write protection pin has been exposed.
The advantage of using the board with the write protection pin exposed is that, the write protection can be software controlled, i.e., it can be enabled or disabled by setting the pin to Low or High.
Other than the SMD versions, I have designed DIP versions as well. You can find the links to the schematics, eagle files and gerber files here
I got myself the SMD version of the board with the write protection pin exposed printed. I used the services of https://jlcpcb.com for printing as like all my projects. Feel free to modify the the board layout, schematics for your project and get them printed or make your own board using a general purpose PCB.
EEPROM-Pi Pico Connection
My connection is as follows:
EEPROM SDA --> Pi Pico GP0
EEPROM SDA --> Pi Pico GP1
EEPROM VCC --> Pi Pico 3V3 (OUT)
EEPROM WP --> Pi Pico GND
EEPROm GND --> Pi Pico GND
The Raspberry Pi Pico has a number of I2C lines. Choose the ones comfortable to you.