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

1Mbit I2C EEPROM PMOD

Size
41 × 20.3 mm
Copper layers
2
Thickness
0.8 mm
Parts
15
Nets
15
Pads
55
Tracks, vias
117, 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 41 × 20.3 mm with 15 parts on 15 nets, routed with 117 tracks and 0 vias.

Its parts include 3 capacitors, 3 resistors, 2 connectors, 1 IC and 1 switch. 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

15
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
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_02x06FM4DD:PMODHeader_2x06_P2.54mm_HorizontalJ2
1PMOD_02x06FM4DD:PMODPinSocket_2x06_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 41 × 20.3 mm and has 2 copper layers, 0.8 mm thick.

What parts does the Eeprom use?

15 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-t6a/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 layers36 × 20.3 mmEeprom, the printed circuit board in 3D

    Eeprom

    fm4dd/pmod-eeprom

    1Mbit I2C EEPROM PMOD

    17 parts1

Similar boards

  • 2 layers19 × 76 mmSub, the printed circuit board in 3D

    Sub

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    15 parts3kApache-2.0
  • 2 layers26.7 × 62.2 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

    15 parts1kGPL-3.0
  • 2 layers100 × 44 mmVideoslot, the printed circuit board in 3D

    Videoslot

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    15 parts1k
  • 2 layers91 × 51 mmBusinessCard, the printed circuit board in 3D

    BusinessCard

    hackclub/OnBoard

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

    15 parts915
  • 2 layers24.3 × 57.9 mmFlosspods pro flex, the printed circuit board in 3D

    Flosspods pro flex

    kenp-io/not-for-airpods-repairs

    The content of this repository is licensed under the WTFPL License. Please have a close look at the terms before using this material.

    15 parts609WTFPL
  • 2 layers20.3 × 15.2 mmL0 Load, the printed circuit board in 3D

    L0 Load

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    15 parts546MIT
  • 2 layers68 × 50 mmEleLab v2 PowerFeed, the printed circuit board in 3D

    EleLab v2 PowerFeed

    Chrismettal/EleLab_v2

    Cheap DIY lab system for hobbyists and the tinkering folk

    15 parts531GPL-3.0
  • 2 layers50.8 × 35.6 mmInterface, the printed circuit board in 3D

    Interface

    harbaum/I2C-Tiny-USB

    Cheap and simple I²C to USB interface

    15 parts454