搜索
bottom↓
回复: 16

调试NRF24L01已经三个星期了,还是无法接受数据,抓狂了...

[复制链接]

出0入0汤圆

发表于 2010-11-24 21:23:35 | 显示全部楼层 |阅读模式
最近在帮老师做一个无线音频通讯的项目,射频部分用NRF24L01,MCU是用M16。但是调试了两个星期,还是没有结果,快疯了,现在只能想大家求助。

现在的问题是两个24L01无法实现单向数据传输,已排除硬件无问题。
    首先,分别对接受和发射模块的TX_ADDR和RX_PW_P0地址寄存器写入相同的地址,之后再读出地址,读出的地址和写入的地址一致并且频率,地址宽度,传输速率,校验选项,数据长度设置都相同。
发射端使能MAX_RT中断,SETUP_RETR为默认的0x03,接收端无法接受到数据,发射端能触发MAX_RT中断。接收端能CD能检测到发射端的信号(通过IO口判断CD状态
,4个脉冲中后三个重发,与SETUP_RETR设置符合),可却无法接收到发射的数据。

(原文件名:波形图.jpg)
下面是发射和接收的配置
void TX_Mode(void)
{
        CE_L;
        WIRTE_BUF(TX_ADDR + WRITE,ADDRESS,ADR_WIDTH);//设置发射地址
        WIRTE_BUF(RX_ADDR_P0 + WRITE,ADDRESS,ADR_WIDTH);//设置接收地址
        SPI_RW_REG(WRITE + EN_AA, ENAA_P0); // 数据通道 0 自动应答允许
        SPI_RW_REG(WRITE + EN_RXADDR, ERX_P0); // 接收数据通道 0 允许
        SPI_RW_REG(WRITE + SETUP_AW, 0x03); //地址宽度
        SPI_RW_REG(WRITE + RF_CH, frequency); // 2 Mbps 0dBm低噪声放大器增益
        SPI_RW_REG(WRITE + RF_SETUP, 0x07);       
        SPI_RW_REG(WRITE + RX_PW_P0, 31);       
        SPI_RW_REG(WRITE + CONFIG, EN_CRC + CRCO + PWR_UP);
}
void send_data(uchar *address, uchar *buffer,uchar length)
{
        CE_L;
        CSN_L;
        SPI_RW_REG(FLUSH_TX);//清除发射FIFO的数据
        CSN_H;
        WIRTE_BUF(RX_ADDR_P0 + WRITE,address,length);//写接收地址
        WIRTE_BUF(TX_ADDR + WRITE,address,length);//写发射地址
        WIRTE_BUF(WR_TX_PLOAD,buffer,length);//向FIFO写数据
        CE_H;//激活发射
        delay_us(20);
        //CE_L;       
}

void RX_Mode(void)
{
        CE_L;
        WIRTE_BUF(TX_ADDR + WRITE,ADDRESS,ADR_WIDTH);//设置发射地址
        WIRTE_BUF(RX_ADDR_P0 + WRITE,ADDRESS,ADR_WIDTH);//设置接收地址
        SPI_RW_REG(WRITE + EN_AA, ENAA_P0);// 数据通道 0 自动应答允许
        SPI_RW_REG(WRITE + EN_RXADDR, ERX_P0);// 接收数据通道 0 允许
        SPI_RW_REG(WRITE + SETUP_AW, 0x03);//地址宽度
        SPI_RW_REG(WRITE + RF_CH, frequency);//频率
        SPI_RW_REG(WRITE + RF_SETUP, 0x07);// 2 Mbps 0dBm低噪声放大器增益       
        SPI_RW_REG(WRITE + RX_PW_P0, 31);        //数据长度
        SPI_RW_REG(WRITE + CONFIG, EN_CRC + CRCO + PWR_UP+ PRIM_RX);
        CE_H;
}
下面是代码
代码ourdev_600211J5FV6X.rar(文件大小:37K) (原文件名:NRF24l01A.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-11-27 17:20:28 | 显示全部楼层
我正在调试,配置寄存器很有讲究,也还没通过中。。。

出0入0汤圆

 楼主| 发表于 2010-11-28 20:05:31 | 显示全部楼层
刚刚发现按照上面的发射配置来操作的话,单纯进入发射模式,发射完后RX FIFO是满的,很奇怪的问题

出0入0汤圆

 楼主| 发表于 2010-11-28 20:14:24 | 显示全部楼层
看错文档,不过结果还是一样..继续调试

出0入0汤圆

发表于 2011-4-24 21:31:24 | 显示全部楼层
回复【3楼】rahpven  
-----------------------------------------------------------------------

现在怎么样了?成功了吧?

出0入0汤圆

发表于 2011-8-18 17:15:34 | 显示全部楼层
看不出有什么问题啊?

出0入0汤圆

发表于 2012-11-30 16:49:48 | 显示全部楼层
我去。。。。。。。。。。。。。。

出0入0汤圆

发表于 2012-12-5 02:09:29 | 显示全部楼层
改天发个我正在用的代码…尼玛还3星期…

出0入0汤圆

发表于 2012-12-6 16:17:06 | 显示全部楼层
ohha3026 发表于 2012-12-5 02:09
改天发个我正在用的代码…尼玛还3星期…

我也遇到相同问题!

出0入0汤圆

发表于 2012-12-9 21:44:37 | 显示全部楼层
void send_data(uchar *address, uchar *buffer,uchar length)
{
        CE_L;
        CSN_L;
        SPI_RW_REG(FLUSH_TX);//清除发射FIFO的数据
        CSN_H;
        WIRTE_BUF(RX_ADDR_P0 + WRITE,address,length);//写接收地址
        WIRTE_BUF(TX_ADDR + WRITE,address,length);//写发射地址

        WIRTE_BUF(WR_TX_PLOAD,buffer,length);//向FIFO写数据
        CE_H;//激活发射
        delay_us(20);
        //CE_L;        
}

改为
WIRTE_BUF(RX_ADDR_P0 + WRITE,address,ADR_WIDTH);//写接收地址
WIRTE_BUF(TX_ADDR + WRITE,address,ADR_WIDTH);//写发射地址

出0入0汤圆

发表于 2012-12-21 23:50:48 | 显示全部楼层
这个是我用的,其中24L01.h和spi.h是nRf2401能用到的
具体的自己看吧
ps:这是我用atmega16模拟的usb 其中就有无线传输,我也没单独发一起发吧 艹

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-4 20:00:43 | 显示全部楼层
看看是电源的问题吧,是不是需要加电容呀,0。1uf的和10uf的
头像被屏蔽

出0入0汤圆

发表于 2013-2-28 18:51:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-3-13 00:45:48 来自手机 | 显示全部楼层
我毕设也会用到,绑定

出0入0汤圆

发表于 2013-3-15 09:31:45 | 显示全部楼层
有没有频谱仪呀,看看发射出来的波形对不对,两个波形不一致的话也是收不到的,感觉你这个应该是射频方面的问题,不是寄存器配置问题,射频的寄存器配置应该很简单的。

出0入0汤圆

发表于 2013-4-8 10:41:15 | 显示全部楼层
如果采用自动重发,p0应该和你的发送地址一样。

出0入0汤圆

发表于 2013-4-8 17:36:21 | 显示全部楼层
nrf几个关键点:
1。SPI模式必须正确,一点不能出错。必须符合数据手册。
2。配置可参考成熟的模块程序的配置方法。
3。电源品质问题会导致严重的干扰和错误。
4。无论是传输还是接收,在理论上都是一个节点。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 03:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表