当前位置: 代码迷 >> 单片机 >> 怎么检查NRF24L01无线模块是否损坏
  详细解决方案

怎么检查NRF24L01无线模块是否损坏

热度:178   发布时间:2016-04-28 14:53:13.0
如何检查NRF24L01无线模块是否损坏
除了使用函数NRF24L01_Check()外,是否有其他方法可以确认NRF24L01是否损坏呢?
我手里有3个无线模块,检测结果竟然都是连接失败,实在不敢相信是三个模块都坏了,请问一下下面程序中难道有处理错误的地方么?
下面是检测连接是否成功的程序:
u8 NRF24L01_Check(void)
{
        u8 buf[5]={0xA5,0xA5,0xA5,0xA5,0xA5};
        u8 i;
         SPI2_SetSpeed(SPI_BaudRatePrescaler_4);          
        NRF24L01_Write_Buf(WRITE_REG_NRF+TX_ADDR ,buf,5);
        NRF24L01_Read_Buf(TX_ADDR,buf,5);  
        for(i=0;i<5;i++)
        {
                if(buf[i]!=0xA5)
                        break;        
        }                
        if(i!=5)
                return 1;        //失败
        else 
                return 0;         //成功
}

下面是在主函数中进行判断
        while(NRF24L01_Check())
        {
                LED1_ADD=0; 
                Delay_1us(5000);
                LED1_ADD=1;
                Delay_1us(5000);
        }

如果连接成功的话,LED灯应该是不亮的,但是三个无线模块在烧录程序后LED都不挺闪烁
单步运行发现,程序在for循环中只循环了一次就跳出循环了,即i=0,导致返回值一直都是1

请问到底是程序出错了么?其他部分的程序都是从NRF24L01的例程里面直接copy的
又或者是我的NRF坏了?除了这种运行程序的方法外,有什么其他办法确定是否模块坏了么?
谢谢!
------解决方案--------------------
能读写寄存器的应该没坏。。。