哪浀、佷羙 发表于 2012-8-20 15:05:38

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

最近做2.4G快崩溃了、、、、、、、、、~~~~(>_<)~~~~
单片机+一块24L01做接收机,3块24LE1做发射机,也就是3对1。
接收分别用的通道0、1、2, 现在通道0和1可以进行数据通讯 ,通道2怎么也调不通,期间有几次调通了,但是时间一长或者重新上电一下 就再也连接不上了, 再后来像走狗屎运一样 又连接上了、但是重上电一下又、、、、、、、、
程序是 借鉴论坛里的 在此基础上修改的,手册和程序都看了 N+1遍了 、现在彻底没信心了{:cry:} ,这个已经搞了很久了 一直 就卡在多通道收发这个地方 、小弟不才,望大虾们指点一二{:handshake:}、 、 、、
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*100+RX_Buf0*10+RX_Buf0;
                //if(RX_P_NO==0x00)LcdWriteAsc8_16_dan(6,72,0,shuzi_tab816);
                //if(RX_P_NO==0x02)LcdWriteAsc8_16_dan(6,80,0,shuzi_tab816);
                //if(RX_P_NO==0x04)LcdWriteAsc8_16_dan(6,89,0,shuzi_tab816);       
          SPI_RW_Reg(WRITE_REG+STATUS,sta);    //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
                Rf24l01_Flush_RX();                                       //清空无线接收缓冲区
                CE = 1;
        }               
        return revale;
}

ah2630263 发表于 2012-8-20 16:07:19

友情帮顶

wfknife 发表于 2013-2-23 15:22:10

请教您个问题。关于 24L01和 24LE1通信的问题。。
我调了很久 两个也不能通信。我都把手册翻了N遍了

wfknife 发表于 2013-2-23 15:22:35

我的 qq290727048 高手看见了请加下我请教一下。谢谢了

hl1200 发表于 2013-2-23 15:58:25

刚调完1对1的飘过,被最大发射次数坑了几天,这东东要清中断才肯继续工作。

30zero 发表于 2013-2-23 21:34:34

hl1200 发表于 2013-2-23 15:58 static/image/common/back.gif
刚调完1对1的飘过,被最大发射次数坑了几天,这东东要清中断才肯继续工作。 ...

能发一下程序吗? 592876981@qq.com

外卡传媒 发表于 2013-3-6 21:11:12

页: [1]
查看完整版本: 高手留步,还是关于nRF24L01+24LE1