Skip to main content

Eeprom-Programmer

EEPROM Programmer: Migrating from JSON-RPC to Binary Protocol

2022 words·10 mins· loading · loading
The EEPROM Programmer’s serial protocol was migrated from JSON-RPC (with ArduinoJson dependency) to a lightweight binary protocol. On Arduino DUE + AT28C64: reads are 4.4x faster (6.96s to 1.58s), full write cycles are 2.7x faster (33.74s to 12.70s), and flash usage dropped 31% (16KB saved). The protocol uses length-prefixed frames with CRC-16/CCITT integrity checking, a state machine receiver on the firmware side, and blocking serial reads on the Python side. ArduinoJson — the only external firmware dependency — was eliminated entirely.

EEPROM Programmer: Supported Chips

1869 words·9 mins· loading · loading
The EEPROM Programmer now supports all available AT28C family chips: AT28C04, AT28C16, AT28C64, and AT28C256. Chip-specific features like RDY/BUSY polling and page-write mode enable major speedups on Arduino DUE but are not viable on MEGA. Performance measurements and wiring details are provided for each chip.

EEPROM Programmer: Implementing Serial JSON-RPC API

949 words·5 mins· loading · loading
A JSON-RPC API is implemented for the Arduino EEPROM programmer, with clean separation between protocol handling and application logic. The Arduino firmware exposes basic read/write primitives, while a Python CLI handles the business logic. Validation against the XGecu reference programmer confirms identical read and write behavior.

EEPROM Programmer: Debugging Read Operations

The EEPROM Programmer initially returned corrupted data. I tested wiring, bit ordering, and bus isolation, suspecting noise on the data lines. Oscilloscope traces suggested interference, but the root cause was software, several Arduino address pins were never initialized. These floating pins produced unstable signals that mimicked noise. After proper initialization, the API produced stable results identical to a reference programmer.

EEPROM Programmer: Measuring Performance with Oscilloscope

1542 words·8 mins· loading · loading
Evaluation of EEPROM Programmer performance on Arduino. Overhead from digital I/O measured, and oscilloscope traces confirmed datasheet timing. Active polling of the READY/BUSY pin reduced write latency while maintaining reliability. Sequential write/read verification showed consistent integrity. Future work includes endurance testing, retention studies, and comparing Arduino boards with different clock speeds.

Project: EEPROM Programmer

135 words·1 min· loading · loading
The EEPROM Programmer project uses Arduino MEGA or DUE to read from and write to EEPROM chips from the AT28Cxx family. A Python CLI provides erase, write, read, and verify operations. The series of posts below covers the full development process, from initial implementation to supported chip details.