找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2983|回复: 10
打印 上一主题 下一主题
收起左侧

NRF24L01+无线调试

[复制链接]
跳转到指定楼层
楼主
ID:52740 发表于 2014-10-12 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小白我前几天做NRF24L01+模块的无线调试,想先调通,就修改别人现有的程序,但是不管怎样调都调不通,也不知道到底是收发方哪边的问题,以为模块烧坏啦,就重新在某宝上买了两个,依旧还是调不通。没办法,就到此求大神用这个程序试一下,我想到底是程序的问题还是模块又坏了的原因,小白不甚感激!!!
现程序如下:
【发射方】
#include <reg52.h>
#include <intrins.h>

typedef unsigned char uchar;
typedef unsigned char uint;
//****************************************IOカヒソレカィメ・**************************************
//****************************************NRF24L01カヒソレカィメ・**************************************
sbit CE=P2^2;
sbit CSN =P2^3;
sbit SCK =P2^4;
sbit MOSI =P2^5;
sbit MISO =P2^6;
sbit IRQ =P2^7;
//************************************ーエシ・**************************************************
sbit        KEY1=P1^4;
//************************************キ菘・**************************************************
sbit         LED=P1^6;
//*********************************************NRF24L01*************************************
#define TX_ADR_WIDTH    5           // 5 uints TX address width
#define RX_ADR_WIDTH    5           // 5 uints RX address width
#define TX_PLOAD_WIDTH  20          // 20 uints TX payload
#define RX_PLOAD_WIDTH  20          // 20 uints TX payload
uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //アセオリオリヨキ
uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //スモハユオリヨキ
//***************************************NRF24L01シトエ貳クチ・******************************************************
#define READ_REG        0x00          // カチシトエ貳クチ・
#define WRITE_REG       0x20         // ミエシトエ貳クチ・
#define RD_RX_PLOAD     0x61          // カチネ。スモハユハセンヨクチ・
#define WR_TX_PLOAD     0xA0          // ミエエキ「ハセンヨクチ・
#define FLUSH_TX        0xE1         // ウ袞エキ「ヒヘ FIFOヨクチ・
#define FLUSH_RX        0xE2          // ウ袞エスモハユ FIFOヨクチ・
#define REUSE_TX_PL     0xE3          // カィメ袒リクエラーヤリハセンヨクチ・
#define NOP             0xFF          // ア」チ・
//*************************************SPI(nRF24L01)シトエ貳リヨキ****************************************************
#define CONFIG          0x00  // ナ葷テハユキ「ラエフャ」ャCRCミ」ム鯑」ハスメヤシーハユキ「ラエフャマ・ヲキスハス
#define EN_AA           0x01  // ラヤカッモヲエヲトワノ靹テ
#define EN_RXADDR       0x02  // ソノモテミナオタノ靹テ
#define SETUP_AW        0x03  // ハユキ「オリヨキソ昮ネノ靹テ
#define SETUP_RETR      0x04  // ラヤカッヨリキ「ケヲトワノ靹テ
#define RF_CH           0x05  // ケ、ラオツハノ靹テ
#define RF_SETUP        0x06  // キ「ノ萢ルツハ。「ケヲコトケヲトワノ靹テ
#define STATUS          0x07  // ラエフャシトエ貳・
#define OBSERVE_TX      0x08  // キ「ヒヘシ犂篁ヲトワ
#define CD              0x09  // オリヨキシ・・         
#define RX_ADDR_P0      0x0A  // ニオオタ0スモハユハセンオリヨキ
#define RX_ADDR_P1      0x0B  // ニオオタ1スモハユハセンオリヨキ
#define RX_ADDR_P2      0x0C  // ニオオタ2スモハユハセンオリヨキ
#define RX_ADDR_P3      0x0D  // ニオオタ3スモハユハセンオリヨキ
#define RX_ADDR_P4      0x0E  // ニオオタ4スモハユハセンオリヨキ
#define RX_ADDR_P5      0x0F  // ニオオタ5スモハユハセンオリヨキ
#define TX_ADDR         0x10  // キ「ヒヘオリヨキシトエ貳・
#define RX_PW_P0        0x11  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P1        0x12  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P2        0x13  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P3        0x14  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P4        0x15  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P5        0x16  // スモハユニオオタ0スモハユハセンウ、カネ
#define FIFO_STATUS     0x17  // FIFOユサネ・サウエフャシトエ貳靹テ
//**************************************************************************************
void Delay(unsigned int s);
void inerDelay_us(unsigned char n);
void init_NRF24L01(void);
uint SPI_RW(uint uchar);
uchar SPI_Read(uchar reg);
void SetRX_Mode(void);
uint SPI_RW_Reg(uchar reg, uchar value);
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);
void nRF24L01_TxPacket(unsigned char * tx_buf);
//*****************************************ウ、ムモハア*****************************************
void Delay(unsigned int s)
{
        unsigned int i;
        for(i=0; i<s; i++);
        for(i=0; i<s; i++);
}
//******************************************************************************************
uint         bdata sta;   //ラエフャア・セ
sbit        RX_DR        =sta^6;
sbit        TX_DS        =sta^5;
sbit        MAX_RT        =sta^4;
/******************************************************************************************
/*ムモハアコッハ
/******************************************************************************************/
void inerDelay_us(unsigned char n)
{
        for(;n>0;n--)
                _nop_();
}
//****************************************************************************************
/*NRF24L01ウシサッ
//***************************************************************************************/
void init_NRF24L01(void)
{
    inerDelay_us(100);
        CE=0;    // chip enable
        CSN=1;   // Spi disable
        SCK=0;   // Spi clock line init high
        SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // ミエアセオリオリヨキ       
        SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // ミエスモハユカヒオリヨキ
        SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      //  ニオオタ0ラヤカッ        ACKモヲエハミ・
        SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  //  ヤハミ晳モハユオリヨキヨサモミニオオタ0」ャネ郢鋗靨ェカ猗オオタソノメヤイホソシPage21  
        SPI_RW_Reg(WRITE_REG + RF_CH, 0);        //   ノ靹テミナオタケ、ラェ2.4GHZ」ャハユキ「アリミ・サヨツ
        SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //ノ靹テスモハユハセンウ、カネ」ャアセエホノ靹テホェ20ラヨスレ
        SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);                   //ノ靹テキ「ノ萢ルツハホェ1MHZ」ャキ「ノ荵ヲツハホェラ鋗オ0dB
}
/****************************************************************************************************
/*コッハ」コuint SPI_RW(uint uchar)
/*ケヲトワ」コNRF24L01オトSPIミエハアミ・
/****************************************************************************************************/
uint SPI_RW(uint uchar)
{
        uint bit_ctr;
           for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
           {
                MOSI = (uchar & 0x80);         // output 'uchar', MSB to MOSI
                uchar = (uchar << 1);           // shift next bit into MSB..
                SCK = 1;                      // Set SCK high..
                uchar |= MISO;                         // capture current MISO bit
                SCK = 0;                              // ..then set SCK low again
           }
    return(uchar);                             // return read uchar
}
/****************************************************************************************************
/*コッハ」コuchar SPI_Read(uchar reg)
/*ケヲトワ」コNRF24L01オトSPIハアミ・
/****************************************************************************************************/
uchar SPI_Read(uchar reg)
{
        uchar reg_val;
       
        CSN = 0;                // CSN low, initialize SPI communication...
        SPI_RW(reg);            // Select register to read from..
        reg_val = SPI_RW(0);    // ..then read registervalue
        CSN = 1;                // CSN high, terminate SPI communication
       
        return(reg_val);        // return register value
}
/****************************************************************************************************/
/*ケヲトワ」コNRF24L01カチミエシトエ貳ッハ
/****************************************************************************************************/
uint SPI_RW_Reg(uchar reg, uchar value)
{
        uint status;
       
        CSN = 0;                   // CSN low, init SPI transaction
        status = SPI_RW(reg);      // select register
        SPI_RW(value);             // ..and write value to it..
        CSN = 1;                   // CSN high again
       
        return(status);            // return nRF24L01 status uchar
}
/****************************************************************************************************/
/*コッハ」コuint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)
/*ケヲトワ: モテモレカチハセン」ャreg」コホェシトエ貳リヨキ」ャpBuf」コホェエカチウセンオリヨキ」ャuchars」コカチウセンオトク
/****************************************************************************************************/
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
        uint status,uchar_ctr;
       
        CSN = 0;                                    // Set CSN low, init SPI tranaction
        status = SPI_RW(reg);                       // Select register to write to and read status uchar
       
        for(uchar_ctr=0;uchar_ctr<uchars;uchar_ctr++)
                pBuf[uchar_ctr] = SPI_RW(0);    //
       
        CSN = 1;                           
       
        return(status);                    // return nRF24L01 status uchar
}
/*********************************************************************************************************
/*コッハ」コuint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
/*ケヲトワ: モテモレミエハセン」コホェシトエ貳リヨキ」ャpBuf」コホェエミエネ・センオリヨキ」ャuchars」コミエネ・センオトク
/*********************************************************************************************************/
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
        uint status,uchar_ctr;
       
        CSN = 0;            //SPIハケトワ      
        status = SPI_RW(reg);   
        for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++) //
                SPI_RW(*pBuf++);
        CSN = 1;           //ケリアユSPI
        return(status);    //
}
/****************************************************************************************************/
/*コッハ」コvoid SetRX_Mode(void)
/*ケヲトワ」コハセンスモハユナ葷テ
/****************************************************************************************************/
void SetRX_Mode(void)
{
        CE=0;
        SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);                   // IRQハユキ「ヘ・ノヨミカママ・ヲ」ャ16ホサCRC        」ャヨモハユ
        CE = 1;
        inerDelay_us(130);
}
/******************************************************************************************************/
/*コッハ」コunsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
/*ケヲトワ」コハセンカチネ。コナネ輦x_bufスモハユサコウ衂ミ
/******************************************************************************************************/
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
    unsigned char revale=0;
        sta=SPI_Read(STATUS);        // カチネ。ラエフャシトエ貳菎エナミカマハセンスモハユラエソ・
        if(RX_DR)                                // ナミカマハヌキモハユオスハセン
        {
            CE = 0;                         //SPIハケトワ
                SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
                revale =1;                        //カチネ。ハセンヘ・ノア・セ
        }
        SPI_RW_Reg(WRITE_REG+STATUS,sta);   //スモハユオスハセンコX_DR,TX_DS,MAX_PTカシヨテク゚ホェ1」ャヘィケミエ1タエヌ蟲ヨミカマア・セ
        return revale;
}
/***********************************************************************************************************
/*コッハ」コvoid nRF24L01_TxPacket(unsigned char * tx_buf)
/*ケヲトワ」コキ「ヒヘ tx_bufヨミハセン
/**********************************************************************************************************/
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
        CE=0;                        //StandBy Iト」ハス       
        SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // ラーヤリスモハユカヒオリヨキ
        SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);                          // ラーヤリハセン       
        SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);                    // IRQハユキ「ヘ・ノヨミカママ・ヲ」ャ16ホサCRC」ャヨ「ヒヘ
        CE=1;                 //ヨテク゚CE」ャシ、キ「ハセンキ「ヒヘ
        inerDelay_us(10);
}
//************************************ヨッハ************************************************************
void main(void)
{
        unsigned char tf =0;
        unsigned char TxBuf[20]={0};         //
        unsigned char RxBuf[20]={0};       
    init_NRF24L01() ;
        TxBuf[1] = 1 ;
        TxBuf[2] = 1 ;
        nRF24L01_TxPacket(TxBuf);        // Transmit Tx buffer data
        Delay(6000);
        while(1)
        {
            if(KEY1 ==0 )
                  {
                    TxBuf[1] = 1 ;
                    tf = 1 ; LED=0;
            }
           if (tf==1)
       {       
                        nRF24L01_TxPacket(TxBuf);        // Transmit Tx buffer data
                        TxBuf[1] = 0x00;
                        TxBuf[2] = 0x00;
                        tf=0;
                        Delay(1000);LED=1;
           }
           }
           }
【接收方】

#include <reg52.h>
#include <intrins.h>

typedef unsigned char uchar;
typedef unsigned char uint;
//****************************************IOカヒソレカィメ・**************************************
//****************************************NRF24L01カヒソレカィメ・**************************************
sbit CE=P0^1;
sbit CSN =P0^0;
sbit SCK =P0^3;
sbit MOSI =P0^2;
sbit MISO =P0^5;
sbit IRQ =P0^4;
//************************************ーエシ・**************************************************
sbit        KEY1=P3^4;
//************************************キ菘・**************************************************
sbit         LED=P3^2;
//*********************************************NRF24L01*************************************
#define TX_ADR_WIDTH    5           // 5 uints TX address width
#define RX_ADR_WIDTH    5           // 5 uints RX address width
#define TX_PLOAD_WIDTH  20          // 20 uints TX payload
#define RX_PLOAD_WIDTH  20          // 20 uints TX payload
uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //アセオリオリヨキ
uint const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};        //スモハユオリヨキ
//***************************************NRF24L01シトエ貳クチ・******************************************************
#define READ_REG        0x00          // カチシトエ貳クチ・
#define WRITE_REG       0x20         // ミエシトエ貳クチ・
#define RD_RX_PLOAD     0x61          // カチネ。スモハユハセンヨクチ・
#define WR_TX_PLOAD     0xA0          // ミエエキ「ハセンヨクチ・
#define FLUSH_TX        0xE1         // ウ袞エキ「ヒヘ FIFOヨクチ・
#define FLUSH_RX        0xE2          // ウ袞エスモハユ FIFOヨクチ・
#define REUSE_TX_PL     0xE3          // カィメ袒リクエラーヤリハセンヨクチ・
#define NOP             0xFF          // ア」チ・
//*************************************SPI(nRF24L01)シトエ貳リヨキ****************************************************
#define CONFIG          0x00  // ナ葷テハユキ「ラエフャ」ャCRCミ」ム鯑」ハスメヤシーハユキ「ラエフャマ・ヲキスハス
#define EN_AA           0x01  // ラヤカッモヲエヲトワノ靹テ
#define EN_RXADDR       0x02  // ソノモテミナオタノ靹テ
#define SETUP_AW        0x03  // ハユキ「オリヨキソ昮ネノ靹テ
#define SETUP_RETR      0x04  // ラヤカッヨリキ「ケヲトワノ靹テ
#define RF_CH           0x05  // ケ、ラオツハノ靹テ
#define RF_SETUP        0x06  // キ「ノ萢ルツハ。「ケヲコトケヲトワノ靹テ
#define STATUS          0x07  // ラエフャシトエ貳・
#define OBSERVE_TX      0x08  // キ「ヒヘシ犂篁ヲトワ
#define CD              0x09  // オリヨキシ・・         
#define RX_ADDR_P0      0x0A  // ニオオタ0スモハユハセンオリヨキ
#define RX_ADDR_P1      0x0B  // ニオオタ1スモハユハセンオリヨキ
#define RX_ADDR_P2      0x0C  // ニオオタ2スモハユハセンオリヨキ
#define RX_ADDR_P3      0x0D  // ニオオタ3スモハユハセンオリヨキ
#define RX_ADDR_P4      0x0E  // ニオオタ4スモハユハセンオリヨキ
#define RX_ADDR_P5      0x0F  // ニオオタ5スモハユハセンオリヨキ
#define TX_ADDR         0x10  // キ「ヒヘオリヨキシトエ貳・
#define RX_PW_P0        0x11  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P1        0x12  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P2        0x13  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P3        0x14  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P4        0x15  // スモハユニオオタ0スモハユハセンウ、カネ
#define RX_PW_P5        0x16  // スモハユニオオタ0スモハユハセンウ、カネ
#define FIFO_STATUS     0x17  // FIFOユサネ・サウエフャシトエ貳靹テ
//**************************************************************************************
void Delay(unsigned int s);
void inerDelay_us(unsigned char n);
void init_NRF24L01(void);
uint SPI_RW(uint uchar);
uchar SPI_Read(uchar reg);
void SetRX_Mode(void);
uint SPI_RW_Reg(uchar reg, uchar value);
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf);
void nRF24L01_TxPacket(unsigned char * tx_buf);
//*****************************************ウ、ムモハア*****************************************
void Delay(unsigned int s)
{
        unsigned int i;
        for(i=0; i<s; i++);
        for(i=0; i<s; i++);
}
//******************************************************************************************
uint         bdata sta;   //ラエフャア・セ
sbit        RX_DR        =sta^6;
sbit        TX_DS        =sta^5;
sbit        MAX_RT        =sta^4;
/******************************************************************************************
/*ムモハアコッハ
/******************************************************************************************/
void inerDelay_us(unsigned char n)
{
        for(;n>0;n--)
                _nop_();
}
//****************************************************************************************
/*NRF24L01ウシサッ
//***************************************************************************************/
void init_NRF24L01(void)
{
    inerDelay_us(100);
        CE=0;    // chip enable
        CSN=1;   // Spi disable
        SCK=0;   // Spi clock line init high
        SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);    // ミエアセオリオリヨキ       
        SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // ミエスモハユカヒオリヨキ
        SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);      //  ニオオタ0ラヤカッ        ACKモヲエハミ・
        SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);  //  ヤハミ晳モハユオリヨキヨサモミニオオタ0」ャネ郢鋗靨ェカ猗オオタソノメヤイホソシPage21  
        SPI_RW_Reg(WRITE_REG + RF_CH, 0);        //   ノ靹テミナオタケ、ラェ2.4GHZ」ャハユキ「アリミ・サヨツ
        SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //ノ靹テスモハユハセンウ、カネ」ャアセエホノ靹テホェ20ラヨスレ
        SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);                   //ノ靹テキ「ノ萢ルツハホェ1MHZ」ャキ「ノ荵ヲツハホェラ鋗オ0dB
}
/****************************************************************************************************
/*コッハ」コuint SPI_RW(uint uchar)
/*ケヲトワ」コNRF24L01オトSPIミエハアミ・
/****************************************************************************************************/
uint SPI_RW(uint uchar)
{
        uint bit_ctr;
           for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
           {
                MOSI = (uchar & 0x80);         // output 'uchar', MSB to MOSI
                uchar = (uchar << 1);           // shift next bit into MSB..
                SCK = 1;                      // Set SCK high..
                uchar |= MISO;                         // capture current MISO bit
                SCK = 0;                              // ..then set SCK low again
           }
    return(uchar);                             // return read uchar
}
/****************************************************************************************************
/*コッハ」コuchar SPI_Read(uchar reg)
/*ケヲトワ」コNRF24L01オトSPIハアミ・
/****************************************************************************************************/
uchar SPI_Read(uchar reg)
{
        uchar reg_val;
       
        CSN = 0;                // CSN low, initialize SPI communication...
        SPI_RW(reg);            // Select register to read from..
        reg_val = SPI_RW(0);    // ..then read registervalue
        CSN = 1;                // CSN high, terminate SPI communication
       
        return(reg_val);        // return register value
}
/****************************************************************************************************/
/*ケヲトワ」コNRF24L01カチミエシトエ貳ッハ
/****************************************************************************************************/
uint SPI_RW_Reg(uchar reg, uchar value)
{
        uint status;
       
        CSN = 0;                   // CSN low, init SPI transaction
        status = SPI_RW(reg);      // select register
        SPI_RW(value);             // ..and write value to it..
        CSN = 1;                   // CSN high again
       
        return(status);            // return nRF24L01 status uchar
}
/****************************************************************************************************/
/*コッハ」コuint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)
/*ケヲトワ: モテモレカチハセン」ャreg」コホェシトエ貳リヨキ」ャpBuf」コホェエカチウセンオリヨキ」ャuchars」コカチウセンオトク
/****************************************************************************************************/
uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
        uint status,uchar_ctr;
       
        CSN = 0;                                    // Set CSN low, init SPI tranaction
        status = SPI_RW(reg);                       // Select register to write to and read status uchar
       
        for(uchar_ctr=0;uchar_ctr<uchars;uchar_ctr++)
                pBuf[uchar_ctr] = SPI_RW(0);    //
       
        CSN = 1;                           
       
        return(status);                    // return nRF24L01 status uchar
}
/*********************************************************************************************************
/*コッハ」コuint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
/*ケヲトワ: モテモレミエハセン」コホェシトエ貳リヨキ」ャpBuf」コホェエミエネ・センオリヨキ」ャuchars」コミエネ・センオトク
/*********************************************************************************************************/
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
        uint status,uchar_ctr;
       
        CSN = 0;            //SPIハケトワ      
        status = SPI_RW(reg);   
        for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++) //
                SPI_RW(*pBuf++);
        CSN = 1;           //ケリアユSPI
        return(status);    //
}
/****************************************************************************************************/
/*コッハ」コvoid SetRX_Mode(void)
/*ケヲトワ」コハセンスモハユナ葷テ
/****************************************************************************************************/
void SetRX_Mode(void)
{
        CE=0;
        SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);                   // IRQハユキ「ヘ・ノヨミカママ・ヲ」ャ16ホサCRC        」ャヨモハユ
        CE = 1;
        inerDelay_us(130);
}
/******************************************************************************************************/
/*コッハ」コunsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
/*ケヲトワ」コハセンカチネ。コナネ輦x_bufスモハユサコウ衂ミ
/******************************************************************************************************/
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
    unsigned char revale=0;
        sta=SPI_Read(STATUS);        // カチネ。ラエフャシトエ貳菎エナミカマハセンスモハユラエソ・
        if(RX_DR)                                // ナミカマハヌキモハユオスハセン
        {
            CE = 0;                         //SPIハケトワ
                SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
                revale =1;                        //カチネ。ハセンヘ・ノア・セ
        }
        SPI_RW_Reg(WRITE_REG+STATUS,sta);   //スモハユオスハセンコX_DR,TX_DS,MAX_PTカシヨテク゚ホェ1」ャヘィケミエ1タエヌ蟲ヨミカマア・セ
        return revale;
}
/***********************************************************************************************************
/*コッハ」コvoid nRF24L01_TxPacket(unsigned char * tx_buf)
/*ケヲトワ」コキ「ヒヘ tx_bufヨミハセン
/**********************************************************************************************************/
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
        CE=0;                        //StandBy Iト」ハス       
        SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // ラーヤリスモハユカヒオリヨキ
        SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);                          // ラーヤリハセン       
        SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);                    // IRQハユキ「ヘ・ノヨミカママ・ヲ」ャ16ホサCRC」ャヨ「ヒヘ
        CE=1;                 //ヨテク゚CE」ャシ、キ「ハセンキ「ヒヘ
        inerDelay_us(10);
}
//************************************ヨッハ************************************************************
void main(void)
{
        unsigned char tf =0;
        unsigned char TxBuf[20]={0};         //
        unsigned char RxBuf[20]={0};       
    init_NRF24L01() ;
        TxBuf[1] = 1 ;
        TxBuf[2] = 1 ;
        nRF24L01_TxPacket(TxBuf);        // Transmit Tx buffer data
        Delay(6000);
        while(1)
        {        
        SetRX_Mode();
                nRF24L01_RxPacket(RxBuf);                                       
                        if(        RxBuf[1]==1)
                        {                
                                LED=0;
                        }
                        Delay(1000);LED=1;
                        RxBuf[1] = 0x00;
                        RxBuf[2] = 0x00;
        }
       
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:67557 发表于 2015-1-17 13:19 | 只看该作者
我和你一样的情况,请问你调试好了吗?
回复

使用道具 举报

板凳
ID:1 发表于 2015-1-17 15:46 来自手机 | 只看该作者
这样的问题我以前也遇到过,程序什么的都是卖家提供的都没有问题,但是就是不能通讯,而且模块一点反应都没有。后来发现原来是电源的问题,弄了2个3.3v得电源就好了,好像台湾生产的这种芯片普遍都存在这个问题,但是欧洲的芯片没有问题。
回复

使用道具 举报

地板
ID:74474 发表于 2015-3-10 22:58 | 只看该作者
加我Q:450596148   一定要备注
回复

使用道具 举报

5#
ID:83083 发表于 2015-8-10 01:38 | 只看该作者
admin 发表于 2015-1-17 15:46
这样的问题我以前也遇到过,程序什么的都是卖家提供的都没有问题,但是就是不能通讯,而且模块一点反应都没 ...

单片机的电源也必须要是3.3V吗?求速回。很急。谢谢了,万分感谢
回复

使用道具 举报

6#
ID:83083 发表于 2015-8-10 01:54 | 只看该作者
不懂这个程序的接收端,的主程序怎么又发送又接收的
回复

使用道具 举报

7#
ID:44267 发表于 2015-10-18 15:25 | 只看该作者
网上有成功案例
回复

使用道具 举报

8#
ID:79544 发表于 2015-10-18 18:32 | 只看该作者
百度,玩转24L01+很详细:http://www.51hei.com/bbs/dpj-49106-1.html

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:44267 发表于 2015-10-19 12:51 | 只看该作者
IO口要加电阻,就可以了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

10#
ID:116456 发表于 2016-4-24 23:31 | 只看该作者
我也一样,不知道为啥

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

11#
ID:114189 发表于 2016-4-26 00:47 来自手机 | 只看该作者
我上周调试通过了 也比较痛苦  可以加我qq  我帮你看看  201792056  需要帮忙的加我qq是写好备注 (如 nrf24l01)

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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