Monday, May 2, 2022

Cheap CMSIS-DAP/DAPLink Debugger+Serial Port Module

Cheap CMSIS-DAP/DAPLink SWD module based on NS32F103CBT6 (an STM32-clone?). It has both a debugger and a serial/UART port on a single USB device just like the J-Link OB v2 debugger (based on STM32F072) - better than those ST-Link debugger clones.

MCU interface:

  • SWD (with pull-up resistors to 3V3)
    • PB10 - CLK
    • PB11 - DAT
  • CDC-UART (UART1)
    • PA9 - TXD
    • PA10 - RXD
  • LEDs (active high)
    • PA2 - running status
    • PA3 - connected status
  • USB:
    • PA11
    • PA12 (with fixed pull-up resistor)

 


Firmwares:
(*should work also on chips with smaller ROM STM32F103C8 (like the BluePill C8)

Tested only on Ubuntu host.
sample kernel logs if using original FW:

usb 1-1: new full-speed USB device number 44 using xhci_hcd
usb 1-1: New USB device found, idVendor=c251, idProduct=f001, bcdDevice= 1.00
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: CMSIS_DAP
usb 1-1: Manufacturer: CMSIS-DAP by ARM
usb 1-1: SerialNumber: 202108120001
cdc_acm 1-1:1.0: ttyACM0: USB ACM device
hid-generic 0003:C251:F001.0015: hiddev0,hidraw2: USB HID v1.00 Device [CMSIS-DAP by ARM CMSIS_DAP] on usb-0000:00:14.0-1/input2

Sample kernel logs if using the modified FW:

usb 1-1: new full-speed USB device number 52 using xhci_hcd
usb 1-1: device descriptor read/64, error -71
usb 1-1: new full-speed USB device number 53 using xhci_hcd
usb 1-1: New USB device found, idVendor=0d28, idProduct=0204, bcdDevice= 1.00
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: DAPLink CMSIS-DAP
usb 1-1: Manufacturer: ARM
usb 1-1: SerialNumber: 20220218979699080605210b3030153632303030
cdc_acm 1-1:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
usbhid 1-1:1.2: couldn't find an input interrupt endpoint
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver

Sample openocd configuration:

source [find interface/cmsis-dap.cfg]
transport select swd
source [find target/stm32f4x.cfg]
adapter speed 4000
init
targets
reset halt
If using the original FW, need to add these on the configuration:
cmsis_dap_vid_pid 0xc251 0xf001
cmsis_dap_backend hid

Not tested:

  • UDisk drag-n-drop (looks like not working)
  • WebUSB

 

size comparison (from left to right) :
  1. Blue Pill STM32F103C8
  2. WCH-Link (based on 8051 mcu) - cheaper
  3. NS32F103CB module
  4. J-Link OB v2 clone (STM32F072CB)

 

Reference: