sx1278——sx1262信号强度检测RSSI记录


2024.5.13 第一次编写

2024.5.17 加入说明sx1262接收情况说明E22-900M22S

目录

前言

一、SX1278_RSSI_SNR

二、SX1262_RSSI_SNR

三、实验测试

1.sx1262收

1)扩频因子12

2)扩频因子7

2.SX1278收

1)sx1278发送,扩频因子7

2)sx1262发送,扩频因子7


前言

个人纪录只做参考。用lora模式做拉距测试,其中RSSI值是必不可少的一个数值,用来评估接收方信号强度


一、SX1278_RSSI_SNR

在sx1278中查阅手册可以知道官方给了两个RSSI数值,一个是packet给出的解释是接收最后一个包的RSSI平均值,所以这个packet只有在接收到RXDONE中断后才能读出有效值。还有一个就是瞬时值,瞬时值无所谓了要在接收的过程中读取,RXDONE产生后就为0。下面附上手册,本次测试用的仍是ebyte家的E32-400M22S,注意EBYTE家官网所提供的文档版本较低并没有细节提及RSSI和SNR,仍需要从SEM官网下载,我用的V7文档。且EBYTE示例程序并没有计算RSSI和SNR,这部分网上有很多实例就不再展出代码。且计算数值跟snr和频率有关系。

其中rssi与接收方的RX_GAIN有关,可知道sx1278有两种模式一种是AGC自动增益控制这个是默认模式,还有一种是LNA要手动控制大小最大值0db

二、SX1262_RSSI_SNR

SX1262实例程序中有RSSI和SNR读取函数,且相比SX1278,sx1262采用指令的形式读取数据。

要注意的是相比于sx1278增加了一个叫做解扩后的RSSI数值,这个是由于LORA采用扩频技术。

剩下两个值都是一样的定义只不过计算方式可能有所差别。

同理RSSI与接收方的前向电路有关,相比于sx1278,sx1262仅有一种模式LNA,在LNA下有两个子模式一个是低功耗一个是高功耗,也就是一个精度小一个大,默认是低功耗。

给出手册中的表述,还有ebyte家的示例程序代码。


int8e_t E22x_GetRssiInst( void )
{
    uint8e_t buf[1];
    int8e_t rssi = 0;

    E22x_ReadCommand( RADIO_GET_RSSIINST, buf, 1 );
    rssi = -buf[0] >> 1;
    return rssi;
}

void E22x_GetFskPacketStatus( PacketStatus_t *pktStatus )
{
    uint8e_t status[3];

    E22x_ReadCommand( RADIO_GET_PACKETSTATUS, status, 3 );  
  
    pktStatus->Params.Gfsk.RxStatus = status[0];
    pktStatus->Params.Gfsk.RssiSync = -status[1] >> 1;
    pktStatus->Params.Gfsk.RssiAvg = -status[2] >> 1;
    pktStatus->Params.Gfsk.FreqError = 0;
}

void E22x_GetLoraPacketStatus( PacketStatus_t *pktStatus )
{
    uint8e_t status[3];

    E22x_ReadCommand( RADIO_GET_PACKETSTATUS, status, 3 );

    pktStatus->Params.LoRa.RssiPkt = -status[0] >> 1;
    ( status[1] < 128 ) ? ( pktStatus->Params.LoRa.SnrPkt = status[1] >> 2 ) : ( pktStatus->Params.LoRa.SnrPkt = ( ( status[1] - 256 ) >> 2 ) );
    pktStatus->Params.LoRa.SignalRssiPkt = -status[2] >> 1;
    pktStatus->Params.LoRa.FreqError = FrequencyError;

}

 

三、实验测试

默认模式、带宽7.8k、频率434M、发射功率20dbm、前导码20,sx1262省电模式LNA,sx1278AGC.

1.sx1262收

2024.5.17 更正一下实验均采用434MHz,但采用的模块为E22-900M22S其中中心频率为934MHz,其中EBYTE在sx1262基础上加入了滤波器导致一下(434MHz)数据对应不上,再次对934MHz做出进一步实验

一下为934MHz满足E22-900M22S,发射功率20dBm

衰减器dBm数据包平均RSSI解扩后RSSI
70-54-55
60-42-43
50-32-33
40-22-23
30-10-11

1)扩频因子12

发送一个字节和发送n个字节都是一样的。

流程图:sx1262/sx1278 发送-------->>>>衰减器--------->>>>>sx1262接收

衰减器dBm

数据包平均RSSI

解扩后RSSI
70-82-81
60-75-75
50-63-63
40-52-53
30-44

-44

2)扩频因子7

流程图:sx1262/sx1278 发送-------->>>>衰减器--------->>>>>sx1262接收

衰减器dBm数据包平均RSSI解扩后RSSI
70-82-81
60-72-72
50-62-63
40-52-53
30-44-46
20-35-38

2.SX1278收

1)sx1278发送,扩频因子7

流程图:sx1278------>>>>>衰减器------->>>>>>>sx1278接收

衰减器发送1个字节,RSSI最后一包平均值发送4个字节发送6个字节发送8个发送10个
70-68-62-60-60-57
60-58-54-50-52-49
50-50-46-42-43-41、-38
40-17-23-25-27-27
30-9-14-17-18-18
20

2)sx1262发送,扩频因子7

流程图:sx1262------>>>>>衰减器------->>>>>>>sx1278接收

衰减器发送1个字节3个6个10个
70-60-60-53-52
60-50-52-42-40
50-41-40-32-27
40-6-7、-14-15-15
302-6-6

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SX1278是一款久经验证的低功耗无线收发器。为了编写SX1278收发程序,需要了解该芯片的工作原理和各个寄存器的功能。 首先,在开始使用SX1278之前,需要初始化相关参数。比如设置工作模式(发送或接收)、频率通道、码率、功率等。可以使用SPI接口与芯片进行通信,将数据写入寄存器中。接下来,需要配置中断,以便在接收到数据或传输完成时触发相应的中断信号。 在发送数据时,首先需要将数据写入发送缓冲区,并配置发送数据长度。然后,可以启动发送过程。芯片会自动将数据调制成RF信号并发送出去。在发送完成后,可以通过中断标志或状态寄存器来判断发送是否成功。 在接收数据时,首先需要配置接收参数,如同步字、载波检测等。然后,可以启动接收过程。芯片会不断地监听信道,当接收到匹配的信号后,会将数据写入接收缓冲区,并触发相应的中断信号。可以通过读取接收到的数据长度和数据内容来获取接收到的数据。 除了发送和接收数据,还可以通过SX1278的其他功能来实现更多的应用。比如,可以打开RSSI测量功能来获取信号强度;可以设置自动重发机制来提高通信可靠性;还可以设置CAD检测模式来进行信道空闲检测等。 总而言之,编写SX1278收发程序需要了解该芯片的寄存器功能和通信协议,以及掌握相关的数据处理和中断处理技巧。只有熟悉了SX1278的工作原理,才能更加高效地实现无线通信功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值