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