I have multiple working nRF24L01+ attached to ATMega328p based uC. All modules work fine and reliable.
Today, I changed the wires between one Nano clone and its nRF24L01+ module. No change to software. The “old” wires were approx. 10 cm long. The new wires are 50 cm and checked with DMM. The module is detected but the settings are wrong. Here the output of simple pingpair example with long wires:
Simple pingpair example Send a 'T' via Serial to transmit a single 'ping' STATUS = 0x06 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=3 TX_FULL=0 RX_ADDR_P0-1 = 0x3020202030 0x3020202030 RX_ADDR_P2-5 = 0xc1 0xc0 0xc0 0xc2 TX_ADDR = 0x3020202030 RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00 EN_AA = 0x1f EN_RXADDR = 0x00 RF_CH = 0x04 RF_SETUP = 0x00 CONFIG = 0x00 DYNPD/FEATURE = 0x1f 0x00 Data Rate = 1MBPS
Here what simple pingpair example looks with short wires:
Simple pingpair example Send a 'T' via Serial to transmit a single 'ping' STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 = 0x6f69646172 0x6f69646172 RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6 TX_ADDR = 0x6f69646172 RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00 EN_AA = 0x3f EN_RXADDR = 0x02 RF_CH = 0x4c RF_SETUP = 0x27 CONFIG = 0x0f DYNPD/FEATURE = 0x3f 0x04 Data Rate = 250KBPS
The latter is working, the former is not working.
When no nRF is attached, the output looks like that:
Simple pingpair example Send a 'T' via Serial to transmit a single 'ping' STATUS = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=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 = 0x00 0x00 0x00 0x00 0x00 0x00 EN_AA = 0x00 EN_RXADDR = 0x00 RF_CH = 0x00 RF_SETUP = 0x00 CONFIG = 0x00 DYNPD/FEATURE = 0x00 0x00 Data Rate = 1MBPS
First I thought “long wires, voltage drop, bad”. To fix that I used a base module (like shown here). Well, this did not help at all. Problem the same. I thought the length of wires 10 vs 50 cm should not matter when using the base module. Obviously I’m wrong.
But what happens here?
The base module provides 3.35V, the USB connection provides 4.70V. With the simple pingpair example started, I measured the following voltages on the pins with my DMM:
CE<>GND = 4.70V CSN<>CSN = 2.94V MOSI<>GND = 4.61V SCK<>GND = 0.10V MISO<>GND = 0.38V
Theses values are nearly the same when I use short wires, read varying by 0.05V.
I’m curious why the nRF is still detected but not working.
Maybe someone has come across this problem or simply know the reason.
Thanks & best