搜索
bottom↓
回复: 6

高手留步,还是关于nRF24L01+24LE1

[复制链接]

出0入0汤圆

发表于 2012-8-20 15:05:38 | 显示全部楼层 |阅读模式
最近做2.4G快崩溃了、、、、、、、、、~~~~(>_<)~~~~
单片机+一块24L01做接收机,3块24LE1做发射机,也就是3对1。
接收分别用的通道0、1、2, 现在通道0和1可以进行数据通讯 ,通道2怎么也调不通,期间有几次调通了,但是时间一长或者重新上电一下 就再也连接不上了, 再后来像走狗屎运一样 又连接上了  、但是重上电一下又、、、、、、、、
程序是 借鉴论坛里的 在此基础上修改的  ,手册和程序都看了 N+1遍了 、现在彻底没信心了 ,这个已经搞了很久了 一直 就卡在多通道收发这个地方 、小弟不才,望大虾们指点一二  、 、 、、
i看坛子里 说有调通 多通道的,但是 大都是 2对1 ,好像多发一收的真没有   、 、
接收部分程序:
/*************************************************************************/
//接收模式
void nRF24L01_SetRXMode()
{
    uchar revale=0,RX_P_NO=0;//接收通道号;
        CE=0;
        SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS0, RX_ADR_WIDTH);  // 接收设备接收通道0使用和发送设备相同的发送地址
        SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS1, RX_ADR_WIDTH);  // 接收设备接收通道1使用和发送设备相同的发送地址
          SPI_Write_Buf(WRITE_REG + RX_ADDR_P2, RX_ADDRESS2, RX_ADR_WIDTH);  // 接收设备接收通道2使用和发送设备相同的发送地址

        SPI_RW_Reg(WRITE_REG + RX_PW_P0,RX_PLOAD_WIDTH);  // 接收通道0选择和发送通道相同有效数据宽度            
    SPI_RW_Reg(WRITE_REG + RX_PW_P1,RX_PLOAD_WIDTH);  // 接收通道1选择和发送通道相同有效数据宽度
          SPI_RW_Reg(WRITE_REG + RX_PW_P2,RX_PLOAD_WIDTH);  // 接收通道2选择和发送通道相同有效数据宽度
        CE=1;
}
       
/******************************************************************************************************/
/*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
/*功能:数据读取后放如rx_buf接收缓冲区中
/******************************************************************************************************/
uchar nRF24L01_RxPacket()
{         
    uchar revale=0,RX_P_NO=0;//接收通道号;
        sta=SPI_Read(STATUS);         // 读取状态寄存其来判断数据接收状况                
        if(RX_DR)                                 // 判断是否接收到数据
        {
            RX_P_NO=sta&0x0e;    //获取通道号
                CE = 0;                          //SPI使能
                switch(RX_P_NO)      //判断是哪一个通道传过来的数据
            {
                   case 0x00:SPI_Read_Buf(RD_RX_PLOAD,RX_Buf0,RX_PLOAD_WIDTH);break;      //判断通道0
                   case 0x02:SPI_Read_Buf(RD_RX_PLOAD,RX_Buf1,RX_PLOAD_WIDTH);break;     //判断通道1
                   case 0x04:SPI_Read_Buf(RD_RX_PLOAD,RX_Buf2,RX_PLOAD_WIDTH);break;    //判断通道2
                   default:break;
                }
                revale =1;                        //读取数据完成标志
                //T_data=RX_Buf0[2]*100+RX_Buf0[1]*10+RX_Buf0[0];
                //if(RX_P_NO==0x00)LcdWriteAsc8_16_dan(6,72,0,shuzi_tab816[1]);
                //if(RX_P_NO==0x02)LcdWriteAsc8_16_dan(6,80,0,shuzi_tab816[2]);
                //if(RX_P_NO==0x04)LcdWriteAsc8_16_dan(6,89,0,shuzi_tab816[3]);       
            SPI_RW_Reg(WRITE_REG+STATUS,sta);    //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
                Rf24l01_Flush_RX();                                         //清空无线接收缓冲区
                CE = 1;
        }                 
        return revale;
}

出0入0汤圆

发表于 2012-8-20 16:07:19 | 显示全部楼层
友情帮顶

出0入0汤圆

发表于 2013-2-23 15:22:10 | 显示全部楼层
请教您个问题。关于 24L01和 24LE1通信的问题。。
我调了很久 两个也不能通信。我都把手册翻了N遍了

出0入0汤圆

发表于 2013-2-23 15:22:35 | 显示全部楼层
我的 qq  290727048 高手看见了请加下我请教一下。谢谢了

出0入0汤圆

发表于 2013-2-23 15:58:25 来自手机 | 显示全部楼层
刚调完1对1的飘过,被最大发射次数坑了几天,这东东要清中断才肯继续工作。

出0入0汤圆

发表于 2013-2-23 21:34:34 | 显示全部楼层
hl1200 发表于 2013-2-23 15:58
刚调完1对1的飘过,被最大发射次数坑了几天,这东东要清中断才肯继续工作。 ...

能发一下程序吗? 592876981@qq.com
头像被屏蔽

出0入0汤圆

发表于 2013-3-6 21:11:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 13:34

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

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