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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)的串口轉(zhuǎn)FSK的通信模塊設(shè)計(jì)

          AVR單片機(jī)的串口轉(zhuǎn)FSK的通信模塊設(shè)計(jì)

          作者: 時間:2012-02-21 來源:網(wǎng)絡(luò) 收藏

          4 軟件實(shí)現(xiàn)
          ATmega48芯片具有4 KB內(nèi)部Flash和512字節(jié)的片內(nèi)SRAM,軟件實(shí)現(xiàn)需考慮資源分配問題,特別是SRAM使用情況。由于程序涉及、DTMF3種情況,理論上需要開辟6個緩沖區(qū)。如果這樣,每一個緩沖區(qū)的大小顯然不能確保達(dá)到實(shí)際通信數(shù)據(jù)量的需求。結(jié)合通信特點(diǎn),DTMF數(shù)據(jù)傳輸與數(shù)據(jù)傳輸不可能同時發(fā)生,因此FSK與DTMF可共用相同緩沖區(qū)。同樣接收與FSK發(fā)送、發(fā)送與
          FSK接收都不會同時發(fā)生,這樣通信只需要開辟兩個緩沖區(qū)就可以確保正常通信,考慮實(shí)際業(yè)務(wù)平臺數(shù)據(jù)量情況,軟件中為FSK接收開辟255字節(jié)緩沖區(qū)復(fù)用;FSK發(fā)送開辟45字節(jié)緩沖區(qū)復(fù)用。
          4.1 主程序?qū)崿F(xiàn)流程
          通信主程序包括:CPU初始化、CMX865初始化、初始化建鏈、串口通信和FSK通信子程序等。主程序流程如圖2所示。初始化建鏈環(huán)節(jié)是正常工作的基礎(chǔ),通過初始化建鏈操作,信息終端可以根據(jù)線路環(huán)境以及平臺超時機(jī)制對通信模塊參數(shù)進(jì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)和摘機(jī)狀態(tài);正常工作時僅在空閑狀態(tài)和摘機(jī)狀態(tài)之間切換。其中在空閑狀態(tài)檢測振鈴、根據(jù)狀態(tài)位執(zhí)行摘機(jī)、DTMF撥號等操作;在摘機(jī)狀態(tài)根據(jù)狀態(tài)位執(zhí)行FSK收發(fā)、脫線檢測、掛機(jī)控制等操作。串口數(shù)據(jù)解析與處理函數(shù)包含串口數(shù)據(jù)按命令集解析、對解析命令進(jìn)行應(yīng)答和狀態(tài)置位處理部分。這樣線路狀態(tài)處理函數(shù)和串口數(shù)據(jù)解析與處理函數(shù)通過狀態(tài)置位標(biāo)志緊密連接起來。FSK數(shù)據(jù)采用中斷方式直接接收,接收完畢后在摘機(jī)狀態(tài)下直接通過串口發(fā)送給信息終端。由于串口發(fā)送應(yīng)用相對單一,為簡單處理串口發(fā)送采用即時應(yīng)答處理方式,分散在通信主流程各子功能函數(shù)中實(shí)現(xiàn),提高了通信效率。通過鏈路保持函數(shù)判斷串口通信是否異常,通信模塊周期性地向信息終端發(fā)送鏈路保持命令,如果3次重發(fā)均未收到終端應(yīng)答命令,通信模塊將自動鎖閉線路,重新執(zhí)行初始化建鏈操作,實(shí)現(xiàn)串口異常的處理。

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

          b.jpg


          4.2 對外串口通信協(xié)議
          模塊采用標(biāo)準(zhǔn)串口通信,波特率為19 200 bps,10位異步方式。定義串口通信數(shù)據(jù)包格式為:0x1E+命令+校驗(yàn)和反碼(對命令的校驗(yàn)和反碼),其中部分命令以變長方式發(fā)送。串口通信主要命令有:模塊初始化、鏈路保持、DTMF接收/發(fā)送、FSK接收/發(fā)送、振鈴、掛機(jī)等,命令具體格式和描述此處不加詳述。模塊初始化上電后由通信模塊自動發(fā)起,直到正確接收到終端應(yīng)答初始化命令后,通信模塊才建鏈成功。信息終端初始化應(yīng)答命令主要提供FSK通信模塊參數(shù)配置信息。上電后如果FSK模塊未收到終端初始化應(yīng)答信息,則周期性地(每2 s)發(fā)送一次初始化建鏈命令,直到成功為止;模塊FSK通信過程中周期性地向終端發(fā)送鏈路保持命令,如果未收到終端應(yīng)答信息,則斷開FSK鏈接重新開始模塊初始化。
          4.3 串口通信實(shí)現(xiàn)
          串口通信往往采用SPI通信方式,通信模塊串口通信采用UART0控制/狀態(tài)寄存器和數(shù)據(jù)寄存器實(shí)現(xiàn)。串口通信子程序主要由串口發(fā)送/接收中斷子程序、串口接收命令解析子程序和串口組包發(fā)送子程序3部分組成。其中串口中斷接收程序?yàn)椋?br /> c.jpg
          具體執(zhí)行串口數(shù)據(jù)發(fā)送時,需要提供發(fā)送數(shù)據(jù)長度、發(fā)送起始地址、置UCSROB寄存器值(UCSR0B |=0x28)。串口接收命令解析子程序按照對外串口通信協(xié)議解析串口命令,并根據(jù)命令描述調(diào)用子程序代碼執(zhí)行相應(yīng)子功能操作。為了通信容錯處理,通信模塊需對接收串口數(shù)據(jù)進(jìn)行校驗(yàn),如果解析的串口命令格式正確,則向終端發(fā)送肯定應(yīng)答;否則發(fā)送否定應(yīng)答,等待終端重傳命令數(shù)據(jù)。串口組包發(fā)送子程序?qū)邮盏腇SK數(shù)據(jù)以及線路狀態(tài)等信息數(shù)據(jù),按照串口通信協(xié)議組包發(fā)送給信息終端。



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁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); })();