Hi everyone,
I'm incredibly stuck trying to get an ESP32-S3 to talk to an NRF24L01+PA+LNA module. My goal is simply to get radio.begin() to return true and establish basic SPI communication so I can move on to sending data, but the radio absolutely refuses to initialize.
I have triple-checked my wiring and tried mapping custom SPI pins, but I'm just getting my failure message in the Serial Monitor.
My Hardware:
- Microcontroller: ESP32-S3 Dev Board (Using the hardware "COM" port for uploading and Serial Monitor, with
USB CDC On Bootset to Disabled). - Radio Module: NRF24L01+PA+LNA (The black version with the external antenna).
- Power: I am using the NRF24L01 Voltage Regulator Baseboard Adapter. It is properly supplied with 5V, so the NRF24 should be getting a stable 3.3V.
My Wiring (ESP32-S3 -> NRF24):
- VCC -> 5V (ESP32-S3)
- GND -> GND (ESP32-S3)
- CE -> GPIO 16 (or any digital pin)
- CSN -> GPIO 17 (or any digital pin)
- SCK -> GPIO 12
- MISO -> GPIO 13
- MOSI -> GPIO 11
Code
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 16
#define CSN_PIN 17
RF24 radio(CE_PIN, CSN_PIN);
const byte address[6] = "00001";
void setup() {
Serial.begin(115200);
radio.begin();
if (radio.isChipConnected()) {
Serial.println("nRF24L01 connected!");
} else {
Serial.println("nRF24L01 not responding!");
while (1); // Halt if not connected
}
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN); // Use MIN for testing close together
radio.startListening();
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
}
}
What I've already tried / verified:
- Power is stable: Since I'm using the dedicated baseboard adapter, standard 3.3V brownout issues shouldn't be the culprit.
- Serial Monitor is working: I can see the "CHECKING RADIO" and "FAILED" text perfectly, so it's not a serial port issue.
- Wiring continuity: Checked that MISO is actually going to MISO, etc., and that there are no crossed jumper wires.
- Raw SPI test: I bypassed the library and did a raw
SPI.transferto read the CONFIG register, and it just returned0x00/0xFF, meaning the ESP32 is basically talking to a brick wall.
My Suspicions: Since power is being handled by the adapter, I suspect this is strictly an SPI communication issue. Is there a specific quirk with the SPI.begin(SCK, MISO, MOSI) function on the ESP32-S3 that I am missing? Do I need to manually define the HSPI or FSPI bus for this specific board?
Any help or pointers would be massively appreciated!
UPDATE!!!
I try to diagnose and I discover that there is no power
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce2820,len:0x10cc
load:0x403c8700,len:0xc2c
load:0x403cb700,len:0x30c0
entry 0x403c88b8
--- TESTING CUSTOM SAFE PINS ---
FAILED: Radio not responding.
--- NRF24 DETAILED DIAGNOSTICS ---
SPI Speedz = 10 Mhz
STATUS = 0x00 RX_DR=0 TX_DS=0 TX_DF=0 RX_PIPE=0 TX_FULL=0
RX_ADDR_P0-1 = 0x0000000000 0x0000000000
RX_ADDR_P2-5 = 0x00 0x00 0x00 0x00
TX_ADDR = 0x0000000000
RX_PW_P0-6 = 0xff 0xff 0xf8 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x00
RF_CH = 0x00
RF_SETUP = 0x00
CONFIG = 0x00
DYNPD/FEATURE = 0xff 0xff
Data Rate = 1 MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MIN
ARC = 0



