1

我有两个 STM8s105 MCU 和两个 NRF24L01+ 模块。设置一个为发件人:

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 

一个作为接收器,启用 8 位 CRC 并禁用 ESB:

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

接收方无法接收任何数据包。

但是当 CRC 被禁用时,它工作正常:

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

请帮助我,谢谢!

顺便说一句,我有一个带有集成 NRF24L01+ 模块的 STC89C52 MCU 板。该板(启用CRC)可以毫无问题地接收数据包。所以,我确定问题出在接收端。

顺便说一句 2,我使用 sdcc 3.4.0、stm8flash 和 STM8S_StdPeriph_Driver

4

1 回答 1

0

克隆 IC 存在一个大问题。如果您查看原始数据表,有一个错字将 CRC 中的一个位反转。制造克隆芯片的人过于严格地遵循规范,实际上是在硬件中实现了这个错误。如果你搜索“fake nrf24l01”之类的东西,你会发现各种各样的文章和建议。最简单的方法是禁用 CRC,但是,我四处搜索并找到了正品部件,并且 CRC 可以正常工作。

于 2020-01-13T22:01:44.320 回答