nRF24L01无线通信实验1
- 格式:doc
- 大小:2.48 KB
- 文档页数:3
#include <STC12C5A60S2.h>
unsigned char nrf_addr[]={0x23,0x34,0x23,0x23,0x01};//本机地址unsigned char nrf_txaddr[]={0x23,0x34,0x23,0x23,0x02};//发送地址
sbit nrfce=P0^0;
sbit nrfcsn=P0^1;
sbit nrfsck=P0^2;
sbit nrfmosi=P0^3;
sbit nrfmiso=P0^4;
sbit nrfirq=P0^5; //nrf24L01控制端
void delay(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<1000;j++);
}
unsigned char spiwr(unsigned char date) //spi写一字节数据
{
int i;
unsigned char temp;
temp=date;
for(i=0;i<8;i++){
temp<<=1;
if(CY==1) nrfmosi=1;
else nrfmosi=0;
nrfsck=1;
if(nrfmiso==1) temp|=0x01;
nrfsck=0;
}
return temp;
}
void nrfwr(unsigned char com,unsigned char addr)
//写一则指令
{
unsigned char date;
nrfcsn=0; //启动spi串口
date=0x20; //写寄存器指令
spiwr(date|addr);
spiwr(com);
nrfcsn=1; //执行指令
}
unsigned char nrfrd(unsigned char addr)
//从addr寄存器地址处读出数据
{
unsigned char date;
nrfcsn=0;
date=0x00; //读寄存器指令
spiwr(date|addr);
date=spiwr(0xff);
nrfcsn=1;
return date;
}
void nrfaddr(unsigned char addr,unsigned char *BUF) //配置nrf地址{
unsigned char com;
int i;
nrfcsn=0;
com=0x20; //写地址指令
spiwr(com|addr);
for(i=0;i<5;i++) spiwr(BUF[4-i]); //从最低字节开始发送
nrfcsn=1;
}
void nrf_send_init() //无线电模块的发射初始化
{
delay(1);
nrfce=0; //芯片使能信号
nrfcsn=1; // spi初始化
nrfsck=0;
nrfaddr(0x0a,nrf_addr); //设置本机地址
nrfaddr(0x10,nrf_txaddr);//设置发送地址
nrfwr(0x00,0x07); //清除中断
nrfwr(0x01,0x02); //设置通道0,1允许接收
nrfwr(0x3f,0x01); //设置所有自动应答功能开
nrfwr(0x01,0x11); //设置通道0有效接收数据宽度为1字节
nrfwr(0x01,0x12); //设置通道1有效接收数据宽度为1字节
nrfwr(0x03,0x06);//设置发送速率为1MHz,发射功率为0db
}
void nrf_wrsend(unsigned char date)//写入要发送的数据
{
unsigned char com;
nrfcsn=0; //启动spi串口
com=0xa0; //写寄存器指令
spiwr(com);
spiwr(date);
nrfcsn=1; //执行指令
}
void nrfsend(unsigned char date)
//nrf发送一字节数据
{
unsigned char com;
// com=0x0a;
// nrfwr(com,0x00); //配置CONFIG寄存器,使之进入发射模式// delay(2); //上电延时
nrfce=0;
delay(1);
nrf_wrsend(date);
com=0x0a;
nrfwr(com,0x00); //配置CONFIG寄存器,使之进入发射模式delay(2);
nrfce=1;
while(nrfirq==1); //等待发送
com=0x00;
nrfwr(com,0x07); //清除中断
delay(1); //进入待机模式1
}
void main()
{
delay(10000);
nrf_send_init();
nrfsend('*');
while(1);
}。