RSSI:Received Signal StrengthIndicator,表明了接收機(jī)接收到的信號的強(qiáng)度。一般使用分貝(db)從0到-120db。RDA5807內(nèi)部接收器中具有RSSI測量功能,通過軟件讀取該數(shù)值,來表征接收到的信號的強(qiáng)度。
RDA5807的RSSI信號響應(yīng)有一定的時(shí)間,下面通過實(shí)際測試看到這個響應(yīng)時(shí)間大約為0.5秒。
利用RDA5807可以對于某一地區(qū)的調(diào)頻電臺進(jìn)行探測和掃描。
RDA5807的RSSI功能
RDA5807內(nèi)部接收模塊如下圖所示。在模塊的右下方,可以看到它具有/RBDS/RSSI模塊。
RDA5807和RSSI相關(guān)的寄存器
根據(jù)RDA5807數(shù)據(jù)手冊給出的信息。在讀取的內(nèi)部寄存器的0xB中,15:9數(shù)據(jù)位表示了RSSI數(shù)值。該數(shù)值表征了接收信號的強(qiáng)度,按照對數(shù)尺度來顯示。數(shù)值越大,信號的強(qiáng)度越高。
讀取RDA5807RSSI數(shù)據(jù)
使用外面的代碼來讀取RDA5807內(nèi)部寄存器。由于RDA5807具有自動內(nèi)部寄存器地址生成的功能。當(dāng)開始一個讀數(shù)據(jù)幀的時(shí)候,RDA5807內(nèi)部的寄存器地址自動從0xA開始遞增。
由于RDA5807內(nèi)部的寄存器是16bit,所以要讀到0xB寄存器的內(nèi)容,需要從開始讀寄存器開始,連續(xù)讀取三個字節(jié),才能夠讀到0xB寄存器的高八位內(nèi)容。
下面代碼顯示了讀取RDA5807內(nèi)部四個字節(jié)的內(nèi)容,然后返回其中第三個字節(jié)的內(nèi)容。
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; // 該數(shù)據(jù)位應(yīng)該右移一位,所得到的就是RSSI的數(shù)值了。 }
代碼中ucDatga[2]的高7位是RSSI,因此最后需要通過右移一位來獲得RSSI數(shù)值。
掃描本地區(qū)的調(diào)頻廣播頻道的電臺強(qiáng)度
通過設(shè)置不同的FM接收頻道,然后讀取相應(yīng)的RSSI,標(biāo)準(zhǔn)了本地區(qū)在FM廣播段的電臺的情況。
(1)設(shè)置完收音機(jī)的頻率后,讀取RSSI的變化情況 測試RDA5807的RSSI的響應(yīng)變化速度。 下面分別測試設(shè)置頻率為97.4MHz(北京音樂臺)和101.4MHz(空閑頻段),每隔2ms讀取RSSI,連續(xù)讀取256個數(shù)字顯示的的強(qiáng)度曲線。
FM:97.4Mhz:北京音樂臺
FM:101.4MHz:空閑頻段。
前面的曲線顯示,每當(dāng)設(shè)置一次頻率,RDA5807內(nèi)部的RSSI都是從0開始測量,經(jīng)過大約0.5秒之后,測量值大都穩(wěn)定在恒定的數(shù)值。
所以通過設(shè)定頻率掃描測量不同頻率下的射頻信號強(qiáng)度的時(shí)候,需要等到0.5秒鐘之后再讀取RSSI,才能夠獲得比較穩(wěn)定的數(shù)值。
(2)通過外部信號源的變化,讀取RSSI的變化情況
外部的射頻信號源使用普通的數(shù)字合成信號發(fā)生器。DS345可以產(chǎn)生高達(dá)30Mhz的信號。通過使用它的方波信號,利用其三次諧波可以達(dá)到80~110Mhz范圍內(nèi)的射頻信號。來檢測RDA5807接受信息的情況。
下面是設(shè)置DS345輸出掃頻,掃頻的范圍是28.970Mhz~29.030Mhz。掃描的速度為1kHz, 掃描的波形呈現(xiàn)等腰三角形。這就模擬了一個使用三角波形進(jìn)行調(diào)頻的輸出。
RDA5807的頻道設(shè)置在87Mhz,在這個頻率范圍內(nèi),沒有本地的調(diào)頻電臺。 使用示波器觀察RDA5807的左右輸出。輸出波形如下圖所示,基本上與調(diào)制信號是一致的。
信號源的頻率從28Mhz變化到29Mhz。它的三次諧波從84Mhz,變化到87Mhz,RDA5807接收到的射頻信號強(qiáng)度從29變化到55。變化曲線如下圖所示:
信號的的頻率從29Mhz增加到30MHz,它的三次諧波的頻率從87Mhz變化到90Mhz。RDA5807接收到的射頻信號的強(qiáng)度從55下降到30。數(shù)值變化去下如下圖所示。
從前面的變化可以看到,信號的整個的變化過程大約持續(xù)了0.3秒左右。這表明了RDA5807測量RSSI的時(shí)間響應(yīng)大約是0.3秒。
如果外部信號的強(qiáng)度變化速率大于0.3秒,在RDA5807的RSSI數(shù)值就會反應(yīng)不了這么快速的變化。所獲得的是信號強(qiáng)度變化的平均值。
(3)掃描80MHz~110MHz之間的調(diào)頻廣播信號強(qiáng)度
為了獲得更加精細(xì)的掃描頻譜的頻率分辨率,將RDA5807的頻率間隙設(shè)置為:25kHz。
相關(guān)的設(shè)置將會影響到寄存器03H的部分設(shè)置。見下面的表格:
相應(yīng)的設(shè)置代碼修改如下:
//------------------------------------------------------------------------------ #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); }
根據(jù)前兩部的實(shí)驗(yàn)結(jié)果可以知道RDA5807的RSSI信號的響應(yīng)時(shí)間大于0.3秒,所以在掃描頻率的時(shí)候,每設(shè)置一個新的頻率,等待1秒之后,再讀取RDA5807內(nèi)部的RSSI的數(shù)值。
掃描頻率范圍從80MHz到110Mhz,每隔25kHz測量一次,總共1200個數(shù)據(jù)。下面的曲線是經(jīng)過20分鐘的掃描之后獲得的北京地區(qū)星期五下午2點(diǎn)鐘左右的各個調(diào)頻廣播信號的強(qiáng)度數(shù)據(jù)。
包括了總共22個FM電臺的頻譜,對于所有RSSI大于33的頻率設(shè)定為一個電臺,它們對應(yīng)的頻率如下:
編輯:hfy
-
接收機(jī)
+關(guān)注
關(guān)注
8文章
1178瀏覽量
53377 -
RF
+關(guān)注
關(guān)注
65文章
3038瀏覽量
166749 -
RSSI
+關(guān)注
關(guān)注
2文章
95瀏覽量
27682 -
RDA5807
+關(guān)注
關(guān)注
1文章
9瀏覽量
3882
發(fā)布評論請先 登錄
相關(guān)推薦
評論