📄 2401.txt
字号:
void nRF2401_powerup_config(void)
{
int i,j;
unsigned char congfig_data[18],variable1;
congfig_data[0]=0x8e;
congfig_data[1]=0x08;
congfig_data[2]=0x1c;
congfig_data[3]=0x08;//119:112
congfig_data[4]=0x08;//112:104
congfig_data[5]=0x00;//103:64,channel 2 address
congfig_data[6]=0xd0;
congfig_data[7]=0xdd;
congfig_data[8]=0xdd;
congfig_data[9]=0xdd;
congfig_data[10]=0x00;//63:24,channel 1 address
congfig_data[11]=0xdd;
congfig_data[12]=0xdd;
congfig_data[13]=0xdd;
congfig_data[14]=0xdd;
congfig_data[15]=0x83;//address width,CRC 16bits
congfig_data[16]=0x6e;
congfig_data[17]=0x04;
POWER_UP=0;//power down mode
CS=0;
CE=0;
CLK1=0;
DATA=0;
POWER_UP=1;//stand by mode
delay3ms();
CS = 1; //2401进入配置方式
delay5us();//CS到DATA至少延迟5us Tcs2data
for(i=3;i<18;i++)
{
variable1=congfig_data[i];
for(j=0;j<8;j++)
{
CLK1=0;
DATA=(variable1>>7)&0x1;//配置先写入高位MSB
delay500ns();//Ts
CLK1=1;
delay500ns();//时钟信号高电平保持至少500ns
CLK1=0;//数据在CLK1上升沿写入nRF2401
variable1=variable1<<1;
}
}
CS=0;//CS置低使配置有效
}
void Transmit_data(unsigned char number)
{
int i,j;
unsigned char variable2;
unsigned char transmit_data[6];
transmit_data[0]=0xdd;
transmit_data[1]=0xdd;
transmit_data[2]=0xdd;
transmit_data[3]=0xdd;//接收方通道硬件地址
transmit_data[4]=number;
transmit_data[5]=number;
POWER_UP = 1;//stand by mode
CS = 0;
CE = 0 ;
CLK1=0;
DATA=0;
someNOP();//Td
CE=1;
delay5us();//CE到DATA至少延迟5s
for(i=0;i<5;i++)
{
variable2=transmit_data[i];
for(j=0;j<8;j++)
{
CLK1=0;
DATA=(variable2>>7)&0x1;
delay500ns();
CLK1=1;
delay500ns();//时钟信号高电平至少为500ns
CLK1=0;//数据在CLK1上升沿写入nrf2401
variable2<<=1;
}
}
CE=0;//CE置低使发送有效
}
void main()
{
int temp;
Init();//初始化
LED1=0;
nRF2401_powerup_config();
Transmit_data(0xaa);
LED2 = 0;
while(1)
{
LED2=~LED2;
temp=90000;
while(temp--)
{delay5us();
}
}
}
==================================================================
以下是接收端的程序
void nRF2401_powerup_config(void)
{
int i,j;
unsigned char congfig_data[18],variable1;
congfig_data[0]=0x8e;
congfig_data[1]=0x08;
congfig_data[2]=0x1c;
congfig_data[3]=0x08;//119:112
congfig_data[4]=0x08;//112:104
congfig_data[5]=0x00;//103:64,channel 2 address
congfig_data[6]=0xd0;
congfig_data[7]=0xdd;
congfig_data[8]=0xdd;
congfig_data[9]=0xdd;
congfig_data[10]=0x00;//63:24,channel 1 address
congfig_data[11]=0xdd;
congfig_data[12]=0xdd;
congfig_data[13]=0xdd;
congfig_data[14]=0xdd;
congfig_data[15]=0x83;//address width,CRC 16bits
congfig_data[16]=0x6e;
congfig_data[17]=0x05;
POWER_UP=0;//power down mode
CS=0;
CE=0;
CLK1=0;
DATA=0;
POWER_UP=1;//stand by mode
delay3ms();
CS = 1; //2401进入配置方式
delay5us();//CS到DATA至少延迟5us Tcs2data
for(i=3;i<18;i++)
{
variable1=congfig_data[i];
for(j=0;j<8;j++)
{
CLK1=0;
DATA=(variable1>>7)&0x1;//配置先写入高位MSB
delay500ns();//Ts
CLK1=1;
delay500ns();//时钟信号高电平保持至少500ns
CLK1=0;//数据在CLK1上升沿写入nRF2401
variable1=variable1<<1;
}
}
CS=0;//CS置低使配置有效
}
void Receive_data(void)
{
POWER_UP = 1;
CE = 0 ;
CS = 0;
CLK1=0;
someNOP();
CE=1;
delay195us();
while(DR1==0)
{
LED2=1;
}
}
void main()
{
int temp;
Init();//初始化
LED1=0;
pd2cfgm();
nRF2401_powerup_config();
ioconfig();//改变DATA的输入输出属性
Receive_data();
LED2 = 0;
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -