CH552 USB Multi-Protocol Programmer#
Note
This documentation is actively evolving. For the latest updates and revisions, please visit the project’s GitHub repository.
CH552 USB Multi-Protocol Programmer
The CH552 USB Multi-Protocol Programmer is a compact and cost-effective device designed for embedded systems development, testing, and debugging. It supports multiple hardware architectures including AVR, ARM Cortex-M (CMSIS-DAP), and CPLD (MAX II), making it ideal for a wide range of applications such as firmware development, educational labs, and low-volume production environments.
This programmer is built around the CH552 microcontroller, which is based on the enhanced 8051 architecture. It offers native USB support and a range of digital interfaces (GPIO, SPI, I2C, UART), enabling seamless communication between the host system and the target hardware.
Microcontroller Core
The programmer integrates a CH552 microcontroller with the following characteristics:
8051-based enhanced core, up to 24 MHz.
Native USB 2.0 Full-Speed device.
Multiple GPIO pins for signal control and mapping.
SPI, I2C, and UART interfaces for protocol bridging.
Low power consumption and small form factor.
Features
Multi-architecture support: Compatible with AVR (ISP), ARM Cortex-M (CMSIS-DAP), and CPLD (JTAG).
In-System Programming (ISP): Flash microcontrollers without desoldering.
Real-time debugging: Step-through and breakpoint debugging with OpenOCD and PyOCD.
JTAG boundary-scan: For CPLD configuration and board testing.
Configurable GPIOs: Adaptable for use as JTAG, SWD, or ISP lines.
USB 2.0 interface: Direct connection to host PC using USB CDC or HID.
Toolchain compatibility: Works with avrdude, OpenOCD, PyOCD, urJTAG, and others.
Cross-platform support: Compatible with Linux and partially supported on Windows.
Advantages
Compact design: Suitable for breadboards and embedded setups.
Versatility: One device for multiple programming and debugging protocols.
Open-source firmware: Fully customizable and community-supported.
Cost-effective: Inexpensive alternative to commercial debuggers and programmers.
Linux-friendly: No need for proprietary drivers on Linux systems.
Ideal for education: Can be used in microcontroller courses and workshops.
Limitations
External power required: Cannot supply power to high-current target boards.
Learning curve: Requires knowledge of protocols like CMSIS-DAP, JTAG, or AVR ISP.
Firmware updates: May require reflashing to support new features or targets.
Partial Windows support: Some tools may require manual setup or driver adjustments.
Compatibility
CMSIS-DAP (ARM Cortex-M)
Fully compatible with CMSIS-DAP v2.0 protocol.
Supported by OpenOCD and PyOCD.
Tested with:
STM32F0
RP2040 (Raspberry Pi Pico)
PY32 series
Other Cortex-M0/M3/M4 devices
AVR ISP
Works with avrdude using USBasp-like interface.
Supports:
ATmega328P
ATtiny85
ATmega2560
Other classic 8-bit AVR microcontrollers
CPLD JTAG
Supports Intel (formerly Altera) MAX II series.
Compatible with JTAG tools like urJTAG or openFPGALoader.
JTAG signals exposed via GPIO (TDI, TDO, TCK, TMS).
Use Cases
Firmware flashing and in-system programming.
Debugging embedded applications with CMSIS-DAP.
Educational labs and training environments.
Low-cost production line programming.
Boundary-scan tests for hardware bring-up.
CPLD configuration and prototyping.
Resources
Firmware: [wagiminator/CH552-DAPLink](https:)
CH552 Datasheet: Available from WCH official website.
Tools:
OpenOCD, PyOCD
avrdude
urJTAG, openFPGALoader
Community support: GitHub issues, Reddit, Hackaday, forums.
Contents
- Terms, Acknowledgments, and Licenses
- CH55x Unit SDK Docker
- Docker Configuration for Non-Privileged Users on Linux
- General Information
- AVR: Getting Started
- AVR Firmware Overview
- AVR: Compile and Upload Code
- AVR: Arduino IDE Bootloader
- ARM Cortex-M
- Using OpenOCD
- PyOCD
- RP2040: An Introduction
- CH552 Multi-Protocol Programmer
- RP2040 Firmware
- STM32: Getting Started
- STM32 Firmware
- CPLD/FPGA
- CPLD Firmware
- How to Generate an Error Report