mcp2200
Python interface to the MCP2200
2
Github Watches
6
Github Forks
9
Github Stars
Drive the MCP2200 with python
MCP2200 is the Microchip USB-Serial transceiver. Datasheet
The USB link is also used to configure the device, and, as a bonus, to easily manage some GPIO and EEPROM on the device.
When connected to a computer, it creates 2 new USB devices
- A USB CDC that's the actual virtual serial port any tool will use to communicate.
- A USB HID, that can be used to personalize and configure the chip.
The MCP2200 is delivered along with a user interface that helps easily configuring it. BUT... it's pure Windows !!
Thanksfully, Microchip delivers this document as well : The fully documented HID protocol
This project implements the microchip specifications at 3 levels :
- The graphical configuration tool
- The USB HID specification
- The API as described in the component's datasheet
Install
git clone https://github.com/cdtx/mcp2200.git
cd mcp2200
pip install -r requirements.txt
python setup install
GUI

Example at USB HID level
from cdtx.mcp2200.device import MCP2200Device
try:
dev = mcp2200Device(autoConnect=True)
except:
sys.exit('Cannot connect the device')
try:
# Set GPIO 0 as output and set it
config = dev.read_all()
# Reset bit0 of IO_bmap
config['IO_bmap'] &= 0xFE
dev.configure(**config)
dev.set_clear_outputs(Set_bmap=0x01, Clear_bmap=0x00)
finally:
mcp2200.disconnects()
Example at API level
from cdtx.mcp2200.api import SimpleIOClass
# Init class and connect device
dev = SimpleIOClass()
dev.InitMCP2200(0x04d8, 0x00df)
assert dev.GetNoOfDevices() == 1
# Set GPIO 0 as output and set it
dev.SelectDevice(0)
assert dev.IsConnected() == True
# Set all pins as outputs
dev.ConfigureIO(0x00)
dev.SetPin(0)
assert dev.ReadPinValue(0) == 1
Problem with permissions ?
1. Quick and dirty solution is to install and run as root
2. Prefer allowing current user to manage USB devices
Add the following rule to file /etc/udev/rules.d/50-myrules.rules (create if necessary)
```
ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00df", GROUP:="plugdev", MODE="0660"
```
The current user must belong to the __plugdev__ group
```
sudo usermode -a -G plugdev ${USER}
```
[Source](https://askubuntu.com/questions/112568/how-do-i-allow-a-non-default-user-to-use-serial-device-ttyusb0)
相关推荐
I find academic articles and books for research and literature reviews.
Confidential guide on numerology and astrology, based of GG33 Public information
Emulating Dr. Jordan B. Peterson's style in providing life advice and insights.
Advanced software engineer GPT that excels through nailing the basics.
Your go-to expert in the Rust ecosystem, specializing in precise code interpretation, up-to-date crate version checking, and in-depth source code analysis. I offer accurate, context-aware insights for all your Rust programming questions.
Converts Figma frames into front-end code for various mobile frameworks.
Take an adjectivised noun, and create images making it progressively more adjective!
Discover the most comprehensive and up-to-date collection of MCP servers in the market. This repository serves as a centralized hub, offering an extensive catalog of open-source and proprietary MCP servers, complete with features, documentation links, and contributors.
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
Micropython I2C-based manipulation of the MCP series GPIO expander, derived from Adafruit_MCP230xx
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
🧑🚀 全世界最好的LLM资料总结(Agent框架、辅助编程、数据处理、模型训练、模型推理、o1 模型、MCP、小语言模型、视觉语言模型) | Summary of the world's best LLM resources.
Dify is an open-source LLM app development platform. Dify's intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, observability features and more, letting you quickly go from prototype to production.
Reviews
user_1ZnlJ6UD
The mcp2200 by cdtx is a phenomenal tool for efficient USB-to-serial conversion. I appreciate its reliable functionality and seamless integration in my projects. The detailed documentation on GitHub makes it easy to get started and utilize its full potential. If you need a solid converter, this is a must-have!