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 这几个波特率数据收发失败 ,其他的都成了。
然后又又又遇到新的问题了
我的主机在主机两次数据发送之间如果没有延时7ms(延时7ms是我测出来的。低于这个值就会卡住
),那么下次数据发送就会卡住。 IAR单步调试发现卡在了代码对PacketSent这个位的检查上了。
if( SX1276FskGetPacketSent() == 1 ) // 查询PacketSent 判断本次发送是否完成
{
TxTimeoutTimer = GET_TICK_COUNT( );
RFState = RF_STATE_TX_DONE;
SX1276FskSetOpMode( RF_OPMODE_STANDBY );
}
如果延时低于上述值,第二次发送则PacketSent置位信号一直检查不到。
不知道是什么原因导致了这个问题,继续研究手册