This is a very popular module based on the FT232H chip made by CJMCU. You can use this module as a high-speed programmer for your embedded projects. I discovered that this module can be used as a JTAG and SWD programmer for ESP32 and STM32 microcontrollers. It can also be used as an ISP programmer for AVR microcontrollers.
This module might be used to program other microcontrollers, but no information about them has been published yet.
Any similar module/board based on FT233H/FT2232H which exposes AD0
, AD1
, AD1
, and AD3
pins can be used for this purpose.
Note that voltage level of all I/Os is 3.3V but they are 5V-tolerant
Install WinUSB
driver for FT232H using Zadig:
For SWD connection use -f interface/ftdi/ft232h-module-swd.cfg
, and for JTAG connection use -f interface/ftdi/um232h.cfg -c "transport select jtag"
.
Example: Read STM32f103C8 (Blue-Pill board) flash:
For STM32f103C8 with 64KB of flash. Target is board/stm32f103c8_blue_pill.cfg
. Size to read is 0x10000
. Read firmware from MCU and store it in a file named firmware.bin
on your computer.
openocd -f interface/ftdi/ft232h-module-swd.cfg -f board/stm32f103c8_blue_pill.cfg -c init -c "reset halt" -c "flash read_bank 0 firmware.bin 0 0x10000" -c "reset" -c shutdown
Example: Write STM32f103C8 (Blue-Pill board) flash:
For STM32f103C8 with 64KB of flash. Target is board/stm32f103c8_blue_pill.cfg
. Write firmware from the file firmware.bin
to the flash memory of the MCU.
openocd -f interface/ftdi/ft232h-module-swd.cfg -f board/stm32f103c8_blue_pill.cfg -c init -c "reset halt" -c "flash write_image erase firmware.bin 0x08000000" -c "reset" -c shutdown
Using with PlatformIO:
[env:bluepill_f103c8_128k]
platform = ststm32
board = bluepill_f103c8_128k
framework = arduino
; Upload options for FT232H USB-JTAG adapter in SWD Mode
upload_protocol = custom
upload_command = ${platformio.packages_dir}/tool-openocd/bin/openocd -s ${platformio.packages_dir}/tool-openocd/scripts -f interface/ftdi/ft232h-module-swd.cfg -f board/stm32f103c8_blue_pill.cfg -c "init" -c "reset halt" -c "flash write_image erase {$SOURCE} 0x08000000" -c "reset" -c "shutdown"
; Debug options for FT232H USB-JTAG adapter in SWD Mode
debug_tool = custom
debug_server =
${platformio.packages_dir}/tool-openocd/bin/openocd
-s
${platformio.packages_dir}/tool-openocd/scripts
-f
interface/ftdi/ft232h-module-swd.cfg
-f
board/stm32f103c8_blue_pill.cfg
Install default driver from FTDI. If you have installed WinUSB
or libusb
driver for FT232H, you should revert it to defalut driver:
- Low-cost ESP32 In-circuit Debugging
- Configuring JTAG debugging in Linux
- Getting Started with OPENOCD Using FT2232H Adapter for SWD Debugging
- How to use ft2232h adapter and openocd to debug the SWD interface of arm cortex M Series MCU
- Read and write stm32 firmware binary with openOCD
- AVRDUDE and FTDI *232H
- TinyAVR-0/1 Programming