赞
踩
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
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 | 单一接收模式 |
跳频使能 | 0 | 关闭跳频功能 |
发射延时 | ||
接收延时 |
设置 | 描述 |
---|---|
睡眠模式 | 低功耗模式,该模式下只能通过SPI和配置寄存器访问,LoRa FIFO不能访问。这是唯一允许FSK/OOK模式与LoRa模式切换的操作模式 |
待机模式 | 晶体振荡器和LoRa基带模式被开启,而射频部分和PLL则被关闭 |
RX连续模式 | SX1276将打开所有所需模块,处理所有接收到的数据,直到客户请求变更操作模式 |
RX单一模式 | SX1276将打开所有所需模块,在接收到有效数据包前保持此状态、随后切换回待机模式 |
CAD模式 | 在CAD模式下,设备将检测已知信道,已检测LoRa前导码信号 |
单一接收模式:调制解调器在一段时间内搜索前导码,如果在一定时间段内没有检查到前导码,则触发RxTimeout中断,并回到待机模式;
前导码检索时间的长度,通过“RegSymb Timeout”寄存器修改;
连续接收模式:调制解调器在信道内连续搜索扫描前导码,当检查到前导码后,调制解调器继续接收,直到数据包接收完,继续等待下一个前导码。
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 ); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。