標題: 兩個nRF24L01+51單片機無線通訊沒反應 求幫助 [打印本頁]

作者: 許興堂    時間: 2019-5-15 22:38
標題: 兩個nRF24L01+51單片機無線通訊沒反應 求幫助
我用兩個24l01在51單片機上進行無線通訊,就最簡單的按鍵調試,2401也接了3.3的穩(wěn)壓模塊,為什么沒反應…應該是自檢也沒過,蜂鳴器響應該是沒檢測到2401,那應該怎么辦
作者: 3448208832    時間: 2019-5-16 10:02
建議首先檢查硬件接線是否和程序設定的相同;
然后,可以在程序中加一些LED燈的程序,判斷程序到底走到了哪一步,死在了哪一步。
最后,建議親多用幾個模塊測試,避免其中有損壞的。
作者: 許興堂    時間: 2019-5-16 14:01
3448208832 發(fā)表于 2019-5-16 10:02
建議首先檢查硬件接線是否和程序設定的相同;
然后,可以在程序中加一些LED燈的程序,判斷程序到底走到了 ...

檢測不到2401蜂鳴器就會響 為什么會 檢測不到呢
作者: liushangming    時間: 2019-5-16 14:31
在程序中加上串口打印,先確定程序死到哪了
作者: hq987333864    時間: 2019-5-16 15:35
我有STM32 + 24l01的雙向快速通信的工程,自己摸索出來的,用在無人機數傳,需要的話私信我,我回去發(fā)你
作者: 許興堂    時間: 2019-5-16 16:05
liushangming 發(fā)表于 2019-5-16 14:31
在程序中加上串口打印,先確定程序死到哪了

發(fā)送

#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);                                   //發(fā)送數據
                        while(NRF24L01_TxPacket(tmp_buf)!=TX_OK);  //發(fā)送失敗則一直發(fā)送,直到對方接受成功為止
                       
                        tmp_buf[31]=0;               
                        led=1;
                }                            
        }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
接收
/***********************
小板測試時如果沒有效果
就將2.4G拔下,在插上,按下復位,再次發(fā)送數據即可

如果發(fā)送數據時led閃爍,應該是發(fā)送數據的按鍵沒有去抖

***************************/
#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.torrancerestoration.com/bbs/dpj-167239-1.htm 需注意端口輸入方式
作者: suncat0504    時間: 2019-8-2 19:37
我建議樓主先不要用單片機。先用串口工具通過AT指令方式,調好波特率,對接協(xié)議之類的設置。在用這種方式調通以后,再換成單片機來控制,這樣相對就容易多了。換成單片機的時候,可以一邊繼續(xù)保持串口工具,一邊是用單片機,OK以后,再全都換成單片機的。我的就是這么調試過來的。
作者: suncat0504    時間: 2019-8-2 19:38
我這邊用的是AT89C2051,匯編語言模式。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1