在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

  • <dfn id="79stg"></dfn>
    <object id="79stg"><div id="79stg"><label id="79stg"></label></div></object>
    <ruby id="79stg"><dl id="79stg"><noscript id="79stg"></noscript></dl></ruby>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 利用PLL(LM567)做頻率解調(diào)的實例

      利用PLL(LM567)做頻率解調(diào)的實例

      作者: 時間:2016-11-29 來源:網(wǎng)絡(luò) 收藏
      這是最近做的一個很有意思的案子,是一個玩具上用的藍牙控制器。
      條件限定為:一個MONO的藍牙音頻模塊,把它做成藍牙遙控器,而且,控制的時候還要播放主機走藍牙過來的聲音。
      同時,這個藍牙模塊沒有數(shù)據(jù)片可以走,直接輸出載著直流的音頻差分信號。
      討論的結(jié)果就是,在要播放的聲音里混音進人耳聽不到的頻率部分,然后在藍牙音頻模塊輸出端把數(shù)據(jù)解調(diào)出來。
      解調(diào)部分


      核心部分就是LM567的解調(diào)端,中心頻率設(shè)定在人耳基本聽不到的18.5Khz
      核心的部分是音調(diào)檢測,用了一款NS家很老的專門做音調(diào)檢測的LM567。


      其原理就是利用本地RC震蕩產(chǎn)生一個頻率,與輸入頻率進行鑒頻,8腳是專門做鑒頻輸出用。

      f0的公式電容用uF,電阻用KOmh,頻率為kHz

      本文引用地址:http://www.biyoush.com/article/201611/323455.htm

      算出來18.5Khz下
      Cx=6.8nF
      Rx=7.5K
      但實際調(diào)試的時候RX建議用10K的微調(diào)電阻,因為其他器件可能會有誤差

      帶寬跟C2和輸入信號的有效值有關(guān)。
      Vi是直接取藍牙輸出的還沒過功放的小信號,振幅很小,所以實際上電路的帶寬會很小,這是有利于做頻率辨識的,以防諧波以及聲音文件里夾雜的各種頻率信號的干擾。
      這里C2用的0.1uF,C3用的10uF。測量出來帶寬在500~1kHz左右。
      電源用5V,跟后端解碼的單片機電壓一致。
      有18.5Khz輸入的時候,8腳輸出低電平。
      焊好的板子如下~

      聲音部分
      首先用一個叫做SweepGen的軟件來做音頻發(fā)生,用Total Recorder的虛擬聲卡映射把生成的聲音捕捉下來。



      注意SweepGen和Total Recoder默認的電平和音量不是0db,記得調(diào)節(jié)到0db的原始聲音狀態(tài)。
      在SweepGen里面記得把波形設(shè)置成正弦,因為18.5Khz的方波的諧波能聽出來。
      編輯聲音妥妥的就得靠Adobe Audition了,cool edit是它的前身。其實聲音生產(chǎn)也可以用它,只是我沒找到在哪生成正弦波形。




      在Audition里面可以看到,剪輯的聲音頻譜落點很明顯。
      解調(diào)部分
      因為播放器在播放的時候可能會淡出淡入,以及藍牙模塊剛開始播放的時候會開啟內(nèi)部codec所以正式的編碼數(shù)據(jù)前要加一段靜音。

      經(jīng)過測試,18.5Khz的信號要維持50ms以上,LM567的輸出低電平才跟著18.5Khz的持續(xù)時間接近,所以一幀數(shù)據(jù)長度暫時設(shè)置為50ms。

      由于無輸入的時候解調(diào)部分輸出為高,所以同步頭用一個低電平來做下降沿觸發(fā),在觸發(fā)MCU這邊的中斷后對IO進行采樣,1ms采樣一次,50ms為一個幀,算上采樣內(nèi)執(zhí)行延時,一幀共采樣32次,超過16次為低就認為是0。

      MCU用的是8051核的新塘N79E8132,2塊錢一顆的單片機

      采樣的代碼段:
      for (cntbit=0;cntbit<8;cntbit++)
      {
      sample=0;
      for(samcnt=0;samcnt<32;samcnt++)
      {
      sample=sample+(P0&0X1); //
      Delay1ms(1); //read process
      }//
      //printf("sample%d = %d ",cntbit,sample);
      if(sample <16) //HIGH/LOW LEVEL SET
      {
      state_t=state_t | (0x1<
      }
      }

      這里的delay是新塘的bsp包里用定時器標志位來做的,并且用一個IO反轉(zhuǎn)測過執(zhí)行延時才得出32次循環(huán)50ms的結(jié)果。
      RC的頻率是22M。
      同步頭設(shè)定為0101,后面四位作為命令位

      上一頁 1 2 下一頁

      關(guān)鍵詞: PLLLM567頻率解

      評論


      技術(shù)專區(qū)

      關(guān)閉