我正在尝试编程/停止/启动/擦除等北欧半MCU。这是nRF52中的ARM-Cortex M4。我正在使用芯片的SWD引脚,如果我使用商业J-Link和nrfjprog命令行工具或它们的Segger窗口实用程序,就可以实现这一点。
然而,我想通过第二个单片机的GPIO引脚从另一个单片机控制nRF52,并编写我自己的SWD驱动程序,通过连接3根线到nRF52 - SWCLK,SWDIO和GND。
这些电线现在是由主机驱动的,我使用的是针对社署的ARM参考手册。对于我试图实现的目标,该协议相对简单明了。以下是一些细节: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似乎从未开始使用确认来驱动SWDIO线。
我猜这一定是因为NRF52从来没有看到数据包头,或者不喜欢我发送的东西,但我不知道是什么。有没有人经历过这种情况,或者知道为什么会发生这种情况?顺便说一下,SWDCLK转换发生在100 kHZ。(时钟周期为10 us)。
感谢您的帮助。
发布于 2017-02-12 03:12:21
对于其他来这里的人来说,我的诀窍是做以下事情:
发送50+时钟与SWDIO作为高发送JTAG到SWD开关模式,读取DP ID寄存器,然后我能够从北欧人的反应,只是好。
https://stackoverflow.com/questions/41969643
复制相似问题