In the world of embedded systems development, testing and debugging I2C and SPI devices is a daily necessity. When I develop firmware for sensors, memory chips, or other peripherals, I often need to quickly send commands, read registers, and verify responses. However, existing tools either require extensive programming, are prohibitively expensive, or lack the flexibility needed for rapid prototyping. How do I quickly send commands to an I2C sensor, read its registers, or test an SPI peripheral without writing extensive code or using expensive specialized equipment? Traditional oscilloscopes can show you the signals, but they can't actively communicate with your devices. Microcontroller development boards work, but require programming, compilation, and flashing—a time-consuming process when you just want to send a few test commands.
The USB I2C/SPI Master Adapter was born from a simple need: create a versatile, affordable, and easy-to-use tool that bridges the gap between your PC and I2C/SPI devices. The goal was to build hardware that could support both protocols, with initial software focus on I2C:
- Send arbitrary I2C commands with a simple graphical interface
- Hardware support for both I2C and SPI protocols
- Work reliably with Windows 10/11
- Provide flexible command sequencing with programmable delays
- Save and load command sequences for repetitive testing
- Offer timing control with multiple clock speeds
No programming required. No code compilation. Just plug it in, open the Windows application, and start communicating with your devices.
Heart of Communication: FTDI FT232H
At the core of this adapter lies the FTDI FT232H USB-to-serial bridge IC. While many know the FT232H as a simple UART converter, this powerful chip has a hidden talent: the Multi-Protocol Synchronous Serial Engine (MPSSE). This feature transforms the FT232H into a versatile protocol converter capable of:
- I2C master mode with clock stretching support
- SPI master mode with configurable clock polarity and phase
- General-purpose digital I/O (GPIO) control
- Clock speeds up to 30MHz as SPI
The MPSSE engine handles all the low-level protocol timing, ensuring reliable communication without burdening the host PC with real-time requirements.
Windows Master Application (I2C Support)
The Windows application currently provides an intuitive interface specifically for I2C device communication (SPI support is planned for future releases):
Scan I2C Devices
You can easily scan the I2C bus (addresses 0x03 to 0x77) to detect connected devices. Just click "Scan, " and the application will list all responsive addresses.
I2C Protocol Support
The adapter supports I2C communication with the following capabilities:
Clock Speed Options
- 100 kHz (Standard Mode) - Compatible with all I2C devices
- 400 kHz (Fast Mode) - For high-speed sensors and peripherals
Clock Phase Modes
- 2-way phase mode - Traditional I2C timing
- 3-way phase mode - Enhanced compatibility for devices with strict setup/hold requirements
Command Capabilities
- Write operations: Send data to any I2C address and register
- Read operations: Retrieve data from device registers
- Combined write/read sequences: Configure and read in one transaction
- Programmable delays: Insert precise timing between commands over a range of 13 to 60000 milliseconds
Command Definition
Users can freely define I2C command sequences through a graphical interface. Each command specifies:
- Device I2C address (7-bit format)
- Register address
- Data bytes to write or number of bytes to read
Optional delay duration after the command
Command Sequencing:
Beyond simple read/write operations, the application supports complex sequences:
- WRITE → DELAY → READ patterns for devices that need processing time
- Multiple consecutive writes for device configuration
- Batch register reads for sensor data collection
Data Persistence:
Created command sequences can be:
- Saved to data files for future use
- Loaded from previously saved sessions
- Shared between projects or team members
This eliminates repetitive command entry and enables quick testing across development sessions.
Hardware DesignCompact and Functional
The adapter is designed with simplicity in mind:
Minimal Component Count:
- FT232H as the primary IC
- USB Type-C connector with proper ESD protection
- Voltage regulation for stable 3.3V I/O
- Status LEDs for power and activity indication
Pin Headers:
The adapter connector has the following pin assignments:
DIP Switch Configuration
The adapter includes DIP switches to configure operation mode and pull-up resistors:
Gerber files are included in the repository for easy ordering from PCB fabrication services.
There is also a BOM (Bill of Materials) file listing all components needed for assembly.
After assembling the PCB, simply connect it to your PC via USB Type-C, launch the FT_Prog application to write the necessary EEPROM configuration to the FT232H, and you're ready to start communicating with your I2C devices.
To configure the FT232H EEPROM, you can use the FT_Prog utility from FTDI. Launch FT_Prog, Scan the device, and USB String Descriptors as needed.
Click "Program Devices" to write the configuration to the FT232H.
3D ModelA 3D model of the enclosure is available:
- F3D/usbi2c.f3d - Fusion 360 design file for the adapter enclosure
Basic Operation
1. Connect Hardware:
- Plug the adapter into your PC's USB port
- Connect your I2C device to the SDA, SCL, and GND pins
- Power your device (from 3.3V pin or external source)
2. Launch Application:
- Open the Windows Master Application
- Select the appropriate COM port (automatically detected)
- Choose I2C clock speed and phase mode
3. Send Commands:
- Define a WRITE command to configure your device
- Add a DELAY if the device needs processing time
- Define a READ command to retrieve data
- Execute the sequence and view results
4. Save and Reuse:
- Save successful command sequences to a file
- Load them later for repeated testing or production use
Example: Reading a Temperature Sensor
Command 1: WRITE to address 0x48, register 0x01, data [0x60]
(Configure sensor to 12-bit resolution)
Command 2: DELAY 100ms
(Wait for conversion)
Command 3: WRITE to address 0x48, register 0x00
(Point to temperature register)
Command 4: READ from address 0x48, 2 bytes
(Retrieve temperature data)This sequence can be saved and executed with a single button click.
ConclusionThe USB I2C/SPI Master Adapter solves a real problem in electronics development: the need for quick, flexible, and reliable communication with I2C devices. By combining the proven FTDI FT232H with an intuitive Windows application, it delivers a tool that's both powerful for professionals and accessible for beginners. The hardware is designed to support both I2C and SPI protocols, with the Windows application currently focusing on I2C communication.
Whether you're debugging a sensor, testing a production batch, or learning about I2C protocols, this adapter provides the bridge between your ideas and your hardware—no programming required. SPI support is planned for future software updates.
LicenseSoftware: MIT License for maximum flexibility
Hardware and Documentation: CC-BY-SA V4.0 for schematic and PCB designs




_4YUDWziWQ8.png?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)

_t9PF3orMPd.png?auto=compress%2Cformat&w=40&h=40&fit=fillmax&bg=fff&dpr=2)
_Ujn5WoVOOu.png?auto=compress%2Cformat&w=40&h=40&fit=fillmax&bg=fff&dpr=2)
Comments