我正在尝试对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跃迁发生在100kHZ。(时钟周期为10 us)。
感谢您的帮助。
对于其他来这里的人,我的诀窍是做以下事情:
发送50多个时钟,SWDIO为高发送JTAG至SWD切换模式读取DP ID寄存器在那之后,我能够得到北欧人的回应,这很好。