NB模组的信号强度指示为RSRP, 范围[-140, -44]; 但是GPRS模组信号强度指示多为CSQ, 范围[0, 31];

RSRP信号描述:
RSRP是代表无线信号强度的关键参数,反映当前信道的路径损耗强度,用于小区覆盖的测量和小区选择/重选。
RSRP的取值范围:-44~-140dBm,值越大越好。
Rx≤-105,覆盖强度等级6,表示覆盖较差。业务基本无法连接。
-105<Rx≤-95,覆盖强度等级5,表示覆盖差。室外业务能够连接,但连接成功率低,室内业务基本无法连接。
-95<Rx≤-85,覆盖强度等级4,表示覆盖一般,室外能够连接,室内连接成功率低。
-85<Rx≤-75,覆盖强度等级3,表示覆盖较好,室内外都能够连接。
-75<Rx≤-65,覆盖强度等级2,表示覆盖好,室内外都能够很好的连接。
Rx>-65,覆盖强度等级1,表示覆盖非常好。

CSQ 信号强度描述:
CSQ指示RSSI强度,取值范围为0-31,数值越大信号越好。
CSQ值大于5,终端即可正常工作。若CSQ值小于5即不能正常工作。如果出现99表示信道无效。

以下算法将RSRP转换为CSQ显示,用于部分系统信号指示按CSQ范围显示的情况:

unsigned char RSRP2CSQ(signed short RSRP)
{
unsigned char csq = 0;

//限制RSRP范围
if(RSRP > -44 || RSRP < -140) return 0;

RSRP = -RSRP;

//映射为25~31信号 5格信号 满信号
if(RSRP <= 70) {
    csq = 25 + (70 - RSRP) / 3;
    if(csq > 31) csq = 31;
}
//映射为20~24信号 4格信号
else if(RSRP <= 80) {
    csq = 20 + (80 - RSRP) / 2;
}
//映射为15~19信号 3格信号
else if(RSRP <= 90) {
    csq = 15 + (90 - RSRP) / 2;
}
//映射为10~14信号 2格信号
else if(RSRP <= 100) {
    csq = 10 + (100 - RSRP) / 2;
}
//映射为5~9信号   1格信号
else if(RSRP <= 105) {
    csq = 5 + (105 - RSRP);
}
//无信号 RSRP小于 -115, 模组无法工作
//其余信号值固定显示为3
else {
    csq = RSRP > 115 ? 0 : 3;
}

return csq;

}