标题:
用STC89/STC12单片机驱动nRF24L01发送状态总是1E
[打印本页]
作者:
michaelchain
时间:
2021-8-26 17:53
标题:
用STC89/STC12单片机驱动nRF24L01发送状态总是1E
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, 连能对比参考的都没有.
作者:
michaelchain
时间:
2021-8-29 12:15
已解决.
最后排查出来问题的根源在于用的TTL2USB兼容性不好, PL2303这个USB转串口不太靠谱.
测试的时候NRF24L01的3.3V都是从USB转串口的3.3V上取的.
原先测的时候用的PL2303, 今天换成了CH340的USB转串口, 再测状态就是2E了.
作者:
十点差三分
时间:
2021-10-24 16:03
michaelchain 发表于 2021-8-29 12:15
已解决.
最后排查出来问题的根源在于用的TTL2USB兼容性不好, PL2303这个USB转串口不太靠谱.
测试的时候N ...
我的51程序现在也是这样,返回的是1E,然后感觉电源也比较稳啊,不知道出什么问题了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1