标题: 两个nRF24L01+51单片机无线通讯没反应 求帮助 [打印本页]

作者: 许兴堂    时间: 2019-5-15 22:38
标题: 两个nRF24L01+51单片机无线通讯没反应 求帮助
我用两个24l01在51单片机上进行无线通讯,就最简单的按键调试,2401也接了3.3的稳压模块,为什么没反应…应该是自检也没过,蜂鸣器响应该是没检测到2401,那应该怎么办
作者: 3448208832    时间: 2019-5-16 10:02
建议首先检查硬件接线是否和程序设定的相同;
然后,可以在程序中加一些LED灯的程序,判断程序到底走到了哪一步,死在了哪一步。
最后,建议亲多用几个模块测试,避免其中有损坏的。
作者: 许兴堂    时间: 2019-5-16 14:01
3448208832 发表于 2019-5-16 10:02
建议首先检查硬件接线是否和程序设定的相同;
然后,可以在程序中加一些LED灯的程序,判断程序到底走到了 ...

检测不到2401蜂鸣器就会响 为什么会 检测不到呢
作者: liushangming    时间: 2019-5-16 14:31
在程序中加上串口打印,先确定程序死到哪了
作者: hq987333864    时间: 2019-5-16 15:35
我有STM32 + 24l01的双向快速通信的工程,自己摸索出来的,用在无人机数传,需要的话私信我,我回去发你
作者: 许兴堂    时间: 2019-5-16 16:05
liushangming 发表于 2019-5-16 14:31
在程序中加上串口打印,先确定程序死到哪了

发送

#include<reg52.h>
#include"NRF_24L01.h"

sbit led=P1^0;         
sbit key=P3^0;
uchar gled[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};


void main(void)
{
        unsigned char t;
        unsigned char tmp_buf[33]={0};
        unsigned char buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};

        init_nrf24l01_io();           //初始化
        delay(20);
        SPI_Write_Buf(WRITE_REG+TX_ADDR,buf,5);           //数据存入寄存器
    SPI_Read_Buf(TX_ADDR,rx_buf,5);                             //数据读出寄存器
       

        for(t=0;t<5;t++)if(rx_buf[t]!=0XA5)break;
       
        if(t==5)  {led=0;delay(20000);led=1;}           //验证数据,正常则led闪烁

        ifnnrf_tx_mode();                                                    //设为TX模式
        while(1)
        {       
                if(key==0)                                                      
                {       
                        led=0;
                        for(t=0;t<33;t++)
                        {
                        tmp_buf[t]=0;
                        }
                        tmp_buf[31]='a';                                  

                        NRF24L01_TxPacket(tmp_buf);                                   //发送数据
                        while(NRF24L01_TxPacket(tmp_buf)!=TX_OK);  //发送失败则一直发送,直到对方接受成功为止
                       
                        tmp_buf[31]=0;               
                        led=1;
                }                            
        }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
/***********************
小板测试时如果没有效果
就将2.4G拔下,在插上,按下复位,再次发送数据即可

如果发送数据时led闪烁,应该是发送数据的按键没有去抖

***************************/
#include<reg52.h>
#include"NRF_24L01.h"

sbit led=P1^0;

void main(void)
{
unsigned char  tmp_buf[33];
        delay(200);                 
        init_nrf24l01_io();                //初始化
        delay(200);         
        led=1;
        ifnnrf_rx_mode();                //设置为RX模式
        while(1)
        {
                if(NRF24L01_RxPacket(tmp_buf)==RX_OK)//一旦接收到信息,则显示出来.
                {       
                        if(tmp_buf[31]=='a') led=(!led);   //led取反
                }               
        }                                                                     
}

  就这么最简单的程序 都会失败
作者: zhaoyun_me0    时间: 2019-8-2 15:59
我也是在找这个程序,也是搞不出来
作者: csmyldl    时间: 2019-8-2 19:03
我早几天调试出来了,很好用,http://www.51hei.com/bbs/dpj-167239-1.htm 需注意端口输入方式
作者: suncat0504    时间: 2019-8-2 19:37
我建议楼主先不要用单片机。先用串口工具通过AT指令方式,调好波特率,对接协议之类的设置。在用这种方式调通以后,再换成单片机来控制,这样相对就容易多了。换成单片机的时候,可以一边继续保持串口工具,一边是用单片机,OK以后,再全都换成单片机的。我的就是这么调试过来的。
作者: suncat0504    时间: 2019-8-2 19:38
我这边用的是AT89C2051,汇编语言模式。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1