3. 調(diào)試8027使其發(fā)出單音FM信號
1. 硬件連接
本文中所有例子中我們都僅給MSI001使用天線,因為QN8027離得很近,發(fā)射端不需要使用天線
本程序中操作的管腳如下描述:
2. PWM輸出24MHz
QN8027芯片需要輸入24MHz的時鐘作為參考信號,在這里通過STM32H750的TIMER2產(chǎn)生24M的方波,提供給QN8027作為輸入?yún)⒖夹盘枴?/p>
PWM信號的關(guān)鍵參數(shù)是頻率和占空比,我們分別看一下如何設(shè)定TIM2來確定輸出PWM的頻率和占空比:
PWM的輸出頻率=計數(shù)器計數(shù)頻率/(計數(shù)器的計數(shù)上限+1),計數(shù)器計數(shù)頻率在上圖中是CK_CNT,它由時鐘和觸發(fā)控制模塊輸出的CK_PSC經(jīng)過PSC分頻器得到,因此我們在初始化TIM1的時候選擇時鐘源為CK_INT,預(yù)分頻器比為1(寄存器中寫入為0),這樣我們的CK_CNT是240MHz;而計數(shù)器的計數(shù)上限就是自動重載寄存器APR的值,設(shè)定為9;
PWM的占空比,由比較寄存器(CCR1-4的值)和計數(shù)器計數(shù)上限(APR的值)決定,設(shè)定CCR1為4的話,PWM1的占空比即為(4+1)/(9+1)= 50%。
具體TIMER輸出PWM方法介紹,可以回顧基礎(chǔ)實驗“實驗六TIM1輸出PWM”:
3. 硬件IIC接口配置
芯片的控制接口是I2C協(xié)議,要使芯片正常工作,首先I2C接口的操作要正常。這里利用QN8027的I2C支持可讀可寫,寫入0x00寄存器一個值,再讀出來。如果讀出和寫入的一致,說明I2C操作正常,芯片可以被控。這樣進行后續(xù)調(diào)試才有初步把握。
需要配置STM32H750的硬件I2C,然后發(fā)出控制字操作8027芯片,確認板卡和芯片正常工作。I2C工作速度設(shè)為100K.
也可以使用GPIO模擬I2C時序,可以回顧基礎(chǔ)實驗“實驗十五 矩陣鍵盤和數(shù)碼管顯示—模擬IIC”。
4. 編寫代碼
在main中使能PWM輸出,和讀寫QN8027寄存器
添加QN8027驅(qū)動代碼
5. PWM測試輸出
如果有條件,可以使用示波器測試QN8027_REFCLK管腳,觀測有無24M的波形。
6. Qn8027讀寫測試
在keil中用debug單步調(diào)試,先向寄存器0x00寫入值0x31,再讀取寄存器0x00的值,通過Watch窗口觀察變量qn8027_read_byte值為0X31.說明I2C讀寫正確。
如果讀出的值和寫入的值一致,說明I2C時序和8027硬件都沒有問題。那么我們就可以繼續(xù)下一步配置。
注意,I2C時序?qū)懭脒@一步看上去雖然簡單,卻是最經(jīng)常出問題的步驟。如果遇到8027沒有反應(yīng),建議用如下方法排查:
IO通斷測試:使用IO輸出高低電平,通過測量確定PCB焊接正確,且插對了孔位;
I2C時序測試:確定I2C的上拉電阻正確,使用示波器或邏輯分析儀捕獲發(fā)出的I2C時序,判斷是否I2C配置寄存器有錯誤;FPGA寫的I2C程序,則要特別留意是否有代碼bug。
8027如果沒有應(yīng)答,觀察是否有虛焊等情況(開發(fā)板發(fā)貨前經(jīng)過測試,基本上可以排除電源和8027的焊接問題)。
3.2 將H750內(nèi)部DAC輸出的1KHz正弦波調(diào)制到98.5MHz
下面,我們將使用單片機的PA4管腳發(fā)出單音(正弦波),頻率1KHz,峰峰值1600mVpp,直流偏置1.65V。接入FMSDR開發(fā)板的調(diào)制信號管腳DAC_L。單片機管腳PA15發(fā)出24MHz的PWM信號,提供芯片的參考時鐘。通過I2C接口控制QN8027芯片。
1. 硬件連接
將FM_SDR板卡和STM32H750開發(fā)板連接。
程序中操作的管腳如下描述:
2. DAC輸出1kHz正弦波
STM32H750開發(fā)板輸出1kHz的正弦波,通過Timer6產(chǎn)生25k頻率的觸發(fā)事件,DAC配置為外部timer6觸發(fā)中斷。正弦波表長度為25字長,每次timer6觸發(fā)事件發(fā)送,在中斷服務(wù)程序中一直循環(huán)發(fā)送波表。
也可以使用TIMER事件觸發(fā)DMA輸出波形方法,可以回顧基礎(chǔ)實驗“實驗二十八 DAC應(yīng)用定時器觸發(fā)實現(xiàn)DMA輸出波形”。
DAC驅(qū)動設(shè)計
定時器觸發(fā)DAC做DMA數(shù)據(jù)傳輸?shù)膶崿F(xiàn)思路 實現(xiàn)思路框圖如下:
3. QN8027設(shè)置輸出頻率為98.5MHZ
在qn8027.c文件中,添加如下代碼,配置qn8027寄存器如下,第一行是寄存器地址,第二行是寫入寄存器值。(下表對應(yīng)98.5M的頻點)。寄存器取值參考前面調(diào)試文檔。
I2C配置和操作在前一小節(jié)已經(jīng)講解,可以回顧前一小節(jié)查看。
4. 編寫代碼
在main中使能PWM輸出,初始化正弦波碼表,開啟TIM6和DAC。初始化qn8027頻率為98.5M.在TIM6_DAC_IRQHandler中斷中更新DAC值。
5. 1khz正弦波輸出測試
用示波器測量DAC輸出(PA4管腳),和經(jīng)過濾波后波形。CH1(黃色)是DAC發(fā)出的1Khz正弦波,CH2(藍色)是經(jīng)過硬件濾波后qn8027輸入管腳的波形。
測試點如下圖(濾波前波形測量R45下側(cè),濾波后波形測量R8左右都行):
6. 98.5MHz FM信號測試
配置好QN8027后,1KHz的正弦波單音就被調(diào)制在98.5MHz上,用FM收音機調(diào)到98.5MHz頻點上就可以聽到這個1KHz的“嘟”聲。 注意:如果當?shù)?8.5MHz上有電臺,可以換一個空白的頻點,避開已有的電臺。
成品收音機的功能是已知的,用已知來調(diào)試未知,是調(diào)試的基本思路。
除了使用成品收音機來驗證98.5M上FM調(diào)制的1KHz信號之外,我們也可以用m302的頻譜儀來驗證,因為m302的帶寬有50MHz,輸入的100MHz信號雖然有衰減,但是在頻域上還是能看見的。
這里涉及到欠采樣理論。欠采樣理論不在這里講解,以圖示來說明。
以98M的頻點為例,用100M采樣。信號是周期連續(xù)波,采樣脈沖是δ函數(shù)。采樣過程就相當于時域相乘,對應(yīng)頻域卷積。就是把信號的正負頻譜進行搬移。圖中畫出0附近的幾個搬移,-200M,-100M,0,100M,200M。為了看清楚,每對之間的高度畫的不一樣,便于區(qū)分??梢钥吹?,在100M位置的搬移上,-98M落在2M位置。
同樣的,如果以10M采樣率采樣,經(jīng)過多個奈奎斯特域的翻折,98M的信號也會落到2M位置上。
選擇5M帶寬(采樣率10MSPS),可以看到混疊到1.5MHz的FM信號和4MHz上的時鐘信號。如下圖。
從實驗過程可以看到,欠采樣會出現(xiàn)頻譜翻折,諧波翻折,混頻翻折,會有多個頻譜線。所以實際中如果要利用欠采樣來采樣高頻信號,需要添加濾波器。這里只是利用了欠采樣來查看QN8027是否發(fā)出了設(shè)置的頻點。
使用成品收音機或者使用頻譜儀,確認QN8027發(fā)出正確的單音FM信號后,我們就可以使用這個“已知的單音FM信號”來調(diào)試MSi001了。單音比直接收電臺的音頻更簡單直觀的看到MSi001的采集、解調(diào)和濾波各個步驟的波形,并和已知正確波形進行對比。
審核編輯:劉清
-
PWM
+關(guān)注
關(guān)注
114文章
5201瀏覽量
214972 -
I2C接口
+關(guān)注
關(guān)注
1文章
125瀏覽量
25392 -
QN8027
+關(guān)注
關(guān)注
2文章
3瀏覽量
1864 -
STM32H750
+關(guān)注
關(guān)注
1文章
16瀏覽量
1815
發(fā)布評論請先 登錄
相關(guān)推薦
![](https://file.elecfans.com/web2/M00/52/A5/pYYBAGLNFHWAGswQAALdFN5aors861.jpg)
哈爾濱文藝電臺fm頻道列表
FM調(diào)制/解調(diào)電路的設(shè)計方案分析
![<b class='flag-5'>FM</b>調(diào)制/<b class='flag-5'>解調(diào)</b>電路的設(shè)計方案分析](https://file.elecfans.com/web2/M00/4A/2B/pYYBAGKhvKWAW7kzAAAc8-wok4g822.png)
使用STM32調(diào)試FMSDR模塊及解調(diào)FM電臺(2)
![使用<b class='flag-5'>STM32</b><b class='flag-5'>調(diào)試</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模塊</b>及<b class='flag-5'>解調(diào)</b><b class='flag-5'>FM</b><b class='flag-5'>電臺</b>(2)](https://file.elecfans.com/web2/M00/70/5B/pYYBAGNHxFCAbfQkAAEuFJEY3fc723.png)
使用STM32調(diào)試FMSDR模塊及解調(diào)FM電臺(1)
![使用<b class='flag-5'>STM32</b><b class='flag-5'>調(diào)試</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模塊</b>及<b class='flag-5'>解調(diào)</b><b class='flag-5'>FM</b><b class='flag-5'>電臺</b>(1)](https://file1.elecfans.com/web2/M00/8C/1B/wKgZomSmK2eAOireAAaF7mT_qKw183.png)
使用STM32調(diào)試FMSDR模塊及解調(diào)FM電臺(3)
使用STM32調(diào)試FMSDR模塊及解調(diào)FM電臺(4)
![使用<b class='flag-5'>STM32</b><b class='flag-5'>調(diào)試</b><b class='flag-5'>FMSDR</b><b class='flag-5'>模塊</b>及<b class='flag-5'>解調(diào)</b><b class='flag-5'>FM</b><b class='flag-5'>電臺</b>(4)](https://file1.elecfans.com/web2/M00/8C/1B/wKgZomSmLzWAe0_iAAFNuQwdWqo450.png)
評論