Hi there,
So, The reason nothing happens is that D14 and D15 are the NFC pins on the nRF52840, and those pins are not normal GPIO by default.
On the nRF52840, these are P0.09 and P0.10, and Nordic notes that they must be switched from NFC mode to GPIO mode before you can use them as regular pins.
So yes, they can be used as GPIO, but first you need to disable NFC pin mode.
What to do
For nRF52, the usual way is to enable:
CONFIG_NFCT_PINS_AS_GPIOS
That is the standard Nordic mechanism for making the NFC pins usable as GPIO
Important practical note
On Arduino cores, this is sometimes not exposed cleanly as a sketch-level option, because it is really a UICR / board configuration setting, not just a normal pinMode() call. That means:
pinMode(D14, OUTPUT);
digitalWrite(D14, HIGH);
by themselves may do nothing until the NFC function is disabled first.
Also worth noting
Seeed’s NFC wiki for the XIAO nRF52840 explicitly identifies the NFC pins as P0.09 and P0.10 and treats them as the NFC interface pair.
They will NOT work as GPIO until NFC is disabled.
Flash a sketch that forces NFC → GPIO using Nordic register:
#include <nrfx.h>
#include <nrf.h>
void setup() {
// Disable NFC, enable GPIO on P0.09 / P0.10
NRF_UICR->NFCPINS = 0xFFFFFFFE;
NVIC_SystemReset(); // Apply change
}
void loop() {}
Upload this ONCE
Board will reset
After that, pins behave as normal GPIO
Test sketch (blink both pins)
#define PIN_D14 14
#define PIN_D15 15
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Testing D14 / D15 GPIO...");
pinMode(PIN_D14, OUTPUT);
pinMode(PIN_D15, OUTPUT);
}
void loop() {
Serial.println("ON");
digitalWrite(PIN_D14, HIGH);
digitalWrite(PIN_D15, HIGH);
delay(1000);
Serial.println("OFF");
digitalWrite(PIN_D14, LOW);
digitalWrite(PIN_D15, LOW);
delay(1000);
}
input test (if they wired buttons)
#define PIN_D14 14
void setup() {
Serial.begin(115200);
pinMode(PIN_D14, INPUT_PULLUP);
}
void loop() {
Serial.println(digitalRead(PIN_D14));
delay(500);
}
Bottom Line…
- P0.09 / P0.10 default = NFC antenna pins
- They are disconnected from GPIO hardware
- Writing UICR flips them permanently to GPIO mode
Practical notes (from experience)
- This setting survives reset and reflash
- Only needs to be done once per board
- If they ever want NFC back → they must reprogram UICR
HTH
GL
PJ 
YMMV on the BSP used..