我正在尝试对 Nordic Semi MCU 进行编程/暂停/启动/擦除等。这是 nRF52 中的 ARM-Cortex M4。我正在使用芯片的 SWD 引脚,如果我将商业 J-Link 与 nrfjprog 命令行工具或他们的 Segger windows 实用程序一起使用,则可以实现这一点。
但是,我想通过第二个 MCU 的 GPIO 引脚从另一个 MCU 控制 nRF52,并通过将 3 根线连接到 nRF52 - SWCLK、SWDIO 和 GND 来编写我自己的 SWD 驱动程序。
这些线现在由主机驱动,我正在使用 SWD 的 ARM 参考手册。对于我想要实现的目标,该协议相对简单。以下 PDF 包含一些详细信息: http: //hackipedia.org/Hardware/CPU/ARM/pdf,%20Cortex/IHI0031A_ARM_debug_interface_v5.pdf和https://www.silabs.com/Support%20Documents/TechnicalDocs/AN0062.pdf
我设法发送初始数据包标头(START、APnDP、Read、Addr、Stop、Parity 等)。然而,在那之后,SWDIO 就再也没有转过身来。我的主机 MCU 浮动 SWDIO 并准备好接收输入。然而,nRF52 似乎从未开始使用 ACK 驱动 SWDIO 线。
我想这一定是因为 NRF52 从来没有看到数据包头或者不喜欢我发送的东西,但我不知道是什么。有没有人经历过这种情况或有任何线索为什么会发生这种情况?顺便说一下,SWDCLK 转换发生在 100 kHZ。(时钟周期为 10 us)。
任何帮助表示赞赏。