天线|RF射频
直播中

李波

7年用户 1405经验值
私信 关注
[问答]

STM32关于nRF24L01令人发指的丢包问题如何解决

我有两套最小系统板 和一堆NRF24L01+的模块
我准备组成主从控制机器
然后我用NRF24L01模块去发送和接受数据的时候
发现接受的时候总会固定的出现读取数据错的时候,然后把数据给错过了
我直接上逻辑分析仪的图

求大神帮帮忙 = =

回帖(3)

李青妍

2020-6-2 12:23:13
数据丢失 一般是以下2个问题
1.收发不同步带来的丢失,比如发的太快了,数据量太多了,接收不过来了
2.就是本身24L01距离近 ,距离远了就容易丢包
举报

王旭

2020-6-2 12:41:32
发送部分我感觉应该没啥事
我就把接收的函数部分的代码传上来
[C] 纯文本查看 复制代码
u8 NRF_Rx_Dat(u8 *rxbuf){u8 state;int i;//à-¸ßòy½Åê1Äü·¢ËíÄ£ê½CE_High();state=SPI_NRF_ReadReg(STATUS);  SPI_NRF_WriteReg(NRF_WRITE_REG+STATUS,state);if(state&RX_OK){GPIO_SetBits(GPIOD,GPIO_Pin_0);SPI_NRF_ReadBuf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);SPI_NRF_WriteReg(FLUSH_RX,0xFF);GPIO_ResetBits(GPIOD,GPIO_Pin_0);return SUCCESS;}else{GPIO_SetBits(GPIOD,GPIO_Pin_0);GPIO_ResetBits(GPIOD,GPIO_Pin_0);return ERROR;}
以及接收的部分配置(发送部分的参数和他一样 稍微变化)
[C] 纯文本查看 复制代码
void NRF_RX_Mode(void){int i;CE_Low();SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01);SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,40);SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x24);SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG, 0x0f);CE_High();}
举报

王淑珍

2020-6-2 12:54:55
帮顶
举报

更多回帖

发帖
×
20
完善资料,
赚取积分