CJMCU-200 FT200XD USB to I²C Bridge Module User’s Guide
Overview
The CJMCU-200 is a breakout board for the FTDI FT200XD chip, enabling USB-to-I²C communication. It allows a PC to act as an I²C master, ideal for EEPROM access, sensor polling, and debugging I²C peripherals.
- Chipset: FTDI FT200XD
- Interface: USB 2.0 to I²C (Master only)
- Logic Level: 3.3V (5V tolerant)
- Driver Support: FTDI VCP or D2XX
- Software Stack: LibMPSSE-I2C, Python ctypes, FT_Prog
Pinout Reference
| Pin Label | Function | Notes |
|---|---|---|
| +5V/VCC | USB Power Input | 5V from USB |
| GND | Ground | Common ground |
| SDA | I²C Data | Connect to target SDA |
| SCL | I²C Clock | Connect to target SCL |
| 3V3
BCD |
Regulated Output
Configurable CBUS I/O Pin |
3.3V from onboard LDO
This pin is configured in the device MTP |
Use external 4.7kΩ pull-ups on SDA/SCL if target lacks them.
🛠️ Wiring Example
CJMCU-200 → I²C Target Device
-----------------------------
SDA → SDA
SCL → SCL
GND → GND
3V3 (optional) → VCC (if target accepts 3.3V)
Software Setup
1. Install FTDI Drivers
- Download D2XX drivers from FTDI
- Optional: Install VCP drivers for serial fallback
2. Use LibMPSSE-I2C (Windows/Linux)
- Download LibMPSSE-I2C from FTDI
- Bind via Python (ctypes) or C/C++
Python ctypes Example:
from ctypes import *
ftdi = CDLL("libMPSSE.dll")
handle = c_void_p()
config = I2CChannelConfig(ClockRate=100000, LatencyTimer=2, Options=0)
ftdi.I2C_OpenChannel(0, byref(handle))
ftdi.I2C_InitChannel(handle, byref(config))
data = (c_ubyte * 1)(42)
ftdi.I2C_DeviceWrite(handle, 0x50, 1, data, 1, byref(bytes_written), 0)
Use Cases
| Task | Notes |
|---|---|
| EEPROM access | AT24C256, 24LC series |
| Sensor polling | Direct I²C queries from PC |
| Debugging I²C devices | Monitor ACK/NACK, bus behavior |
| GUI integration | Node-RED or FTDI I²C GUI tools |
FT_Prog Customization
- Change USB descriptors (Product Name, Serial Number)
- Enable remote wakeup or power settings
- Useful for multi-device setups or automated test rigs
Troubleshooting
| Symptom | Likely Cause | Fix |
|---|---|---|
| No device detected | Driver not installed | Reinstall D2XX |
| I²C errors | Missing pull-ups / wrong voltage | Add 4.7kΩ resistors / check VCC |
| Bus hangs | Target not responding | Power cycle / check address |
| Python errors | DLL not found / wrong path | Set correct path to libMPSSE.dll |
Advanced Integration Tips
- Combine with EEPROM editor scripts for batch flashing
- Use logic analyzer to verify I²C timing and ACK/NACK
- Integrate with FreeCAD test fixtures for automated probing
- Benchmark throughput using bulk transfers and page writes