NRF24L01+ 1M和2M可以正常通信,为什么250kbps不行呢?以下是配置代码:
RF_CE =0;Delay_us(100);
SPI_Read_Buf(TX_ADDR, buf, TX_ADR_WIDTH+1);//debug 测试原来的本地地址:复位值是:0xE7 0xE7 0xE7 0xE7 0xE7
SPI_WR_Reg(WRITE_REG + CONFIG, 0x02);
Delay_us(100);
SPI_WR_Reg(WRITE_REG + CONFIG, 0x3f);
SPI_WR_Reg(WRITE_REG + EN_AA, 0x00); //频道0自动 ACK应答允许
SPI_WR_Reg(WRITE_REG + EN_RXADDR, 0x01); //允许接收地址只有频道0,如果需要多频道可以参考Page21
SPI_WR_Reg(WRITE_REG + SETUP_AW,0x02);
SPI_WR_Reg(WRITE_REG + RF_CH,0x22); // 设置信道工作为2.4GHZ,收发必须一致
SPI_WR_Reg(WRITE_REG + SETUP_RETR,0xf0); //设置发射速率为250kpbs,发射功率为最大值0dB
SPI_WR_Reg(WRITE_REG + RF_SETUP,0x27); //设置发射速率为250kpbs,发射功率为最大值0dB
SPI_WR_Reg(WRITE_REG + NRFRegSTATUS,0x0e);
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址
SPI_WR_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节
SPI_WR_Reg(WRITE_REG + FIFO_STATUS, 0x11);
RF_CSN=0;
NRF24SPI_Send_Byte(0xe2);//flushrx
RF_CSN=1;
SPI_WR_Reg(WRITE_REG + CONFIG, 0x3f);
RF_CE =1; 在我印象中,24L01只有1M和2M两种速率吧 24L01+ 有二百五速率 大家帮忙啊 我也是遇到这个问题 经过试验 把寄存器配置成0x2f通信就正常了
即 SPI_WR_Reg(WRITE_REG + RF_SETUP,0x2f);
但是根据手册 这样的设置是保留的
期待大虾的解答 就改那个寄存器就可以了,好好看下命令。 mark 回复【6楼】benladn911 AVR猎手
-----------------------------------------------------------------------
手册里写的是这样的:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_604139H92GED.jpg
(原文件名:2.jpg)
现在的问题是将设置成10时 发现并不能正常通信 (只能在上电后接收1次 以后就收不到了) 而1M或2M就完全正常
我将设置成11后测试(我想这应该就是250kpbs的模式了) 发现一切正常
昨晚在校园里做了距离测试 直线距离大约在900米左右吧 发射端放在6楼阳台的 我将发射端的设置成11后,将接收端的分别设置成00,01,10,发现都不能接收数据。而只有将接收端设置为11时菜能正常通信。
由此我相信 11 就是250kpbs(或者所谓的Reserved)的正确设置。
不过这样的话 手册似乎就有些问题了 而手册我是从官网下载的。
求解答~ NRFWriteReg(W_REGISTER+RF_SETUP,0x26); // 数据传输率250Kbps,发射功率0dBm,低噪声放大器增益
你再好好检查下吧,以上是我的设置。可以正常通信。两个模块的设置参数一直即可。 回复【10楼】benladn911 AVR猎手
-----------------------------------------------------------------------
奇了 我按照你说的设置 跟先前的结果一样 只能在上电时接收一次 之后就不行了
设置成这样 SPI_WR_Reg(WRITE_REG + RF_SETUP,0x2f); 就一切正常了
另外 你的设置 NRFWriteReg(W_REGISTER+RF_SETUP,0x26); 与LZ的设置 SPI_WR_Reg(WRITE_REG + RF_SETUP,0x27);
两者应该没有差别的。。。RF_SETUP的第0位是保留位。。。 mark 回复【8楼】chinmel 朱宁
-----------------------------------------------------------------------
手册传上来!! 可以通讯上的 我经常设置成0X26 一点问题没
不过有51单片机 测试32BYTE 250KBPS的时候 读取数据时间需要加长
其它的没什么区别
没用到自动应带的 相关寄存器 都设置为0或则 屏蔽掉 使用默认的设置就好 楼主还得细心 SPI_RW_Reg(W_REGISTER+RF_SETUP,(0x03<<1)|(0<<3)|(1<<5));//250Kbps,0dBm
--------------------------------------------
我使用上面的工作一直很正常。 我也发现手册有这问题,求解答
页:
[1]