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数值。该数值表征了接收信号的强度,按照对数尺度来显示。数值越大,信号的强度越高。
读取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:北京音乐台
fm:101.4mhz:空闲频段。
前面的曲线显示,每当设置一次频率,rda5807内部的rssi都是从0开始测量,经过大约0.5秒之后,测量值大都稳定在恒定的数值。
所以通过设定频率扫描测量不同频率下的射频信号强度的时候,需要等到0.5秒钟之后再读取rssi,才能够获得比较稳定的数值。
(2)通过外部信号源的变化,读取rssi的变化情况
外部的射频信号源使用普通的数字合成信号发生器。ds345可以产生高达30mhz的信号。通过使用它的方波信号,利用其三次谐波可以达到80~110mhz范围内的射频信号。来检测rda5807接受信息的情况。
下面是设置ds345输出扫频,扫频的范围是28.970mhz~29.030mhz。扫描的速度为1khz, 扫描的波形呈现等腰三角形。这就模拟了一个使用三角波形进行调频的输出。
rda5807的频道设置在87mhz,在这个频率范围内,没有本地的调频电台。 使用示波器观察rda5807的左右输出。输出波形如下图所示,基本上与调制信号是一致的。
信号源的频率从28mhz变化到29mhz。它的三次谐波从84mhz,变化到87mhz,rda5807接收到的射频信号强度从29变化到55。变化曲线如下图所示:
信号的的频率从29mhz增加到30mhz,它的三次谐波的频率从87mhz变化到90mhz。rda5807接收到的射频信号的强度从55下降到30。数值变化去下如下图所示。
从前面的变化可以看到,信号的整个的变化过程大约持续了0.3秒左右。这表明了rda5807测量rssi的时间响应大约是0.3秒。
如果外部信号的强度变化速率大于0.3秒,在rda5807的rssi数值就会反应不了这么快速的变化。所获得的是信号强度变化的平均值。
(3)扫描80mhz~110mhz之间的调频广播信号强度
为了获得更加精细的扫描频谱的频率分辨率,将rda5807的频率间隙设置为:25khz。
相关的设置将会影响到寄存器03h的部分设置。见下面的表格:
相应的设置代码修改如下:
//------------------------------------------------------------------------------ #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点钟左右的各个调频广播信号的强度数据。
包括了总共22个fm电台的频谱,对于所有rssi大于33的频率设定为一个电台,它们对应的频率如下:


锐龙52600和i5-9400F哪个好
如何使用宏偷梁换柱
国外程序员的一天日常是什么样
一个教你逐步实现和适应简单的实词NLP任务的教程
开启MMU会出现的问题及解决方案
RDA5807的RSSI信号响应RF强度测试
金鸽科技发布R40 多功能4G工业路由器
基安云智慧供水解决方案:用“智”水之道捍卫城市生命线
中国封装基板产业发展现状分析
聊聊宝马奥迪那些隐藏得深还不好找的网关(Gateway)与诊断
什么成为了5G商用的跳板
小米狗狗定位器开售,可随时监测狗狗并进行定位
关于AR的8个方面的应用解析
新能源汽车渗透率明年有望冲刺40%
UMS微波检测器的特点
磁电式传感器和霍尔传感器的外观区别
在很多金融场景中,百融云创都运用了AI技术
小米6什么时候上市?小米6最新消息:小米6本月发布 成本提升告别1999元时代!
影响SMT元器件贴装偏差的因素是什么
华为nova6 5G版疑似曝光 采用极点全面屏+前置双摄像头的设计方案