Debugger Adapter
The Particle Debugger is the best option for debugging Particle hardware. Many CMSIS-DAP debuggers are also compatible with Particle hardware. This document describes using the NanoDAP debugger, however there are many nearly identical debuggers available. If have the option of getting it with or without file system support, get it with the file system, though on many models it won't even be mentioned since file system support should be standard for a CMSIS-DAP debugger.
The CMSIS-DAP debuggers work with both Gen 3 (Argon, Boron, B-Series SoM, Tracker SoM) and Gen 2 (Photon, P1, Electron, E-Series) devices. The ST-LINK/V2 adapter only works with Gen 2 devices.
Debugger | Gen 2 | Gen 3 |
---|---|---|
Particle Debugger | ✓ | ✓ |
CMSIS-DAP Debugger | ✓ | ✓ |
ST-LINK/V2 | ✓ |
NanoDAP
The NanoDAP debugger is tiny. It has a USB-C connector on one end to attach to your computer, and a 2x5 0.1" male header on the other side for attaching to your Particle device.
The pinouts are:
Top | Bottom |
---|---|
TDI | TCK/CK |
TDO | GND |
nRST | TMS/IO |
U_TX | 3V3 |
U_RX | 5V |
If you are using Mac or Linux you can probably use it without a device driver. If you are using the Web-based JTAG programmer you may also be able to avoid using a device driver, even on Windows. The web-based programmer also works on Chromebooks.
If you are using Windows and want to use the source-level debugger or OpenOCD, you will likely need to install a device driver; the manufacturer of your debugger should provide a link to download a compatible one.
Gen 2
If you are connecting to a Gen 2 device (Photon, P1, Electron, or E-Series), you should connect:
Debugger | Particle Device |
---|---|
TMS/IO | D7 (SWDIO) |
TCK/CK | D6 (SWCLK) |
nRST | RST |
GND | GND |
The female-to-make Dupont wires are ideal when connecting from the debugger (male header pins) to a solderless breadboard.
Gen 3
If you are connecting the debugger to a Gen 3 device it's easiest to use a SWD (2x5 1.27mm) breakout board. This one from Adafruit can be used with this cable to easily connect the debugger to your Particle Gen 3 device.
Debugger | SWD Connector | Color |
---|---|---|
TCK | CLK | Orange |
GND | GND | Brown |
TMS | SWIO | Yellow |
3V3 | VREF | Red |
nRST | /RST | White |
Of course the colors don't matter, but are included in the table to help if your looking at the pictures.
Building an adapter
Instead of the wires and the generic SWD adapter, you could also build your own! This is completely optional and you can just use wires to connect the debugger directly to your device.
The board is passive, with just a few connectors on it:
The schematic, board layout, and Gerber files are open source and available here:
File | Description |
---|---|
NanoDapAdapter.sch | EagleCAD Schematic |
NanoDapAdapter.brd | EagleCAD Board Layout |
NanoDapAdapterV1.zip | Gerber Files |
I manufactured the board shown here at OshPark however any manufacturer will be able to make this simple board.
BoM (Bill of Materials)
Description | Example | Price |
---|---|---|
RECEPTACLE, THR, DUAL ROW, .100" | METZ CONNECT USA Inc. FR20205VBDN | $0.80 |
CONN HEADER SMD 10POS 1.27MM | Samtec FTSH-105-01-F-DV-K | $3.91 |
10-PIN 2X5 SOCKET-SOCKET 1.27MM Cable | Adafruit 1675 | $2.95 |
Male header pins 0.1" | Sullins PRPC040SAAN-RC |
Assembly
The board is tiny and very simple:
It helps if you have solder paste, but enough of the connector pins are exposed that you can just solder it with regular solder if that's all you have.
I reflowed this in a T962 reflow oven, but you can use a hot air rework gun, hot plate, or even a regular soldering iron for this project. I used Sn42/Bi57/Ag1 low-temperature solder paste so I used the Wave 1 preset on the T962.
Here's the board with the SMD SWD connector soldered to the board and the optional 3-pin male header pins for the serial output from the debugger.
The board is intended be assembled with the 10-pin 0.1" socket mounted on the bottom of the board:
Use the socket-socket 1.27mm cable to connect the adapter to your Particle Gen 3 devices and it will work the same as the Particle Debugger examples!