我没有资料在 旁边,但我去年刚完成了一个nRF24L01
无线收发的项目,客户已验收
记得一点是这样写的,希望有帮助
#define tx sta^5 //位定义,状态寄存器的第5位
#define max sta^4
wtb(0xa0,mode);//向TX FIFO 写入一个值mode
ce=1;
for(n=43;n>0;n--);//进入接受模式130us,然后下面的是校验说明书上的STATUS内容
sta=wob(0xff); //读状态,wob函数 是write one byte,自己编的程序向24L01寄存器写1个命令
if(tx) //若状态寄存器的第5位 被置1
{
wtb(0x27,0xff); //些入1 清除标志位
wob(0xe1); //清除TX fifo
sta=wob(0xff); //再读一次STATUS,看tx是否被成功清零,成功清0就闪灯,tmp是一个临时 char型变量,前面已定义,
if(tx==0)
{
while(tmp--)
{led1=1;delay(20000);led1=0;delay(20000);} //灯闪烁的次数是为了测试程序是否成功用
}
}
nRF24L01在中断标志置位后,必须写1清零,不然可能死机
发送接收成功,硬件会自动清FIFO,不必手动清0 FIFO,希望有所帮助,
if(max) //达到最大重发次数,清中断标志,清FIFO
{
wtb(0x27,0xff);
wob(0xe1);
sta=wob(0xff);
}