I am using an nrf7002dk and my external modules have arrived. The external modules are Minewsemi MS12SF1, which is a combo of nrf5340 and nrf7002.
To start, I wanted to ensure that I am connecting the module correctly to the P20 custom SWD header on the dev kit. My goal is to flash the hello world sdk sample to the module. The problem I am having is that the module dopesnt appear to be connected, and I think I can confirm this using the JLinkExe (see output below).
I have things wired as follows:
P20 SWDIO -> module SWDIO
P20 SWDCLK -> module SWDCLK
P20 pin2 (VDD) -> module VCC
P20 pin3 (VTG) -> module VCC
P20 GND DETECT -> common GND
P1 GND ->common GND
module GND -> common GND
So as you can see, Im powering the module using the P20 pin2, as per the nordic documentation which states:
If it is inconvenient to have a separate power supply on the external board, the nRF7002 DK can supply power through pin 2 (VDD) of P20
(the full documentation for the nrf7002dk can be found here: https://www.farnell.com/datasheets/4628156.pdf)
I understand that the P20 pin2 will only provide 1.8v, so this feels like a catch22 situation because the MS12SF1 module requires ~3.v. If I power the module using the P20 header pin2, then it would seem Im not providing enough power to the module. Yet, if I power the module externally using a ~3v power supply, then there is a clear mismatch in voltage on the SWD line (1.8v vs 3v).
What can I do to solve this problem? My instinct tells me that I need to do one of the following:
1. logic level shifting on the swd line i.e 1.8v <> 3v
2. use a different dev kit that operates at 3v instead of 1.8v
3. just go ahead and try powering the module externally using 3v (and not simulataneously the 1.8v P20 pin2), and hope things dont get damaged.
What is the correct solution here?
FYI the reason I am confident that there is no connection being made between the dev kit and the module is that when i run JLinkExe, I always see the same output, whether the module is connected to the SWD line or not, i.e:
➜ hello_world_4 git:(master) ✗ JLinkExe
SEGGER J-Link Commander V9.74 (Compiled Sep 2 2026 12:36:32)
DLL version V9.74, compiled Sep 2 2026 12:35:17
Connecting to J-Link ...O.K.
Firmware: J-Link OB-nRF5340-NordicSemi compiled Jun 11 2026 13:12:28
Hardware version: V1.00
J-Link uptime (since boot): 0d 00h 00m 07s
S/N: 1050780352
License(s): RDI,FlashBP,FlashDL,JFlash,GDB
USB speed mode: Full speed (12 MBit/s)
VTref=3.300V
Type "connect" to establish a target connection, '?' for help
J-Link>connect
Please specify device / core. <Default>: NRF5340_XXAA_APP
Type '?' for selection dialog
Device>
Please specify target interface:
J) JTAG (Default)
S) SWD
T) cJTAG
TIF>s
Specify target interface speed [kHz]. <Default>: 4000 kHz
Speed>
Device "NRF5340_XXAA_APP" selected.
Connecting to target via SWD
ConfigTargetSettings() start
ConfigTargetSettings() end - Took 6us
InitTarget() start
InitTarget() end - Took 3.32ms
Found SW-DP with ID 0x6BA02477
DPIDR: 0x6BA02477
CoreSight SoC-400 or earlier
AP map detection skipped. Manually configured AP map found.
AP[0]: AHB-AP (IDR: Not set, ADDR: 0x00000000)
AP[1]: AHB-AP (IDR: Not set, ADDR: 0x00000000)
AP[2]: MEM-AP (IDR: Not set, ADDR: 0x00000000)
AP[3]: MEM-AP (IDR: Not set, ADDR: 0x00000000)
AP[0]: Core found
AP[0]: AHB-AP ROM base: 0xE00FE000
CPUID register: 0x410FD214. Implementer code: 0x41 (ARM)
Feature set: Mainline
Cache: No cache
Found Cortex-M33 r0p4, Little endian.
FPUnit: 8 code (BP) slots and 0 literal slots
Security extension: implemented
Secure debug: enabled
CoreSight components:
ROMTbl[0] @ E00FE000
[0][0]: E00FF000 CID B105100D PID 000BB4C9 ROM Table
ROMTbl[1] @ E00FF000
[1][0]: E000E000 CID B105900D PID 000BBD21 DEVARCH 47702A04 DEVTYPE 00 Cortex-M33
[1][1]: E0001000 CID B105900D PID 000BBD21 DEVARCH 47701A02 DEVTYPE 00 DWT
[1][2]: E0002000 CID B105900D PID 000BBD21 DEVARCH 47701A03 DEVTYPE 00 FPB
[1][3]: E0000000 CID B105900D PID 000BBD21 DEVARCH 47701A01 DEVTYPE 43 ITM
[1][5]: E0041000 CID B105900D PID 002BBD21 DEVARCH 47724A13 DEVTYPE 13 ETM
[1][6]: E0042000 CID B105900D PID 000BBD21 DEVARCH 47701A14 DEVTYPE 14 CSS600-CTI
[0][1]: E0040000 CID B105900D PID 000BBD21 DEVARCH 00000000 DEVTYPE 11 TPIU
Memory zones:
Zone: "Default" Description: Default access mode
Cortex-M33 identified.
J-Link>mem32 0x00000000 16
00000000 = 200017A0 00000B81 000044A5 00000B6D
00000010 = 00000B6D 00000B6D 00000B6D 00000B6D
00000020 = 00000000 00000000 00000000 00000C51
00000030 = 00000B6D 00000000 00000DED 00000B6D
00000040 = 00000E65 00000E65 00000E65 00000E65
00000050 = 00000E65 00000E65
The last part always looks the same, which to me says that I am always reading the dev kit, even when the module is connected to the P20 header, i.e:
J-Link>mem32 0x00000000 16
00000000 = 200017A0 00000B81 000044A5 00000B6D
00000010 = 00000B6D 00000B6D 00000B6D 00000B6D
00000020 = 00000000 00000000 00000000 00000C51
00000030 = 00000B6D 00000000 00000DED 00000B6D
00000040 = 00000E65 00000E65 00000E65 00000E65
00000050 = 00000E65 00000E65
If the module was being detected, then i expect the output of this command would predictable change whether the module is connected or not because we would be reading memory from either the dev kit of the module.