1

I have two STM8s105 MCUs and two NRF24L01+ modules. Set one as sender:

CONFIG: 0x3A 
EN_AA: 0x00 
EN_RXADDR: 0x03 
SETUP_AW: 0x03 
SETUP_RETR: 0x00 
RF_CH: 0x00 
RF_SETUP: 0x07 
STATUS: 0x2E 
OBSERVE_TX: 0x00 
CD: 0x00 
RX_ADDR_P0: 0xCC 0xCC 0xCC 0xCC 0xCC 
RX_ADDR_P1: 0xCC 0xCC 0xCC 0xFF 0xFF 
RX_ADDR_P2: 0xC3 
RX_ADDR_P3: 0xC4 
RX_ADDR_P4: 0xC5 
RX_ADDR_P5: 0xC6 
TX_ADDR: 0xCC 0xCC 0xCC 0xCC 0xCC 
RX_PW_P0: 0x20 
RX_PW_P1: 0x20 
RX_PW_P2: 0x00 
RX_PW_P3: 0x00 
RX_PW_P4: 0x00 
RX_PW_P5: 0x00 
FIFO_STATUS: 0x11 
DYNPD: 0x00 
FEATURE: 0x00 
NRF24L01 Send Data: 
0x20 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 
0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F 

One as receiver with 8 bits CRC enabled and ESB disabled:

CONFIG: 0x3B 
EN_AA: 0x00 
EN_RXADDR: 0x03 
SETUP_AW: 0x03 
SETUP_RETR: 0x00 
RF_CH: 0x00 
RF_SETUP: 0x07 
STATUS: 0x0E 
OBSERVE_TX: 0x00 
CD: 0x00 
RX_ADDR_P0: 0xCC 0xCC 0xCC 0xCC 0xCC 
RX_ADDR_P1: 0xCC 0xCC 0xCC 0xFF 0xFF 
RX_ADDR_P2: 0xC3 
RX_ADDR_P3: 0xC4 
RX_ADDR_P4: 0xC5 
RX_ADDR_P5: 0xC6 
TX_ADDR: 0xE7 0xE7 0xE7 0xE7 0xE7 
RX_PW_P0: 0x20 
RX_PW_P1: 0x20 
RX_PW_P2: 0x00 
RX_PW_P3: 0x00 
RX_PW_P4: 0x00 
RX_PW_P5: 0x00 
FIFO_STATUS: 0x11 
DYNPD: 0x00 
FEATURE: 0x00

The receiver cannot receive any packet.

But when the CRC disabled, it works fine:

CONFIG: 0x33 
EN_AA: 0x00 
EN_RXADDR: 0x03 
SETUP_AW: 0x03 
SETUP_RETR: 0x00 
RF_CH: 0x00 
RF_SETUP: 0x07 
STATUS: 0x02 
OBSERVE_TX: 0x00 
CD: 0x01 
RX_ADDR_P0: 0xCC 0xCC 0xCC 0xCC 0xCC 
RX_ADDR_P1: 0xCC 0xCC 0xCC 0xFF 0xFF 
RX_ADDR_P2: 0xC3 
RX_ADDR_P3: 0xC4 
RX_ADDR_P4: 0xC5 
RX_ADDR_P5: 0xC6 
TX_ADDR: 0xE7 0xE7 0xE7 0xE7 0xE7 
RX_PW_P0: 0x20 
RX_PW_P1: 0x20 
RX_PW_P2: 0x00 
RX_PW_P3: 0x00 
RX_PW_P4: 0x00 
RX_PW_P5: 0x00 
FIFO_STATUS: 0x10 
DYNPD: 0x00 
FEATURE: 0x00 
NRF24L01 Status: 0x0E 
NRF24L01 Data Received: 
0x20 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 
0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F

Please help me, thanks!

BTW, I have a STC89C52 MCU board with integrated NRF24L01+ module. This board(CRC enabled) can receive the packet without any problem. So, I'm sure the problem is on the receiver side.

BTW 2, I use sdcc 3.4.0, stm8flash and STM8S_StdPeriph_Driver

Arthur
  • 11
  • 1

1 Answers1

0

There is a big issue with cloned ICs. If you look at the original data sheet, there was a typo which inverted one of the bits w.r.t. the CRC. The people making the clone chip followed the spec too closely and actually implemented the bug in hardware. If you search for things like "fake nrf24l01" you will find all sorts of articles and suggestions. The easiest is to disable the CRC, however, I searched around and found genuine parts and the CRCs work.

Joe Thomas
  • 325
  • 1
  • 7