nrf24l01发射调不通啊啊啊

2019-07-18 17:18发布

#include"reg51.h"
#include"intrins.h"
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit MOSI = P3^3;
sbit MISO = P3^4;
sbit CLK  = P3^2;
sbit CE   = P3^0;
sbit CSN  = P3^1;
sbit IRQ  = P3^5;
/*************************************/
#define TX_ADR_WIDTH  5
#define RX_ADR_WIDTH   5
#define TX_PLOAD_WIDTH  5
#define RX_PLOAD_WIDTH   5
uint8 const t_address[]={0x01,0x01,0x01,0x01,0x01};
uint8 const r_address[]={0x10,0x10,0x10,0x10,0x10};
uint8 tbuf[5]={1,2,3,4,5};
uint8 rbuf[5];
/***********可位寻址*********************/
uint8 bdata sta;
sbit RX_DR=sta^6;
sbit TX_DS=sta^5;
sbit MAX_RT=sta^4;
/*************************************/
   /*SPI指令*/
/*************************************/
#define R_REG  0x00
#define W_REG  0x20
#define RD_RX_PLOAD 0x61
#define WR_TX_PLOAD 0xA0
#define FLUSH_TX 0xE1
#define FLUSH_RX 0xE2
#define REUSE_TX_PL 0xE3
#define NOP   0xFF
/*************************************/
     /*寄存器地址*/
/*************************************/
#define CONFIG   0x00
#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
#define RX_ADDR_P1 0x0B
#define RX_ADDR_P2 0x0C
#define RX_ADDR_P3 0x0D
#define RX_ADDR_P4 0x0E
#define RX_ADDR_P5 0x0F
#define TX_ADDR  0x10
#define RX_PW_P0 0x11
#define RX_PW_P1 0x12
#define RX_PW_P2 0x13
#define RX_PW_P3 0x14
#define RX_PW_P4 0x15
#define RX_PW_P5 0x16
#define FIFO_STATUS 0x17
void nrf_init();
uint8 spi_wr(uint8 uchar);
uint8 spi_read(uint8 reg);
uint8 wr_reg_com(uint8 reg,date);
uint8 r_reg_buf(uint8 reg,uint8 *pbuf,uint8 width);
uint8 w_reg_buf(uint8 reg,uint8 *pbuf,uint8 width);
void sent_data(uint8 *pbuf);
void delayus(uint8 us);
/***************************/
void delayus(uint8 us)
{
for(;us>0;us--)
  _nop_();
}
uint8 spi_wr(uint8 uchar)
{
uint8 i;
for(i=0;i<8;i++)
{
  MOSI=(uchar&0x80);
  uchar<<=1;
  CLK=1;
  uchar|=MISO;
  CLK=0;
}
return uchar;
}
uint8 spi_read(uint8 reg)
{
uint8 date;
CSN=0;
spi_wr(reg);
date=spi_wr(0);
CSN=1;
return date;
}
uint8 wr_reg_com(uint8 reg,date)
{
uint8 status;
CSN=0;
status=spi_wr(reg);
spi_wr(date);
CSN=1;
return status;
}
uint8 r_reg_buf(uint8 reg,uint8 *pbuf,uint8 width)
{
uint8 i,status;
CSN=0;
status=spi_wr(reg);
for(i=0;i<width;i++)
  pbuf[i]=spi_wr(0);
CSN=1;
return status;
}
uint8 w_reg_buf(uint8 reg,uint8 *pbuf,uint8 width)
{
uint8 i,status;
CSN=0;
status=spi_wr(reg);
for(i=0;i<width;i++)
  spi_wr(*pbuf++);
CSN=1;
return status;
}
void sent_data(uint8 *pbuf)
{
CE=0;
w_reg_buf(W_REG+RX_ADDR_P0,r_address,RX_ADR_WIDTH);
w_reg_buf(WR_TX_PLOAD,pbuf,TX_PLOAD_WIDTH);
wr_reg_com(W_REG+CONFIG,0x0e);
CE=1;
delayus(50);
}
void nrf_init()
{
delayus(100);
CE=0;
CSN=1;
CLK=0;
// IRQ=1;
w_reg_buf(W_REG+TX_ADDR,t_address,TX_ADR_WIDTH);
w_reg_buf(W_REG+RX_ADDR_P0,r_address,RX_ADR_WIDTH);
wr_reg_com(W_REG+EN_AA,0x00);
wr_reg_com(W_REG+EN_RXADDR,0x00);//打开通道0
// wr_reg_com(W_REG+SETUP_RETR,0x03); //关闭自动重发
wr_reg_com(W_REG+RF_CH,0);//频率
wr_reg_com(W_REG+RX_PW_P0,RX_PLOAD_WIDTH);//设置有效数据宽度
wr_reg_com(W_REG+RF_SETUP,0x07);
wr_reg_com(W_REG+CONFIG,0x0e);
}
void main()
{
uint8 TxBuf[20]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,
      0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20};
nrf_init();
sent_data(TxBuf);
sent_data(TxBuf);
P0=spi_read(STATUS);
while(1);
}


单片机开发板上 P0口的led一直都不亮 ,求打神帮忙看看怎么改 不胜感激
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
q292335090
2019-07-18 19:17
ZQ-nRF24L01+PA是一款基于nRF24L01+PA无线芯片开发的远距离数传模块是工作在2.4~2.5GHz 世界通用ISM 频段的无线收发模块。 无线收发单元选用应用较广的nRF24L01+芯片,同时集成高集成度的射频前端芯片,使本模块的最高输出功率达到了+22dBm。当工作在发射模式下发射功率为+22dBm时电流消耗为130mA,接收模式时为22mA,掉电模式时仅2μA。
模块外接引脚与普通nRF24L01+模块完全兼容。射频前端芯片的收发模式切换与掉电均可自动完成切换,无需用户干预也不用添加单独的控制引脚。用户原有的电路与代码无需改动即可直接使用。
        产品特点
        使用nRF24L01+作为无线收发单元。
        2.4GHz全球免申请ISM工作频段。
        工作频率范围2400MHz~2525MHz。
        集成射频前端芯片,发射功率最高可达+22dBm。
        外接引脚与普通nRF24L01+模块完全兼容。
        支持2Mbps、1Mbps和250kbps传输速率。
        独立的32字节RX FIFO和TX FIFO。
        通过4线SPI接口与MCU连接,速率0~8Mbps,同时提高1个可屏蔽的中断输出引脚。
        支持自动应答及自动重发,内置地址及CRC数据校验模功能。
        SMA接口,可方便连接同轴电缆或外置天线。
        工作电压范围:2.0V~3.6V。
        工作温度范围:-40℃~+85℃
        通讯距离:1800米
        产品用途
ZQ-nRF24L01+PA远距离无线数传模块适用于多种无线通信的场合,如远距离无线数据传输系统、无线遥控、有源RFID、智能电网、智能家居等。

ZQ-nRF24L01 PA无线模块用户手册.pdf 下载积分: 积分 -1 分

445.59 KB, 下载次数: 3, 下载积分: 积分 -1 分

ZQ-nRF24L01 无线模块用户手册.pdf 下载积分: 积分 -1 分

543.88 KB, 下载次数: 17, 下载积分: 积分 -1 分

一周热门 更多>