我正在尝试编程/暂停/启动/擦除等北欧半导体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)。
任何帮助表示感谢。
答案 0 :(得分:0)
对于任何来到这里的人,我的诀窍是做以下事情:
使用SWDIO发送50多个时钟 发送JTAG到SWD切换模式 读取DP ID寄存器 在那之后,我能够得到北欧的回应。