nRF24L01是个很常见的无线模块, 可能版里大部分大佬都用过, 所以想在这里问问.
STC12的代码在这
https://github.com/IOsetting/HML_FwLib_STC12/blob/master/example/spi/spi_nrf24l01.c
如果要用STC89, 只需要改改SPI的部分, 因为STC89不带硬件SPI,需要用软实现
发送状态的配置
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_RX_PW_P0, NRF24_PLOAD_WIDTH);
NRF24L01_Write_Reg(NRF24_CMD_FLUSH_RX, 0xff);
NRF24L01_Write_From_Buf(NRF24_CMD_REGISTER_W + NRF24_REG_TX_ADDR, (uint8_t *)TX_ADDRESS, NRF24_ADDR_WIDTH);
NRF24L01_Write_From_Buf(NRF24_CMD_REGISTER_W + NRF24_REG_RX_ADDR_P0, (uint8_t *)TX_ADDRESS, NRF24_ADDR_WIDTH);
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_EN_AA, 0x3f);
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_EN_RXADDR, 0x3f);
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_SETUP_RETR, 0x0a);
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_RF_CH, 40);
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_RF_SETUP, 0x07);
NRF24L01_Write_Reg(NRF24_CMD_REGISTER_W + NRF24_REG_CONFIG, 0x0E);
用这个配置, 发送消息, 对方NRF24L01能正常接收, 但是本机看到的状态永远是1E, 也就是进行了多次尝试达到最大尝试次数
对于同样的这片nRF24L01, 我在STM32上也是用的同样的配置, 但是发送的结果状态就是对的, 稳稳的一直是2E, 也就是发送并正确收到ACK
对应STM32F401CCU6的代码在这里
https://github.com/IOsetting/stm32f401-wireless-car/blob/main/car-control/hardware/nrf24l01.c
求教这可能是什么问题?
如果有能在STC89/STC12上, nRF24L01发送能得到2E状态码的例子, 也麻烦分享一下, 我在网上找了好几个例子, 全都是返回1E, 连能对比参考的都没有.
--
FROM 60.253.242.*