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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ATmega48單片機的串口轉FSK通信模塊設計

          基于ATmega48單片機的串口轉FSK通信模塊設計

          作者: 時間:2013-06-27 來源:網(wǎng)絡 收藏

          隨著信息技術與網(wǎng)絡技術的飛速發(fā)展,信息交互應用業(yè)務給人類生活帶來更多的便利,信息終端表現(xiàn)出巨大的市場潛力。但是由于終端用戶環(huán)境不同,用戶信息交互方式可能不同,目前常用的有IP方式、方式以及無線方式等。為了能夠提高終端市場競爭力,減少系統(tǒng)開發(fā)成本投入,與終端程序獨立是較為理想的解決方案。本文采用芯片及CMX865芯片實現(xiàn),,用戶與業(yè)務平臺之間進行信息交互,相對于終端來說就是簡單的通信。

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

          1 介紹

          AVR增強型RISC(精簡指令集)結構的高性能、低功耗的8位CMOS微控制器。微控制器具有可控制的上電復位和可編程的掉電檢測電路、經(jīng)過標定的片內RC振蕩器、片內外18個中斷源和5種休眠模式。由于其先進的指令集以及單時鐘周期指令執(zhí)行時間,ATmega48的數(shù)據(jù)吞吐率高達1 MIPs/MHz,運行速度比普通的高出10倍,從而可以緩解系統(tǒng)在功耗和處理速度之間的矛盾。

          其片內集成了4 KB的系統(tǒng)內可編程Flash、256字節(jié)的EEPROM、512字節(jié)的SRAM。其外設具有可編程的串行USART接口、可工作于主機/從機模式的SPI串行接口;存在2個具有獨立預分頻器和比較器功能的8位定時/計數(shù)器和1個具有預分頻器、比較功能和捕捉功能的16位定時/計數(shù)器、具有獨立片內振蕩器的可編程看門狗定時器等。ATmega48/88/168芯片硬件電路可以完全兼容,完全可以根據(jù)軟件實際需求靈活選擇AVR芯片,極大地方便系統(tǒng)的開發(fā)與研制。

          2 CMX865簡介

          CMX865是CML公司新出的一款DTMF編/解碼器/FSK調制解調器復合IC芯片,它采用單個高速串行總線控制,與大多數(shù)串行接口兼容。 CMX865的主要特征是:

          ◆供電電壓2.7~5.5 V,低功耗操作模式;

          ◆支持V.23、Bell202 FSK 1200 bps編碼/解碼;

          ◆集成高可靠性DTMF、編碼器/解碼器;

          ◆集成振鈴檢測功能,支持語音探測功能。

          3 硬件

          圖1為轉FSK通信模塊電路。系統(tǒng)主要以AVRATmega48芯片和CMX865調制/解調芯片為硬件架構,ATmega48芯片利用C-BUS總線對CMX865芯片進行控制操作,實現(xiàn)FSK通信。CMX865芯片的IRQN終端與CPU芯片的外部中斷0(INT0)相連,確保軟件可以采用中斷方式接收/發(fā)送FSK數(shù)據(jù)。CMX865芯片的時鐘信號、片選信號、響應應答數(shù)據(jù)信號、接收控制數(shù)據(jù)信號分別與ATmega48芯片的普通I/O接口引腳相連,CPU可以通過模擬口線方式對CMX865芯片進行控制。

          基于ATmega48單片機的串口轉FSK通信模塊設計

          圖1還提供了基本的FSK接收/發(fā)送數(shù)據(jù)接口電路和振鈴檢測電路。在FSK發(fā)送電路中,CMX865芯片TXA(15引腳)處外接電阻的目的是匹配芯片接口對線路的交流阻抗。在FSK接收電路中,CMX865芯片RXAFB(9引腳)與RXAN(10引腳)之間的電容以及隔離變壓器之間電容的目的是濾除高頻噪聲;通過調節(jié)接收電路中兩個電阻R1、R2的阻值即可改變接收端提供給CMX865芯片信號的幅度。在振鈴檢測電路中,IC1是光電耦合器,不振鈴時光電三極管截止,RING為高電平;振鈴時,振鈴信號經(jīng)過電容耦合及穩(wěn)壓管穩(wěn)壓,振鈴電壓使IC1內發(fā)光二極管發(fā)光,照射到光電三極管的基極上導致光電三極管導通,RING為低電平,通過ATmega48引腳檢測到低電平的振鈴信號。

          4 軟件實現(xiàn)

          ATmega48芯片具有4 KB內部Flash和512字節(jié)的片內SRAM,軟件實現(xiàn)需考慮資源分配問題,特別是SRAM使用情況。由于程序涉及通信、DTMF通信和FSK通信3種情況,理論上需要開辟6個緩沖區(qū)。如果這樣,每一個緩沖區(qū)的大小顯然不能確保達到實際通信數(shù)據(jù)量的需求。結合FSK通信特點,DTMF數(shù)據(jù)傳輸與FSK數(shù)據(jù)傳輸不可能同時發(fā)生,因此FSK與DTMF可共用相同緩沖區(qū)。同樣串口接收與FSK發(fā)送、串口發(fā)送與FSK接收都不會同時發(fā)生,這樣通信只需要開辟兩個緩沖區(qū)就可以確保模塊正常通信,考慮實際業(yè)務平臺數(shù)據(jù)量情況,軟件設計中為FSK接收開辟255字節(jié)緩沖區(qū)復用;FSK發(fā)送開辟45字節(jié)緩沖區(qū)復用。

          4.1 主程序實現(xiàn)流程

          通信模塊主程序包括:CPU初始化、CMX865初始化、初始化建鏈、串口通信和FSK通信子程序等。主程序流程如圖2所示。初始化建鏈環(huán)節(jié)是模塊正常工作的基礎,通過初始化建鏈操作,信息終端可以根據(jù)線路環(huán)境以及平臺超時機制對通信模塊參數(shù)進行設置,確保通信的穩(wěn)定性。通信主流程循環(huán)執(zhí)行3個子功能函數(shù):線路狀態(tài)處理函數(shù)、串口數(shù)據(jù)解析與處理函數(shù)、鏈路保持函數(shù)。線路狀態(tài)處理函數(shù)設計了3種線路狀態(tài),即初始狀態(tài)、空閑狀態(tài)和摘機狀態(tài);正常工作時僅在空閑狀態(tài)和摘機狀態(tài)之間切換。其中在空閑狀態(tài)檢測振鈴、根據(jù)狀態(tài)位執(zhí)行摘機、DTMF撥號等操作;在摘機狀態(tài)根據(jù)狀態(tài)位執(zhí)行FSK收發(fā)、脫線檢測、掛機控制等操作。串口數(shù)據(jù)解析與處理函數(shù)包含串口數(shù)據(jù)按命令集解析、對解析命令進行應答和狀態(tài)置位處理部分。這樣線路狀態(tài)處理函數(shù)和串口數(shù)據(jù)解析與處理函數(shù)通過狀態(tài)置位標志緊密連接起來。FSK數(shù)據(jù)采用中斷方式直接接收,接收完畢后在摘機狀態(tài)下直接通過串口發(fā)送給信息終端。由于串口發(fā)送應用相對單一,為簡單處理串口發(fā)送采用即時應答處理方式,分散在通信主流程各子功能函數(shù)中實現(xiàn),提高了通信效率。通過鏈路保持函數(shù)判斷串口通信是否異常,通信模塊周期性地向信息終端發(fā)送鏈路保持命令,如果3次重發(fā)均未收到終端應答命令,通信模塊將自動鎖閉線路,重新執(zhí)行初始化建鏈操作,實現(xiàn)串口異常的處理。

          4.2 對外串口通信協(xié)議

          模塊采用標準串口通信,波特率為19 200 bps,10位異步方式。定義串口通信數(shù)據(jù)包格式為:0x1E+命令+校驗和反碼(對命令的校驗和反碼),其中部分命令以變長方式發(fā)送。串口通信主要命令有:模塊初始化、鏈路保持、DTMF接收/發(fā)送、FSK接收/發(fā)送、振鈴、掛機等,命令具體格式和描述此處不加詳述。模塊初始化上電后由通信模塊自動發(fā)起,直到正確接收到終端應答初始化命令后,通信模塊才建鏈成功。信息終端初始化應答命令主要提供FSK通信模塊參數(shù)配置信息。上電后如果FSK模塊未收到終端初始化應答信息,則周期性地(每2 s)發(fā)送一次初始化建鏈命令,直到成功為止;模塊FSK通信過程中周期性地向終端發(fā)送鏈路保持命令,如果未收到終端應答信息,則斷開FSK鏈接重新開始模塊初始化。

          數(shù)字通信相關文章:數(shù)字通信原理


          通信相關文章:通信原理


          分頻器相關文章:分頻器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(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); })();