我有两个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)可以毫无问题地接收数据包。所以,我确定问题出在接收方。
BTW 2,我使用sdcc 3.4.0,stm8flash和STM8S_StdPeriph_Driver
答案 0 :(得分:0)
克隆的IC有一个大问题。如果您看一下原始数据表,会有一个错字,它会将w.r.t.的一位倒置。 CRC。制造克隆芯片的人员过于严格地遵循规范,并实际上在硬件中实现了该错误。如果搜索“ fake nrf24l01”之类的东西,您会发现各种各样的文章和建议。最简单的方法是禁用CRC,但是,我到处搜索并发现了真正的零件,并且CRC起作用了。