ST意法半导体
直播中

李巍

8年用户 1532经验值
私信 关注
[问答]

可以使用setFrequency函数去更改RFM98PW LoRa模块的频率吗

嗨,大家好!
我们有两个 RFM98PW LoRa 模块,我们可以在 9 公里以外的地方成功地与这些模块进行通信。但是当我们将频率从 434 更改为大约 433.663 时,我们无法很好地沟通。它只是 *****。将这些 LoRa 模块与 Atmega2560 和 STM32F446RET6 一起使用。在 Atmega 中,所以在我们使用 setFrequency 函数来更改频率的库中。只用一个函数来改变频率就足够了吗?我们是否需要更改其他任何内容,例如带宽?
当我们改变频率时,接收器串行端口中的频率误差从 1 kHz 跃升至 32 kHz。
谢谢。


回帖(1)

高峰

2022-12-26 11:00:59
来自 LRWAN 库中的代码


  • /*!
  • * SX1276 definitions
  • */
  • #define XTAL_FREQ                                   32000000
  • #define FREQ_STEP                                   61.03515625
  • #define FREQ_STEP_8                                 15625 /* FREQ_STEP<<8 */


  • /* channel = Freq / FREQ_STEP */
  • #define SX_FREQ_TO_CHANNEL( channel, freq )                                                                       
  •     do                                                                                                            
  •     {                                                                                                            
  •         uint32_t initialFreqInt, initialFreqFrac;                                                                 
  •         initialFreqInt = freq / FREQ_STEP_8;                                                                     
  •         initialFreqFrac = freq - ( initialFreqInt * FREQ_STEP_8 );                                                
  •         channel = ( initialFreqInt << 8 ) + ( ( ( initialFreqFrac << 8 ) + ( FREQ_STEP_8 / 2 ) ) / FREQ_STEP_8 );
  •     }while( 0 )


  • void SX1276SetChannel(uint32_t freq)
  • {
  •     uint32_t channel;

  •     SX1276.Settings.Channel = freq;

  •     SX_FREQ_TO_CHANNEL(channel, freq);

  •     SX1276Write(REG_FRFMSB, (uint8_t)((channel >> 16) & 0xFF));
  •     SX1276Write(REG_FRFMID, (uint8_t)((channel >> 8) & 0xFF));
  •     SX1276Write(REG_FRFLSB, (uint8_t)(channel & 0xFF));
  • }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分