<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 基于IEEE802.1 5.4/ZigBee的語音通信系統(tǒng)

          基于IEEE802.1 5.4/ZigBee的語音通信系統(tǒng)

          作者: 時間:2012-03-09 來源:網絡 收藏

          2.2 發(fā)送接收子程序實現
          發(fā)送端獲取了A/D轉換的結果,并存儲于所開設的緩存中。在發(fā)送數據時,將存于緩存的數據,加上網絡層MAC層和物理層的幀頭,通過SPI總線發(fā)送到射頻發(fā)射芯片的發(fā)送FIFO中。為簡化傳輸數據,采用16位短地址尋址而非64位IEEE地址。接收數據時,首先射頻發(fā)射芯片監(jiān)聽信道中的數據,判斷數據是否發(fā)送該設備。如果是,則讀取該數據到接收FIFO,然后觸發(fā),通過SPI總線將數據發(fā)送到MCU;通過MCU處理,去掉各層的幀頭,最后將數據存放到指定的緩存區(qū)中。具體完成發(fā)送接收部分的子程序流程如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/155188.htm

          d.jpg


          2.3 反向控制與狀態(tài)切換
          在無線過程中,無論主機還是分機的CC2420模塊在某一時刻只能被配置成一種傳輸模式,即發(fā)射模式或接收模式,因此無線信道實質提供了一種半雙工方式。而在實際當中通話雙方不能像對講機那樣采用按鍵進行發(fā)射和接收模式的切換,所以既要保證數據的實時性和準確性,又要保證反向控制信號的有效傳輸,軟件的狀態(tài)切換成為迫切需要解決的問題。
          利用如圖4所示的收發(fā)子程序控制遠程端是否輸出方波。按鍵按下,則發(fā)送控制命令至遠程端,收到控制命令后,運用定時器的比較模式輸出方波。從考慮,每個通信節(jié)點同時具備收發(fā)功能。依據CC2420狀態(tài)機可以方便地進行狀態(tài)切換,每次發(fā)送完畢恢復無線收發(fā)模塊至接收狀態(tài)即可。

          3 結束語
          調試過程中,考慮到傳輸的同步性,避免信號無線接收與SPI讀取數據的速度RXFIFO使用沖突,接收端采用雙緩沖區(qū)的設計;另外由于每個節(jié)點同時具備收發(fā)功能,考慮到半雙工的特點,采用語音信號高優(yōu)先級,只在每次中斷檢測方波控制信號的方法,既保證了語音信號的實時傳輸,控制信號又實時有效。由于CC2420沒有專用的軟件監(jiān)聽包,語音傳輸信號用正弦波信號模擬,同時反向發(fā)射方波輸出控制信號。經過調試,最終在D/A輸出口,穩(wěn)定的輸出階梯狀正弦波,在喇叭輸出口,基本平滑的正弦波。實驗證明,該波形無消波失真且波形穩(wěn)定時,語音傳輸效果最佳,經測試,傳輸距離約達到50m。
          未使用獨立的ADC與DAC,使得成本和功耗更低;利用MSP430的5種省電模式,加上技術本身的低功耗、低成本特性,使得在僅用電池供電的情況下有更長的工作時間。系統(tǒng)涉及到通信原理、無線技術、抗干擾技術、軟件設計等多種理論和技術,為技術的廣泛應用提供了依據。


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();