技卓芯通信 15年专业提供

物联网全套无线解决方案

服务热线:0755-86541600

联系我们

咨询热线0755-86541600

销售热线:
0755-86541600、86714296、86038781
技术支持:
13798468092
传真:
0755-22676585

行业新闻

当前位置: 首页 >> 新闻资讯 >> 行业新闻

无线模块故障处理解决方案

文章来源:本站人气:2478发表时间:2017-02-09

         如何检查NRF24L01无线模块是否损”相关的解决方案进行了整理,用户详细问题包括:NRF23L01?NRF24L01STM32F4除了使用函数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坏了?除了这种运行程序的方法外,有什么其他办法确定是否模块坏了么?

解决方案1:
能读写寄存器的应该没坏。

 

解决方案2:
我也试过直接发送数据,但是发现程序卡死在
        while(NRF24L01_IRQ==1);//判断发送是否成功
我在函数中return了status和fifostatus,但是程序卡死在上面语句后根本运行不到返回函数
所以没办法知道到底能不能读写寄存器吧
这样就无法判断到底是发送函数有问题,还是NRF坏了连接失败了呀

解决方案3:

是板子的问题 换了板子就好了。

解决方案4:

我用stm32的两个SPI接口分别和两个nrf24l01+连接,
配置好gpio后,执行函数NRF24L01_Check(),
结果发现发送的0xa5,返回的都是0x00。


版权所有:深圳市技卓芯通信技术有限公司   粤ICP备14085362号
地址:深圳市南山区桃源街道平山一路世外桃源创意园B栋三层