|
本帖最后由 fangjikun 于 2013-3-13 17:34 编辑
unsigned char NRF24L01_Check(void)//检测24L01是否存在 0:失败 1:成功
{
unsigned char i,buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
NRFWriteTxDate(W_REGISTER+TX_ADDR,buf,5);//写入5个字节的地址.
NRFReadRxDate(TX_ADDR,buf,5); //读出写入的地址
for(i=0;i<5;i++)
{if(buf!=0xa5){break;}
if(i!=5)return 0;//检测24L01错误
}
return 1; //检测到24L01
}
unsigned char NRFReadRxDate(unsigned char RegAddr,unsigned char *RxDate,unsigned char DateLen)//SPI读取RXFIFO寄存器的值
{ //寄存器地址//读取数据存放变量//读取数据长度
unsigned char BackDate,i;
CSN=0;//启动时序
BackDate = NRFSPI(RegAddr);//写入要读取的寄存器地址
for(i=0;i<DateLen;i++) //读取数据
{
RxDate = NRFSPI(0x00);//读取寄存器指令
}
CSN=1;
return(BackDate);
}
unsigned char NRFWriteTxDate(unsigned char RegAddr,unsigned char *TxDate,unsigned char DateLen)//SPI写入TXFIFO寄存器的值
{ //寄存器地址//写入数据存放变量//读取数据长度//用于发送
unsigned char BackDate,i;
CSN=0;
BackDate=NRFSPI(RegAddr);//写入要写入寄存器的地址
for(i=0;i<DateLen;i++)//写入数据
{
NRFSPI(*TxDate++);
}
CSN=1;
return(BackDate);
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|