文章目錄
- 前言
- 一、測試資料
- 二、LORA波形參數設定
- 三、相關參數說明
-
- 1. LORA相關設定
- 2. 接收模式的使用場景
- 四、其他參數初始化
前言
SX1276 LORA通信,按照預設的設定可以正常使用。存在問題是,但設定擴頻因子或帶寬組合成較低的資料傳輸速率時,兩個節點之間無法通信。
一、測試資料
室内近距離通信成功率測試結果表:
SF | BW | 成功率 |
---|---|---|
7 | 125kHz | 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% |
8 | 125kHz | 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% |
9 | 125kHz | 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% |
10 | 125kHz | 100% 90% 98% 88% 94% 98% 94% 92% 96% 96% 92% 92% |
11 | 125kHz | 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% |
12 | 125kHz | 發射機未正常發送資料 |
相關測試資料參考https://blog.csdn.net/zhouxiangjun11211/article/details/110110297
- 其他條件不變,當SF=10時,近距離通信有丢包現象;
- 其他條件不變,當SF=12時,發射機未正常發送資料,設定SF=11,BW=6時,發射機同樣未正常發送資料;
二、LORA波形參數設定
- 波形參數,代碼接口
tLoRaSettings LoRaSettings =
{
0, // Setting change
434 , // RFFrequency
20, // Power
7, // SignalBw [0: 7.8kHz, 1: 10.4 kHz, 2: 15.6 kHz, 3: 20.8 kHz, 4: 31.2 kHz,
// 5: 41.6 kHz, 6: 62.5 kHz, 7: 125 kHz, 8: 250 kHz, 9: 500 kHz, other: Reserved]
7, // SpreadingFactor [6: 64, 7: 128, 8: 256, 9: 512, 10: 1024, 11: 2048, 12: 4096 chips]
2, // ErrorCoding [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8]
true, // CrcOn [0: OFF, 1: ON]
false, // ImplicitHeaderOn [0: OFF, 1: ON]
1, // RxSingleOn [0: Continuous, 1 Single]
0, // FreqHopOn [0: OFF, 1: ON]
4, // HopPeriod Hops every frequency hopping period symbols
700, // TxPacketTimeout
100, // RxPacketTimeout :8=100ms 7:80ms
128, // PayloadLength (used for implicit header mode)
};
- 對應波形參數設定表格:
參數 | 值 | 描述 |
---|---|---|
頻率 | 434 | 頻率設定434MHz |
功率 | 20 | SX1276輸出功率20dBm |
信号帶寬 | 7 | 對應信号帶寬125kHz |
擴頻因子 | 7 | 擴頻因子SF=7 |
編碼率 | 2 | 編碼率4/6 |
校驗位 | ture | 使能校驗位 |
隐式header | false | 設定為顯示header |
單一接收 | 1 | 單一接收模式 |
跳頻使能 | 關閉跳頻功能 | |
發射延時 | ||
接收延時 |
- 接收延時設定太小會導緻無法正常接收資料;
- 注意接收延時的設定與符号傳輸時間的對應關系,符号傳輸時間與接收延時成正比;
- SF=7,接收延時設定:1600;
三、相關參數說明
1. LORA相關設定
設定 | 描述 |
---|---|
睡眠模式 | 低功耗模式,該模式下隻能通過SPI和配置寄存器通路,LoRa FIFO不能通路。這是唯一允許FSK/OOK模式與LoRa模式切換的操作模式 |
待機模式 | 晶體振蕩器和LoRa基帶模式被開啟,而射頻部分和PLL則被關閉 |
RX連續模式 | SX1276将打開所有所需子產品,處理所有接收到的資料,直到客戶請求變更操作模式 |
RX單一模式 | SX1276将打開所有所需子產品,在接收到有效資料包前保持此狀态、随後切換回待機模式 |
CAD模式 | 在CAD模式下,裝置将檢測已知信道,已檢測LoRa前導碼信号 |
- 單一接收模式:數據機在一段時間内搜尋前導碼,如果在一定時間段内沒有檢查到前導碼,則觸發RxTimeout中斷,并回到待機模式;
- 前導碼檢索時間的長度,通過“RegSymb Timeout”寄存器修改;
- 連續接收模式:數據機在信道内連續搜尋掃描前導碼,當檢查到前導碼後,數據機繼續接收,直到資料包接收完,繼續等待下一個前導碼。
2. 接收模式的使用場景
- 單一接收模式通常應用在電池供電或對功耗要求敏感的系統中;
- 連續工作模式通常應用于對無低功耗要求的通信系統中;
四、其他參數初始化
void SX1276LoRaInit( void )
{
RFLRState = RFLR_STATE_IDLE;
SX1276LoRaSetDefaults( );
// We first load the device register structure with the default value (read from the device)
SX1276ReadBuffer( REG_LR_OPMODE, SX1276Regs + 1, 0x70 - 1 );
// Set the device in Sleep Mode
// SX1276LoRaSetOpMode( RFLR_OPMODE_SLEEP );
SX1276LR->RegLna = RFLR_LNA_GAIN_G1;
SX1276LR->RegLna = RFLR_LNA_BOOST_LF_BOOST;
SX1276WriteBuffer( REG_LR_OPMODE, SX1276Regs + 1, 0x70 - 1 );
// set the RF settings
SX1276LoRaSetRFFrequency( LoRaSettings.RFFrequency ); //set frequency
SX1276LoRaSetSpreadingFactor( LoRaSettings.SpreadingFactor ); // SF6 only operates in implicit header mode.
SX1276LoRaSetErrorCoding( LoRaSettings.ErrorCoding );
SX1276LoRaSetPacketCrcOn( LoRaSettings.CrcOn );
SX1276LoRaSetSignalBandwidth( LoRaSettings.SignalBw );
SX1276LoRaSetImplicitHeaderOn( LoRaSettings.ImplicitHeaderOn );
SX1276LoRaSetSymbTimeout( 0x3FF );
SX1276LoRaSetPayloadLength( LoRaSettings.PayloadLength );
SX1276LoRaSetLowDatarateOptimize( true );
SX1276LoRaSetPAOutput( RFLR_PACONFIG_PASELECT_PABOOST ); //Ñ¡Ôñ PA_BOOST ¹Ü½ÅÊä³öÐźÅ
SX1276LoRaSetPa20dBm( false ); //×î´óÊä³ö¹¦ÂÊ
LoRaSettings.Power = 4;
SX1276LoRaSetRFPower( LoRaSettings.Power );
}
// Set the device in Standby Mode
SX1276LoRaSetOpMode( RFLR_OPMODE_STANDBY );
}