云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > STC12单片机SPI多对一nrf24l01程序

STC12单片机SPI多对一nrf24l01程序

  • 62 次阅读
  • 3 次下载
  • 2026/4/27 11:46:39

}

uchar status,uchar_ctr; CSN = 0; status = SPI_ReadWriteByte(reg);

for(uchar_ctr=0;uchar_ctr

return(status);

/*******************************接*****收*****模*****式*****代*****码

*************************************/

/******************************************************************************************************/

/*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf) /*功能:数据读取后放如rx_buf接收缓冲区中

/******************************************************************************************************/

unsigned char nRF24L01_RxPacket(unsigned char* rx_buf) {

// unsigned char revale=0;

sta=SPI_Read_Reg(STATUS); // 读取状态寄存其来判断数据接收状况

SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写

1来清楚中断标志

if(RX_DR) // 判断是否接收到数据 {

SPI_Read_Buf(RD_RX_PLOAD,rx_buf,RX_PLOAD_WIDTH);// read receive payload from RX_FIFO

buffer

return 0; }

/****************************************************************************************************/

/*函数:void RX_Mode(void) /*功能:数据接收配置

/****************************************************************************************************/

void RX_Mode(void) {

SPI_RW_Reg(FLUSH_RX,0xFF);//清除接受FIFO return 1; }

//读取数据完成标志

CE=0;

// SPI_RW_Reg(FLUSH_RX,0x00);//清除接受FIFO

//SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // Writes TX_Address to nRF24L01

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack

SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);//使能自动应答 Enable Auto.Ack:Pipe0 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); //连接通道0和地址 Enable Pipe0 //SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...1a

SPI_RW_Reg(WRITE_REG + RF_CH, 40);//通信频率0~125 设置通信的频率 Select RF channel 40 SPI_RW_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为2字节 SPI_RW_Reg(WRITE_REG + RF_SETUP,0X07); //0x07 TX_PWR:0dBm, Datarate:1Mbps, LNA:HCURR // 设置TX发射参数,0db增益,2Mbps,低噪声增益开启 }

//************************************

********************************************************* void StartUART( void ) { //波特率9600 }

TMOD=0x20;//设置定模式2 TH1=0xFD; TL1=0xFD;

SM1=1; //设置串口SCON,为方式1 SM0=0;

REN=1; //串行允许 TR1=1; //启动定时器 EA=1; //中断 ES=1; //打开串口

PC

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0F);//配置基本工作模式的参数 CE=1;

delay_ms(130);

//************************************通过串口将接收到数据发送给************************************** void R_S_Byte(uint R_Byte) { }

/************************************

ES=0;

while(TI==0); TI=0; ES=1;

SBUF=R_Byte;

************************************************************/

uchar NRF24L01_Check(void) { }

void main() {

//接收 模式代码

if(nRF24L01_RxPacket(Rx_Buf)) {

while(1) {

RX_Mode();

//接受模式

Delay(10);//防止编译警告 }

delay_ms(500);

R_S_Byte(0x11); uint i=0; CE=0; CSN=1; led=0; Init_SPI();

StartUART(); //串口初始

while(NRF24L01_Check())//检测不到24L01 {

delay_ms(500);

uchar buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5}; uchar i;

SPI_Write_Buf(WRITE_REG+TX_ADDR,buf,5);//写入5个字节的地址. SPI_Read_Buf(TX_ADDR,buf,5); //读出写入的地址 for(i=0;i<5;i++) if(buf[i]!=0XA5) break; if(i!=5) return 1;//检测24L01错误 return 0;

//检测到24L01

for(i=0;i

}

}

{

//发送接收到的数据到电脑

R_S_Byte(Rx_Buf[i]);

}

}

Delay(10);

搜索更多关于: STC12单片机SPI多对一nrf24l01程序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} uchar status,uchar_ctr; CSN = 0; status = SPI_ReadWriteByte(reg); for(uchar_ctr=0;uchar_ctr

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com