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

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

Однако я хочу управлять 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 мкс).

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


person guraaf    schedule 31.01.2017    source источник
comment
Выдавали ли вы последовательность пробуждения SWD (50 циклов SWCLK с SWDIO=1) перед исходным пакетом?   -  person Nipo    schedule 10.02.2017
comment
Спасибо @Nipo. Я нашел проблему. Мне пришлось сначала отправить строку JTAG-to-SWD, а затем также прочитать регистр DP ID.   -  person guraaf    schedule 11.02.2017


Ответы (1)


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

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

person guraaf    schedule 11.02.2017