SX1278 FSK 调试记录

先挖个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( );
        }

数据格式

在这里插入图片描述

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

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

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

测试结果是:50 100 250 300kb/s 这几个波特率数据收发失败 ,其他的都成了。
FSK的波特率实例表

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

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

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

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

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值