Showing results for 
Search instead for 
Did you mean: 

JTAG Communication with STM32F103ZET6


I am currently conducting verification on a custom board implementing STM32F103ZET6. During this process, I have encountered an issue with JTAG communication. The debugger I am using is the STLINK-V3SET.

  1. Communication via SWD: Communication using the SWD (Serial Wire Debug) method, which shares the JTCK and JTMS pins with JTAG, is successful. I am able to program the MCU's firmware through CubeIDE using SWD.

  2. CubeIDE and CubeProgrammer: Both CubeIDE and CubeProgrammer work flawlessly with SWD. However, when I attempt to use JTAG with CubeIDE, I encounter the following error message:

    Board: STLINK-V3SET Voltage: 3.27V Error: No STM32 target found! If your product embeds Debug Authentication, please perform a discovery using Debug Authentication.

    I have changed the Debug Configuration settings to use JTAG as the interface while leaving the frequency as "Auto." Even when I manually set the frequency to 8,000 or other values, the issue persists. With CubeProgrammer and JTAG, I am able to access and program the device successfully.

    I suspect that understanding the root cause of this difference might lead to a solution. The only change I made in CubeProgrammer was switching the interface from SWD to JTAG. In this configuration, the Target Information correctly identifies the device as STM32F101/F103.

    Disconnecting JTDO from the STLINK-V3SET results in a loss of JTAG communication in CubeProgrammer as well. This suggests that CubeProgrammer is indeed communicating through JTAG and not in the background through SWD.

    I have tested with both CubeIDE versions 1.12.0 and 1.13.0, using 1.12.0 to match the environment with the software development team. CubeProgrammer is version 2.14.0.

  3. JTAG Peripheral Circuitry: The STM32F103ZET6 is configured according to RM0008 section 31.4.3, utilizing the internal Pullup/Pulldown resistors provided by the STM32. No external resistors are implemented. JTDO is left floating, but I have also attempted adding a 2k-ohm pull-up resistor to JTDO without resolving the issue.

Considering these circumstances, if you have any possible factors or additional analysis methods to suggest, please assist.


I tried one thing. I used the same board, and I found that JTAG communication works with CubeIDE + STLINK-V2. From this, it appears that JTAG communication is not working when using CubeIDE + STLINK-V3. Is there anything you can speculate about this issue?