OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5880|回复: 2

SX1280的SF10通讯失败(SF9/SF11正常)

[复制链接]

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2021-10-12 11:36:52 | 显示全部楼层 |阅读模式
10金钱
今天碰到个奇怪的现象,使用的SX1280
在之前代码上(使用的SF7),发送周期等会随着选择的SF进行改变,
在SF7的时候,RF通讯是正常的,
但是当我改成SF10的时候,接收端偶尔收到一包正确数据,后面收到的就是错误数据了,
于是我又将SF10改成了SF9 SF11进行测试,发现在SF9 SF11的时候,通讯是没问题的。
这就奇怪了,配置为SF10有什么不同的地方吗??????

下面是初始化的RF配置

  1. Radio.Init( &Callbacks );//初始化回调函数
  2.     Radio.SetRegulatorMode( USE_DCDC ); // 也可以设置为LDO模式但消耗更多功率 USE_DCDC  USE_LDO

  3.     SX1280_ID = Radio.GetFirmwareVersion();//获取芯片信息 0xA9B5 可用于测试SPI的读写情况
  4.     /***************************数据包类型的调制参数***************************************/
  5.     modulationParams.PacketType = PACKET_TYPE_LORA;             //lora

  6. //modulationParams.Params.LoRa.SpreadingFactor = LORA_SF10;    //扩频因子
  7.     modulationParams.Params.LoRa.SpreadingFactor = LORA_SF11;    //扩频因子

  8.     modulationParams.Params.LoRa.Bandwidth = LORA_BW_0800;      //带宽
  9.     modulationParams.Params.LoRa.CodingRate = LORA_CR_LI_4_5;   //编码率
  10.    
  11.     packetParams.PacketType = PACKET_TYPE_LORA;                 //lora
  12.     packetParams.Params.LoRa.PreambleLength = 12;               //前导码长度8符号    Number of symbols = PreambleLength[3:0] * ( 2^PreambleLength[7:4] )
  13.     packetParams.Params.LoRa.HeaderType = LORA_PACKET_FIXED_LENGTH; //LORA_PACKET_VARIABLE_LENGTH;//显性标头   LORA_PACKET_FIXED_LENGTH;//隐性标头(固定长度)
  14.     packetParams.Params.LoRa.PayloadLength = BUFFER_SIZE;                //有效负载 32
  15.     packetParams.Params.LoRa.CrcMode = LORA_CRC_ON;             //CRC 开启
  16.     packetParams.Params.LoRa.InvertIQ = LORA_IQ_NORMAL;   
  17.    /******************************************************************************************/
  18.       
  19.     Radio.SetStandby( STDBY_XOSC );                       //进入STDBY_RC 模式   STDBY_XOSC
  20.     Radio.SetPacketType( modulationParams.PacketType ); //设置数据包类型lora
  21.     Radio.SetModulationParams( &modulationParams );     //设置扩频因子 带宽 编码率
  22. switch(modulationParams.Params.LoRa.SpreadingFactor)
  23. {
  24.   case LORA_SF5:
  25.   case LORA_SF6:
  26.    SX1280HalWriteRegister(0x925,0x1E);//for SF5 SF6
  27.     break;  
  28.   case LORA_SF7:
  29.   case LORA_SF8:
  30.    SX1280HalWriteRegister(0x925,0x37);//for SF7 SF8
  31.     break;  
  32.   default:
  33.     SX1280HalWriteRegister(0x925,0x32);//for SF9 SF10 SF11 SF12
  34.     break;  
  35. }
  36.     Radio.SetPacketParams( &packetParams );             //设置数据包参数(前导码 标头 有效负载大小 CRC IQ)

  37.     Radio.SetRfFrequency(SX1280_Transfer_Frq[frq_i]);//频点设置
复制代码
在手册上就找到了,设置为不同的SF时,需要对0x925地址写不同的东西,但是我发现好像没啥区别...(在SF7的情况下测试,加上0x925的写操作和不加,没看到什么区别)

现在问题就是
sf=SF10,bw=BW_0800,cr=CR_LI_4_5,
进行通讯有问题。

下面是在SF9和SF10的时候采集到的波形,望大佬指点,SF10的时候还需要配置什么东西吗??  谢谢啦!



SF10采集的现象.png
SF9采集的现象.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

837

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3922
金钱
3922
注册时间
2019-9-4
在线时间
843 小时
发表于 2021-10-12 11:38:15 | 显示全部楼层
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2021-10-12 17:11:02 | 显示全部楼层
进一步测试,发现SF11虽然比SF10收到的正确数据次数多,但是对于实际应用上有问题,而SF9的时候,测试采集现象没问题,并且应用上测试也没什么问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-8 20:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表