动于九天之上 2019-08-13 10:15 采纳率: 0%
浏览 715

SI4463 改变空中速率以后,接收不到数据。请问改变空中速率的时候还需要改变什么

STM8L单片机控制SI4463通信,因为发送8字节的数据用了100ms+,与低功耗要求不符。必须控制在10ms左右。所以想通过改变空中速率的方式来实现,(若大家有其他方法也可以留言讨论,谢谢。)但是当我两个模块都改成相同空中速率的时候,就接收不到了。默认是1kbps,如果两个模块设置成1kbps就可以接收和发送。目前只是把空中速率改成2K,就无法收到信号。而且发射波形有时候会变得不平整。附上程序。请问大家,想要修改空中速率,还需要修改什么其他东西嘛?

void SI4463_porter_rate_Set(u32 rate)
函数功能:设置无线模块空中速率
输入 rate 空中速率参数
 空中波特率=rate*2/10
*********************************************************/
void SI4463_porter_rate_Set(u32 rate)
{
        SI446x_Set_Property_1(MODEM_DATA_RATE_2 , rate>>16 );
        SI446x_Set_Property_1(MODEM_DATA_RATE_1 , (rate>>8)&0xff);
        SI446x_Set_Property_1(MODEM_DATA_RATE_0 , rate&0xff );
        SI446x_Set_Property_1(MODEM_TX_NCO_MODE_3 , 0x00 );
        SI446x_Set_Property_1(MODEM_TX_NCO_MODE_2 , 0xE4);
        SI446x_Set_Property_1(MODEM_TX_NCO_MODE_1 , 0xE1 );
        SI446x_Set_Property_1(MODEM_TX_NCO_MODE_0 , 0xC0 );
}
void SI446x_Init( void )
{
        SI446x_Gpio_Init( );                //SI4463引脚初始化
        SI446x_Reset( );                        //SI4463复位
        SI446x_Power_Up( 30000000 );//reset 后需要Power up设备 晶振30MHz
        SI446x_Config_Init( );                //SI4463模块初始化
        SI446x_Set_Power( 0x7F );        //功率设置
        SI4463_porter_rate_Set(10000);//设置空中波特率 2kbps
        SI446x_Change_Status( 6 );        //切换到RX状态
        while( 6 != SI446x_Get_Device_Status( ));
        SI446x_Start_Rx( 0, 0, PACKET_LENGTH,0,0,3 );

}
  • 写回答

1条回答

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示