RF24L01接收问题

诶呦 2012-09-05 02:54:46
发送没有问题,STATUS状态寄存器中TX_DR位为1(数据发送完成中断);
但是接收位RX_DR怎么也不置位,代码如下:
void nRF24L01_RX_Mode()
{
RF_CE = 0;

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH);// 设置接收地址

SPI_RW_Reg(WRITE_REG + EN_AA, 0x00); // 不使用自动应答
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能Pipe0
SPI_RW_Reg(WRITE_REG + SETUP_AW, 0x03); // 5字节的地址
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x00); // 禁止重发
SPI_RW_Reg(WRITE_REG + RF_CH, 20); // 设置工作通道频率(收发必须一致)
SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // 设置Pipe0接收通道有效数据宽度
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // 设置射频寄存器
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // 接收

RF_CE = 1;
Delay_us(150);
}


接收时,IRQ一直为高,接收不到数据,导致这种情况的原因有什么?谢谢
...全文
240 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你好,最近也在弄24l01,我这里也是接收程序调试不成功,读取STATUS总是0x0e,能不能帮助我一下呢?我qq是742185167,真心感谢
Markerhao 2012-11-25
  • 打赏
  • 举报
回复
还是我.....我也调到这步了,发那变看寄存器IRQ是对的,接收这边STATUS始终为0x0e,上面说的接收状态转换太慢
 while(!(nRF24L01_RxPacket(RX_BUF))); 
接收端我就让他这么反复查询STATUS,这样会出现慢的情况吗?还有上面说的距离过近过近也不行啊?
诶呦 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
接收时,IRQ一直为高,接收不到数据,导致这种情况的原因有什么?谢谢

1.射频部分配置不一致
2.进入接收状态过慢,错过接收时间
3.距离过远或远近
[/Quote]

经过几天的研究基本已经了解了nRF24L01,确实lbing7所说,接收状态转换过慢,错过了接收时间
lbing7 2012-09-10
  • 打赏
  • 举报
回复
接收时,IRQ一直为高,接收不到数据,导致这种情况的原因有什么?谢谢

1.射频部分配置不一致
2.进入接收状态过慢,错过接收时间
3.距离过远或远近
诶呦 2012-09-05
  • 打赏
  • 举报
回复
OK,大家速度来接分

3,846

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧