STM32
直播中

张玲

7年用户 1239经验值
私信 关注
[问答]

STM32L4禁用nJTRST但不中断JTAG要怎么操作?

如题,我的目标板有一片 STM32L432KBU6。现在在开发过程中想要禁用掉 nJTRST 把 PB4 用作 GPIO,但又不想因此中断四线制 JTAG。这该怎么办?
限制条件:

  • 我不用 HAL 和 Cube,所有操作完全直接捅寄存器。
  • 这个 JTAG 是和别的芯片共用的,因此不可以改用 SWD。(STM32 的 TDI 接着别的芯片的 TDO,而 TMS 和 TCK 是多片芯片共享的。我有好几只自制 JTAG 调试器,均统一使用 ARM CoreSight 调试接口,因此不用担心接口兼容性。)
背景:
我之前是做过类似的设计的:STM32F103C8T6 + XC2C32A CPLD 共用一个 JTAG 接口。STM32F1 可以通过 AFIO->MAPR 去禁用掉 nJTRST 而不影响 JTAG 调试接口和 Xilinx iMPACT 通过 JTAG 烧录 CPLD。现在的问题是 STM32L432KBU6 取消了 AFIO 改作 SYSCFG,但 SYSCFG 里面也没有找到对应的寄存器,而直接修修改 GPIOB->AFIO[0] 寄存器把 PB4 从 AFIO 0 改成 AFIO 5(SPI1)会中断 JTAG 调试。如何解决?

回帖(1)

张昂笙

2024-4-15 15:40:47
要禁用nJTRST并保持JTAG不中断,可以按照以下步骤进行操作:

1. 首先,需要配置PB4引脚用作GPIO。查找STM32L432KBU6的参考手册或寄存器手册,找到GPIO配置寄存器和引脚模式配置寄存器。然后使用寄存器操作将PB4配置为输出模式。

2. 接下来,需要禁用nJTRST。查找JTAG寄存器或控制寄存器,找到nJTRST禁用位。设置该位以禁用nJTRST信号。在STM32L4系列中,通常是通过JTAG-DP(JTAG调试端口)或TAP控制寄存器来控制nJTRST。

3. 完成上述配置后,PB4将被用作GPIO,而nJTRST将被禁用。确保其他JTAG引脚(TDI、TMS和TCK)仍连接到正确的引脚。

请注意,具体的操作步骤和寄存器名称可能会因芯片型号和版本而有所不同。可能需要参考STM32L432KBU6的参考手册或寄存器手册来获得更准确的信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分