如何檢查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都不挺閃爍
單步運行發(fā)現,程序在for循環(huán)中只循環(huán)了一次就跳出循環(huán)了,即i=0,導致返回值一直都1
請問到底是程序出錯了么?其他部分的程序都是從NRF24L01的例程里面直接copy的
又或者是我的NRF壞了?除了這種運行程序的方法外,有什么其他辦法確定是否模塊壞了么?
解決方案1:
能讀寫寄存器的應該沒壞。
解決方案2:
我也試過直接發(fā)送數據,但是發(fā)現程序卡死在
while(NRF24L01_IRQ==1);//判斷發(fā)送是否成功
我在函數中return了status和fifostatus,但是程序卡死在上面語句后根本運行不到返回函數
所以沒辦法知道到底能不能讀寫寄存器吧
這樣就無法判斷到底是發(fā)送函數有問題,還是NRF壞了連接失敗了呀
解決方案3:
是板子的問題 換了板子就好了。
解決方案4:
我用stm32的兩個SPI接口分別和兩個nrf24l01+連接,
配置好gpio后,執(zhí)行函數NRF24L01_Check(),
結果發(fā)現發(fā)送的0xa5,返回的都是0x00。