谁使用K60的SPi 调通了NRF24l01 ,我一直卡在IRQ(已解决)

2020-02-20 21:09发布

本帖最后由 湛泸骏驰 于 2014-1-16 16:43 编辑

nrf24l01.png (39.12 KB, 下载次数: 0) 下载附件 2014-1-15 18:04 上传   我的程序一直卡在这句话出。程序是网友的没有问题,使用的LPLD的库,SPI的库网友修改了。
NRF24L01一直卡在这句话,是什么情况呢。。。是我的24l01坏了还是怎么的呢。。
程序现在接收端无法接收到数据。不知怎么办呢。。

现在程序接收到数据,但是无法使用串口进行显示。显示的时候出现乱码
  1. Speed is:
  2. Speed is:Speed is:peed is:eed is:ed is:d is: is:is:s::
  3. Speed is:
  4. Speed is:
  5. Speed is:
  6. Speed is:
  7. Speed is:Speed is:peed is:eed is:ed is:d is: is:is:s::
  8. Speed is:
  9. Speed is:
  10. Speed is:
  11. Speed is:
  12. Speed is:Speed is:peed is:eed is:ed is:d is: is:is:s::
  13. Speed is:
  14. Speed is:
  15. Speed is:
  16. Speed is:
  17. Speed is:Speed is:peed is:eed is:ed is:d is: is:is:s::
  18. Speed is:
  19. Speed is:
  20. Speed is:
  21. Speed is:
  22. Speed is:Speed is:peed is:eed is:ed is:d is: is:is:
  23. Speed is:
  24. Speed is:
复制代码

本来早Speed is 后边是接收端接收到的数据。但是现在数据也没有,反而影响了Speed  is这句话

  1. void main(void)
  2. {
  3.   printf("Hello ");
  4.   uint8 status ;
  5.   LPLD_Nrf24L01_Init();
  6.    Uart_Init();


  7.   LPLD_Nrf24L01_RxModeInit();
  8.    printf("wireless connecting successed! ");
  9.   while(1)
  10.   {
  11.    
  12.     // status =Nrf24l01_SendFrame(tx_buf,PLOAD_WIDTH);
  13. status =LPLD_Nrf24L01_RecvFrame(rx_buf);  
  14.          
  15.     if(status == NRF24L01_STATUS_RX_DR)
  16.     {
  17.       rx_buf_char[0] =  (int8)rx_buf[0];
  18.       rx_buf_char[1] =  (int8)rx_buf[1];
  19.       rx_buf_char[2] =  (int8)rx_buf[2];
  20.       rx_buf_char[3] =  (int8)rx_buf[3];
  21.      
  22.       
  23.     LPLD_UART_PutCharArr(UART4 , "Speed is:",9);
  24. [color=Red]    LPLD_UART_PutCharArr(UART4 , rx_buf_char,4);[/color]//通过调试,发现数值不对。
  25.      LPLD_UART_PutCharArr(UART4 , " " ,2);
  26.     }         
  27.               
  28.   }
  29. }

复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
湛泸骏驰
2020-02-21 19:16
FSL_TICS_Robin 发表于 2014-1-16 09:48
看看SPI线上波形是否满足时序要求吧

debug看下出错那行判断的寄存器状态

  1. uint8 LPLD_Nrf24L01_RecvFrame(uint8 *data )
  2. {
  3.   uint8 Status;
  4.   NRF24L01_CE_H;         //进入接收状态
  5.   //等待接收中断
  6.   while(NRF24L01_READ_IRQ()!= 0);
  7.   
  8.   NRF24L01_CE_L;         //进入待机状
  9.   
  10. [color=Red] Status = LPLD_Nrf24L01_ReadReg(NRF24L01_STATUS);           //读取状态寄存器
  11. [/color]     //这句读出来的数值不对。
  12.   LPLD_Nrf24L01_WriteReg(NRF24L01_WRITE_REG+NRF24L01_STATUS, Status);//清空状态奇存器
  13.   
  14.   /*判断是否接收到数据*/
  15.   if(Status&NRF24L01_STATUS_RX_DR)
  16.   {
  17.     LPLD_Nrf24L01_ReadBuf(NRF24L01_RD_RX_PLOAD, data, NRF24L01_PLOAD_LEN);
  18.     LPLD_Nrf24L01_WriteReg(NRF24L01_FLUSE_RX,0xFF);
  19.     return NRF24L01_STATUS_RX_DR;
  20.   }
  21.   else
  22.     return 0;           //没收到任何数据
  23. }
复制代码

一周热门 更多>