Управление Nordic nRF52 через интерфейс SWD

Я пытаюсь запрограммировать / остановить / загрузить / стереть и т. Д. Северный Полу MCU. Это ARM-Cortex M4 в nRF52. Я использую выводы SWD чипа и могу добиться этого, если я использую коммерческий J-Link с инструментом командной строки nrfjprog или их утилитой Segger для Windows.

Однако я хочу управлять nRF52 из другого MCU через контакты GPIO второго MCU и написать свой собственный драйвер SWD, подключив 3 провода к nRF52 - SWCLK, SWDIO и GND.

Эти провода теперь управляются хостом, и я использую справочное руководство ARM для SWD. Протокол относительно прост для того, что я пытаюсь достичь. В следующем файле 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 никогда не запускает линию SWDIO с ACK.

Я думаю, это должно быть потому, что NRF52 никогда не видел заголовок пакета данных или ему не нравилось то, что я отправил, но я не могу понять, что именно. Кто-нибудь испытывал это или имеет какое-либо представление, почему это может происходить? Кстати, переходы SWDCLK происходят при 100 кГц. (тактовый период 10 с нами).

Любая помощь приветствуется.

1 ответ

Для всех, кто приходит сюда, уловка для меня заключалась в следующем:

Отправьте более 50 часов с SWDIO как можно выше. Отправьте шаблон переключения JTAG-SWD. Считайте регистр DP ID. После этого я смогу получить ответ от скандинавской стороны.

Другие вопросы по тегам