RDA5807的RSSI信号响应RF强度测试

描述

RSSI:Received Signal StrengthIndicator,表明了接收机接收到的信号的强度。一般使用分贝(db)从0到-120db。RDA5807内部接收器中具有RSSI测量功能,通过软件读取该数值,来表征接收到的信号的强度。

RDA5807的RSSI信号响应有一定的时间,下面通过实际测试看到这个响应时间大约为0.5秒。
利用RDA5807可以对于某一地区的调频电台进行探测和扫描。

RDA5807的RSSI功能

RDA5807内部接收模块如下图所示。在模块的右下方,可以看到它具有/RBDS/RSSI模块。

RDA5807和RSSI相关的寄存器

根据RDA5807数据手册给出的信息。在读取的内部寄存器的0xB中,15:9数据位表示了RSSI数值。该数值表征了接收信号的强度,按照对数尺度来显示。数值越大,信号的强度越高。

RDA5807

读取RDA5807RSSI数据

使用外面的代码来读取RDA5807内部寄存器。由于RDA5807具有自动内部寄存器地址生成的功能。当开始一个读数据帧的时候,RDA5807内部的寄存器地址自动从0xA开始递增。

由于RDA5807内部的寄存器是16bit,所以要读到0xB寄存器的内容,需要从开始读寄存器开始,连续读取三个字节,才能够读到0xB寄存器的高八位内容。

下面代码显示了读取RDA5807内部四个字节的内容,然后返回其中第三个字节的内容。

void RDA5807I2CRead(uint8_t * pucData, int nLength) {
    HAL_I2C_Master_Receive(&hi2c1, RDA5807_I2C_ADD, pucData, nLength, 10);
}
unsigned char RDA5807ReadRSSL(void) {
    unsigned char ucData[4];
    RDA5807I2CRead(ucData, 4);
    return ucData[2] >> 1; // 该数据位应该右移一位,所得到的就是RSSI的数值了。
 }

代码中ucDatga[2]的高7位是RSSI,因此最后需要通过右移一位来获得RSSI数值。

扫描本地区的调频广播频道的电台强度

通过设置不同的FM接收频道,然后读取相应的RSSI,标准了本地区在FM广播段的电台的情况。

(1)设置完收音机的频率后,读取RSSI的变化情况 测试RDA5807的RSSI的响应变化速度。 下面分别测试设置频率为97.4MHz(北京音乐台)和101.4MHz(空闲频段),每隔2ms读取RSSI,连续读取256个数字显示的的强度曲线。

FM:97.4Mhz:北京音乐台

RDA5807

FM:101.4MHz:空闲频段。

RDA5807

前面的曲线显示,每当设置一次频率,RDA5807内部的RSSI都是从0开始测量,经过大约0.5秒之后,测量值大都稳定在恒定的数值。

所以通过设定频率扫描测量不同频率下的射频信号强度的时候,需要等到0.5秒钟之后再读取RSSI,才能够获得比较稳定的数值。

(2)通过外部信号源的变化,读取RSSI的变化情况

外部的射频信号源使用普通的数字合成信号发生器。DS345可以产生高达30Mhz的信号。通过使用它的方波信号,利用其三次谐波可以达到80~110Mhz范围内的射频信号。来检测RDA5807接受信息的情况。

下面是设置DS345输出扫频,扫频的范围是28.970Mhz~29.030Mhz。扫描的速度为1kHz, 扫描的波形呈现等腰三角形。这就模拟了一个使用三角波形进行调频的输出。

RDA5807的频道设置在87Mhz,在这个频率范围内,没有本地的调频电台。 使用示波器观察RDA5807的左右输出。输出波形如下图所示,基本上与调制信号是一致的。

RDA5807

信号源的频率从28Mhz变化到29Mhz。它的三次谐波从84Mhz,变化到87Mhz,RDA5807接收到的射频信号强度从29变化到55。变化曲线如下图所示:

RDA5807

信号的的频率从29Mhz增加到30MHz,它的三次谐波的频率从87Mhz变化到90Mhz。RDA5807接收到的射频信号的强度从55下降到30。数值变化去下如下图所示。

RDA5807

从前面的变化可以看到,信号的整个的变化过程大约持续了0.3秒左右。这表明了RDA5807测量RSSI的时间响应大约是0.3秒。

如果外部信号的强度变化速率大于0.3秒,在RDA5807的RSSI数值就会反应不了这么快速的变化。所获得的是信号强度变化的平均值。

(3)扫描80MHz~110MHz之间的调频广播信号强度

为了获得更加精细的扫描频谱的频率分辨率,将RDA5807的频率间隙设置为:25kHz。

相关的设置将会影响到寄存器03H的部分设置。见下面的表格:

RDA5807

相应的设置代码修改如下:

//------------------------------------------------------------------------------
#define RDA5807_TUNE_CONFIG_LENGTH  4
uint8_t RDA5807_tune_config[] = {
    0xd0, 0x0d,                             // Register 2
    0x00, 0x00,                             // Reigster 3
};
void RDA5807SetTuneConfig(uint16_t channel) {
    RDA5807_tune_config[2] = (uint8_t)(channel >> 2);
//    RDA5807_tune_config[3] = (uint8_t)(((channel & 0x3) << 6) | 0x10);
    RDA5807_tune_config[3] = (uint8_t)(((channel & 0x3) << 6) | 0x13);
}
void RDA5807SetChannel(float freq) {
//    g_nRDA5807Channel = (int)((freq - 87.0) * 10.0 + 0.5);
    g_nRDA5807Channel = (int)((freq - 87.0) * 40.0 + 0.5);
    RDA5807SetTuneConfig(g_nRDA5807Channel);
    RDA5807I2CWrite(RDA5807_tune_config, RDA5807_TUNE_CONFIG_LENGTH);
}

根据前两部的实验结果可以知道RDA5807的RSSI信号的响应时间大于0.3秒,所以在扫描频率的时候,每设置一个新的频率,等待1秒之后,再读取RDA5807内部的RSSI的数值。

扫描频率范围从80MHz到110Mhz,每隔25kHz测量一次,总共1200个数据。下面的曲线是经过20分钟的扫描之后获得的北京地区星期五下午2点钟左右的各个调频广播信号的强度数据。

RDA5807

包括了总共22个FM电台的频谱,对于所有RSSI大于33的频率设定为一个电台,它们对应的频率如下:

RDA5807

RDA5807

编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分