SX1278 FSK 调试记录

SX1278 FSK 调试记录

  • 先挖个sx1278 FSK的坑慢慢填
    • 手中有两个SX1278模组 是安信可的产品 采用主从模式 SPI访问 MCU是STM32F107
    • 数据格式
    • 说明收据接收的第一步就失败了
        • 然后又又又遇到新的问题了
  • 希望路过的各位前辈,可以指点一二。
  • 最后得到的结果是,似乎7MS就是模块的极限了。实在是找不出原因了。

先挖个sx1278 FSK的坑慢慢填

手中有两个SX1278模组 是安信可的产品 采用主从模式 SPI访问 MCU是STM32F107

目前遇到了一个问题 当我将BR(Bitrate)设置为38.4kbit/s 后从机就收不到数据了,通过IAR的单步调试发现前导码的中断就没触发了。 检测代码如下

// 
 case RF_STATE_RX_SYNC:
       //前导码检测中断 改为寄存器访问
        if( ( SX1276FskGetPreambleDetect() == 1 ) && ( PreambleDetected == false ) )// Preamble 进
        {
            PreambleDetected = true;
            Preamble2SyncTimer = GET_TICK_COUNT( );
        }

数据格式

SX1278 FSK 调试记录_第1张图片

说明收据接收的第一步就失败了

先就到这,继续研究手册去了。

原因找到了,是代码的问题。我以为设置成了38.4kbit/s 但实际写进寄存器的值不是表格中的数值。
直接对寄存器操作,就能通信了。现在对表格中的其他数值都进行一次测试。

测试结果是:50 100 250 300kb/s 这几个波特率数据收发失败 ,其他的都成了。
SX1278 FSK 调试记录_第2张图片

然后又又又遇到新的问题了

我的主机在主机两次数据发送之间如果没有延时7ms(延时7ms是我测出来的。低于这个值就会卡住
),那么下次数据发送就会卡住。 IAR单步调试发现卡在了代码对PacketSent这个位的检查上了。SX1278 FSK 调试记录_第3张图片

 if( SX1276FskGetPacketSent() == 1 ) // 查询PacketSent     判断本次发送是否完成
  {
      TxTimeoutTimer = GET_TICK_COUNT( );
      RFState = RF_STATE_TX_DONE;
      SX1276FskSetOpMode( RF_OPMODE_STANDBY );
  }

如果延时低于上述值,第二次发送则PacketSent置位信号一直检查不到。
不知道是什么原因导致了这个问题,继续研究手册

希望路过的各位前辈,可以指点一二。

最后得到的结果是,似乎7MS就是模块的极限了。实在是找不出原因了。

你可能感兴趣的:(无线模块)