Skip to the content
PCBKitNew board
2 layers36 × 20.3 mmEeprom, the printed circuit board in 3D

1Mbit I2C EEPROM PMOD

Size
36 × 20.3 mm
Copper layers
2
Thickness
0.8 mm
Parts
17
Nets
11
Pads
43
Tracks, vias
107, 0
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
5 Sep 2021
Updated
5 Nov 2023

Overview

Eeprom is an open-source printed circuit board by fm4dd, from the fm4dd/pmod-eeprom repository on GitHub. It is a 2-layer board of 36 × 20.3 mm with 17 parts on 11 nets, routed with 107 tracks and 0 vias.

Its parts include 3 capacitors, 3 resistors, 3 inductors, 2 connectors and 1 IC. It belongs with the fPGA and programmable logic boards and the FPGA and CPLD boards of this library.

README

readme.md

PMOD-EEPROM

xiao-test

Description

This I2C PMOD provides a 1 Mbit serial EEPROM, using the M24M01 circuit by STMicroelectronics. DIP switches enable I2C pull-up resistors if needed, and change the EEPROM's I2C device address. Up to four modules can be chained for a total capacity of 4 Mbit (512 KBytes). Three Testpoints can be fitted for I2C bus troubleshooting. The PMOD has designs for Type-6 (I2C single row), and for the new Type-6A (I2C extended double row). The picture shows the Type-6A variant (engineering sample).

http://fpga.fm4dd.com/

Schematic

This is the schema for the PMOD I2C Type-6 (single row) connector variant: EEPROM PMOD Schematics

The current EEPROM desin is pulling the "write-protect" pin high for "read-write" operation. A design update may implement a solder pad for setting the EEPROM 'read-only' after programming.

Hardware Release

Rasperry Pi I2C Discovery

Ensure the I2C bus is enabled, and install prerequisite I2C tools:

text
# sudo apt-get install git i2c-tools
# raspi-config  2 Interface Options  enable I2C

Check the IO expander circuit is visible on the I2C bus under address 0x50..0x56, depending on the address set through the DIP switch. Below example address 0x50/51 is set with SW1-1 = off and SW1-2 = off.

text
pi@pi-ms05:~ $ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Example code

pmod-eeprom code examples for Arduino boards are available in the example folder

On the Raspberry Pi, the PMOD can be easily programmed with the eeprom utility program 'eepflash.sh'. This program writes a manually created byte file (.eep) as content into the I2C eeprom. It can be found as part of the Raspberry Pi foundation 'hats' repository:

text
pi@pi-ms05:~ $ git clone https://github.com/raspberrypi/hats.git
Cloning into 'hats'...
remote: Enumerating objects: 565, done.
remote: Counting objects: 100% (95/95), done.
remote: Compressing objects: 100% (61/61), done.
remote: Total 565 (delta 59), reused 46 (delta 34), pack-reused 470
Receiving objects: 100% (565/565), 306.34 KiB | 936.00 KiB/s, done.
Resolving deltas: 100% (325/325), done.

Compile the tools located in the eepromutils subdirectory:

text
pi@pi-ms05:~ $ cd hats/eepromutils/
pi@pi-ms05:~/hats/eepromutils $ make clean; make
rm -f eepmake eepdump
cc -Wall -Wextra eepmake.c -o eepmake
cc -Wall -Wextra eepdump.c -o eepdump

Check the tools:

text
pi@pi-ms05:~/hats/eepromutils $ ls -l
total 84
-rwxr-xr-x 1 pi pi 12820 Aug 28 22:38 eepdump
-rw-r--r-- 1 pi pi  8112 Aug 28 22:37 eepdump.c
-rwxr-xr-x 1 pi pi  3906 Aug 28 22:37 eepflash.sh
-rwxr-xr-x 1 pi pi 22232 Aug 28 22:38 eepmake
-rw-r--r-- 1 pi pi 15144 Aug 28 22:37 eepmake.c
-rwxr-xr-x 1 pi pi  3122 Aug 28 22:37 eeprom_settings.txt
-rw-r--r-- 1 pi pi  2395 Aug 28 22:37 eeptypes.h
-rw-r--r-- 1 pi pi   677 Aug 28 22:37 Makefile
-rw-r--r-- 1 pi pi  1836 Aug 28 22:37 README.md

Example upload of an .eep file:

text
pi@pi-ms05:~/hats/eepromutils $ sudo ./eepflash.sh -w -f=rpi2pmod.eep -t=24c32 -d=1 -a=50
This will attempt to talk to an eeprom at i2c address 0x50 on bus 1. Make sure there is an eeprom at this address.
This script comes with ABSOLUTELY no warranty. Continue only if you know what you are doing.
Do you wish to continue? (yes/no): yes
Writing...
0+1 records in
0+1 records out
113 bytes copied, 0.728222 s, 0.2 kB/s
Closing EEPROM Device.
Done.

PMOD-EEPROM on a PMOD2RPI interface board, running code from the XIAO Cortex M0+ MCU.

Parts

17
QtyValueFootprintReferences
30.1uFCapacitor_SMD:C_0402_1005MetricC1, C2, C3
3TestPointTestPoint:TestPoint_Keystone_5000-5004_MiniatureTP1, TP2, TP3
24.7KResistor_SMD:R_0603_1608MetricR1, R2
110KResistor_SMD:R_0603_1608MetricR3
13V3_LabelFM4DD:3V3_LabelL2
1GND_LabelFM4DD:GND_LabelL3
1JLCPCB_Order_Number_PlaceholderFM4DD:JLCPCB_Order_Number_PlaceholderRef**
1Logo_KiCad_5mmFM4DD:KiCad-Logo2_5mm_SilkScreenL1
1M24M01-RPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1PMOD_01x06FM4DD:PMODPinSocket_1x06_P2.54mm_HorizontalJ2
1PMOD_01x06FM4DD:PMOD_Header_1x06_P2.54mm_HorizontalJ1
1SW_DIP_x04Button_Switch_THT:SW_DIP_SPSTx04_Slide_6.7x11.72mm_W7.62mm_P2.54mm_LowProfileSW1

Questions

How big is the Eeprom PCB?

It measures 36 × 20.3 mm and has 2 copper layers, 0.8 mm thick.

What parts does the Eeprom use?

17 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Eeprom KiCad files?

From the fm4dd/pmod-eeprom repository on GitHub, at the commit this page was made from: the board is kicad-t6/eeprom.kicad_pcb and its schematic kicad-t6/eeprom.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Eeprom design in my own project?

Its repository states no licence, so its author keeps all rights: ask fm4dd before reusing the design.

More from fm4dd/pmod-eeprom

1
  • 2 layers41 × 20.3 mmEeprom, the printed circuit board in 3D

    Eeprom

    fm4dd/pmod-eeprom

    1Mbit I2C EEPROM PMOD

    15 parts1

Similar boards

  • 2 layers50 × 35 mmServo power, the printed circuit board in 3D

    Servo power

    earthtojake/text-to-cad

    Design physical products with AI

    17 parts26kMIT
  • 2 layers139.7 × 62.2 mmBreakout 60pin EEC IV, the printed circuit board in 3D

    Breakout 60pin EEC IV

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    17 parts1.2k
  • 2 layers29.2 × 55.9 mmDeniseadapter, the printed circuit board in 3D

    Deniseadapter

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    17 parts1kGPL-3.0
  • 2 layers24.5 × 36.5 mmCluster, the printed circuit board in 3D

    Cluster

    JesusFreke/lalboard

    A 3D-printed keyboard inspired by the DataHand

    17 parts993
  • 2 layers56.3 × 55.7 mmStarNecklace, the printed circuit board in 3D

    StarNecklace

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    17 parts915
  • 2 layers25 × 25 mmSmallEncoder, the printed circuit board in 3D

    SmallEncoder

    DDeGonge/OS-ARM

    This arm is not industrial and it will not be fast, but that is not my goal. But it will hopefully be a very nice looking arm fully capable of 6dof motion, cheap enough to keep it accessable but capable enough to…

    17 parts498MIT
  • 2 layers38.9 × 16.1 mmAmoeba spc, the printed circuit board in 3D

    Amoeba spc

    mtl/keyboard-pcbs

    Keyboard PCBs

    17 parts485
  • 2 layers36 × 51 mmABSIS ALE, the printed circuit board in 3D

    ABSIS ALE

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    17 parts431