基于A(yíng)tmega8及MSM7512的嵌入式Modem設計

發(fā)布時(shí)間:2010-6-11 16:40    發(fā)布者:techieboy
關(guān)鍵詞: Atmega8 , MODEM , MSM7512
隨著(zhù)經(jīng)濟的發(fā)展,遠程監控系統的應用日益廣泛。其核心部分是遠程信息交換,即系統需要在地域分布廣泛的設備之間進(jìn)行信息的交換及協(xié)調工作。對于某些采集點(diǎn)分散、傳輸量不大、對速度要求又不高的信息交換系統,目前有兩種解決方案:一是采用Internet或現場(chǎng)總線(xiàn)技術(shù),該方案鋪設網(wǎng)絡(luò )的費用高,維護量大;二是利用現有的電話(huà)網(wǎng)通過(guò)Modem進(jìn)行數據傳輸,這樣不僅可以擺脫伎的分布式總線(xiàn)系統繁瑣的布線(xiàn)、中繼、放大以及運行過(guò)程中維護量大等問(wèn)題,而且系統擴展極為方便,基本不受設備地域的限制,該方案靈活實(shí)用且成本低廉。


圖1
 
嵌入式Modem主要由單片機(或DSP)和調制解調芯片構成。與通用Modem相比,嵌入式Modem具有體積小、易維護、外圍電路簡(jiǎn)單、成本低廉等特點(diǎn)。在企業(yè)或住宅區中的遠程監控系統使用嵌入式Modem,能夠節約大量的人力和財力,大大提高自動(dòng)水平,因此具有較廣闊的應用前景。本文介紹一種基于Atmel公司AVR系列單片機Atmega8和OKI公司調制解調芯片MSM7512的嵌入式Modem。

1 嵌入式Modem的硬件設計

系統的原理框圖如圖1所示,上位機與PC機,下位機是遠方的嵌入式Modem和設備。PC機是數據終端,通過(guò)嵌入式Modem與遠方終端實(shí)現數據交換;嵌入式Modem以Atmega8為中心,控制MSM7512芯片實(shí)現數據的發(fā)送與接收,通過(guò)外圍電路實(shí)現振鈴檢測、摘機、顯示信息、呼叫遠方Modem等,它以RS232接口標準與上位機相連。

1.1 Atmega8單片機簡(jiǎn)介

AVR單片機是美國Ateml公司生產(chǎn)的具有雙結構的RISC單片機系列,具有較短的指令周期和較快的運行速度。Atmega8是基于2002年推出的一款新型AVR高檔單片機,工作在16MHz時(shí)能達到16MIPS。該芯片內部集成了8K字節Flash、1K字節內部SRAM及512字節的E2PROM,具有豐富強大的硬件接口電路(32個(gè)通用寄存器,23個(gè)通用可編程I/O口,三個(gè)計數器,三個(gè)PWM通道,一個(gè)I2C的總線(xiàn)接口,一個(gè)USART接口,一個(gè)SPI接口,6通道的10位ADC及2通道的8位ADC),并且支持在線(xiàn)編程(ISP)和在應用程序(IAP)。由于采用了小引腳封裝(PDIP28和TQFP/MLF32)形式,所以其價(jià)格僅與低檔單片機相當,因此Atmgea8是一款性?xún)r(jià)比很高的8位單片機。

1.2 MSM7512簡(jiǎn)介

MSM7512是日本OKI公司生產(chǎn)的一種價(jià)格低廉、功耗低、性能良好的調制解調芯片。該芯片滿(mǎn)足ITU-TV.23協(xié)議標準,由單電源(3~5V)供電,采用FSK半雙工調制解調方式,通信速率為1200bps,低功耗(典型值僅25mW),穩定性好,具有片內回音消除電路,模擬輸出可直接連入PSTN;并具有TTL接口,其FSK輸出信號可直接驅動(dòng)600Ω的通信電路,外圍電路簡(jiǎn)單,可方便地與數字系統及計算機系統相連,廣泛應用于嵌入式Modem、數據傳輸和家庭安防系統中。圖2為該芯片的功能框圖。


圖2
 
MSM7512有四種工作模式,由MOD1、MOD2端口進(jìn)行控制。當MOD1=0、MOD2=0時(shí),MSM7512工作于調制模式,XD輸入為“0”或“1”的數字信號,AO端則對應輸出頻率為“2100Hz”或“1300Hz”的FSK信號;當MOD1=1、MOD2=0時(shí),MSM7512工作于解調模式,A輸入頻率為“2100Hz”或“1300Hz”的FSK信號,RD則對應輸出解調后的“0”或“1”數字信號;當MOD1=0、MOD2=1時(shí),MSM7512工作于環(huán)路自測模式,用于檢測芯片工作是否正常;當MOD1=1、MOD2=1時(shí),MSM7512工作于節電模式,此時(shí)MSM7512功耗僅為0.1mW,其它模式一般功耗為25mW。在本設計中所使用的工作模式是FSK調制發(fā)送及接收模式。

在硬件設計中需要著(zhù)重考慮的問(wèn)題是:MSM7512是一塊串行調制解調芯片,與單片機通過(guò)串口相連,而單片機上的USART串口也需要與上位機進(jìn)行串行通信,但Atmega8只有這一個(gè)串口,就出現了串口資源不足的問(wèn)題。如果僅僅為增加一個(gè)串口而使用可編程串行通信接口芯片8251,無(wú)疑會(huì )增加設計的復雜性和成本。而利用Atmega8的兩個(gè)I/O口編程模擬一個(gè)UART串口的功能(即模擬串口),可以很好地解決這個(gè)問(wèn)題。這將在軟件設計部分具體介紹。

1.3 振鈴檢測和撥號電路

振鈴檢測與撥號電路如圖3所示。它的工作原理很簡(jiǎn)單,在此不再多述。


圖3
 
2 嵌入式Modem的軟件設計

軟件部分的設計包括上、下位機通信協(xié)議的制訂、上位機程序和單片機程序的編寫(xiě)。其中上位機程序以Delphi為開(kāi)發(fā)工具,單片機程序用ANSIC C編寫(xiě)。

2.1 上位機與下位機通信協(xié)議的制訂

上位機與下位機之間的數據交換必須遵循一定的通信協(xié)議,通信雙方才能按照該協(xié)議解析所傳輸的數據。就本設計而言,一臺PC機要對應多個(gè)下位機,屬于主從式結構。所制訂的通信協(xié)議為:

前導碼 目的地址 源地址 數據幀 CRC校驗碼

前導碼使通信雙方保持同步,目的地址和源地址就是各設備所對應的電話(huà)號碼,當PC機發(fā)送數據時(shí),先發(fā)送目的地址給所有下位機,如果某個(gè)從機被上位機尋址,它將接收主機接下來(lái)發(fā)出的數據幀,而其它的從機則將忽略數據幀;當PC機接收數據時(shí),同樣地,下位機先發(fā)送源地址再發(fā)數據幀給上位機。同樣時(shí),下位機先發(fā)送源地址再發(fā)數據幀給上位機。CRC校驗碼是為了防止傳輸出錯而設計的。為設計方便,規定數據幀為32位,其中功能碼為4位,參數為28位。功能碼為0000時(shí),參數表示的是設備傳輸數據;功能碼為1111時(shí),參數表示設備自檢數據。


圖4
 
2.2 上位機軟件的編寫(xiě)

上位機是一個(gè)數據發(fā)送與接收的終端,上位機軟件的功能是:選擇并發(fā)送要呼叫的電話(huà)號碼;使計算機與嵌入式Modem能夠通過(guò)RS232接口標準收發(fā)數據。由于Delphi是一種易學(xué)易用的面向對象的程序設計工具,因而采用它來(lái)編寫(xiě)上位機程序。在上位機程序中要能夠對計算機串行口的硬件進(jìn)行操作。然而Delphi本身不提供串行通信組件,因此需要調用Windows API函數建立一個(gè)串行通信組件Tcomm來(lái)對串口硬件實(shí)現控制,進(jìn)而使用該組件完成串行通信功能。在設計中還需要使用其它一些組件如Button、Memo、RadioGroup等來(lái)完成軟件界面的設計。

2.3 單片機程序設計

根據設計中單片機的任務(wù)設置一個(gè)全局變量TransOrReceFlag(規定值為0時(shí),表示Modem處于接收狀態(tài);為1時(shí),Modem處于發(fā)送狀態(tài)),主程序根據它的值跳轉到相應的子程序中。下面分別介紹子程序的編寫(xiě)過(guò)程。

嵌入式Modem發(fā)送數據:上位機按照通信協(xié)議通過(guò)串口向Atmega8先后發(fā)送目的地址(電話(huà)號碼)和數據幀。單片機在USART接收完成中斷服務(wù)程序中,將MSM7512設置為調制模式并使MSM7512與電話(huà)線(xiàn)連通,再控制雙音多頻信號發(fā)生器HT9200產(chǎn)生目的地址所對應的DTMF信號,送入MSM7512的外部信號輸入端EAI,經(jīng)內部放大后從AO輸出端向電話(huà)線(xiàn)上發(fā)送所呼叫的電話(huà)號碼,待與遠方Modem建立起聯(lián)系后,就可以通過(guò)模擬串口向MSM7512傳送接下來(lái)所收到的數據幀。

嵌入式Modem接收數據:Atmega8外部計數口T1上有下降沿出現時(shí),表明電話(huà)線(xiàn)上有振鈴信號,可能有遠方Modem要求和本地Modem進(jìn)行數據傳輸。為防止誤撥,規定了振鈴信號需要連續出現的次數。當達到計數設定值時(shí),單片機確認有遠方Modem要進(jìn)行數據傳輸,于是將MSM7512設置為調解模式,接通電話(huà)線(xiàn),再通過(guò)模擬串口接收MSM7512傳來(lái)的數據,經(jīng)USART把數據傳給上位機。

單片機程序中一個(gè)重要的部分是模擬UART串口的實(shí)現部分。在設計中用定時(shí)/計數器0產(chǎn)生合適的波特率,使接收和發(fā)送的數據符合異步串行通信數據幀的格式;一個(gè)普通I/O口作為T(mén)XD’,外部中斷0口T0作為RXD’;在內存中開(kāi)辟一塊緩沖區模擬串口的數據接收/發(fā)送緩沖器。規定模擬串口中數據幀為1起始位,8個(gè)數據位,1個(gè)停止位,波特率為9600bps。下面就接收和發(fā)送兩個(gè)過(guò)程介紹模擬串口的實(shí)現。


 
模擬串口接收數據:串行通信中數據幀都是從一個(gè)下降沿開(kāi)始的。當T0口上有下降沿出現并觸發(fā)中斷時(shí),表明MSM7512已經(jīng)接收到遠方傳來(lái)的數據,單片機需要對所接收到的數據進(jìn)行采樣。在中斷服務(wù)程序中初始化數據位計數器和定時(shí)/計數器0,設定其第一次定時(shí)時(shí)間為1.5位,因為從起始位需要延時(shí)1.5位才能進(jìn)行數據位D0的采樣(1.5位=1起始位+0.5D0位),如圖4所示。接下來(lái)的8次采樣的間隔一樣,所以在定時(shí)器第一次計時(shí)溢出后,在每次溢出中斷服務(wù)程序中重新裝載的定時(shí)時(shí)間均為1位。采樣后將所得數據存入緩沖區再送給上位機。圖5是模擬串口接收數據的程序流程圖。

模擬串口發(fā)送數據:與接收數據過(guò)程相比,發(fā)送數據要簡(jiǎn)單些。因為不需要采樣,幀中所有位的時(shí)間長(cháng)度是一樣的,所以定時(shí)/計數器0的定時(shí)時(shí)間為固定值,即1位的時(shí)間。送出的第一位數據是起始位,通過(guò)接收方準備接收數據,然后從最低有效位LSB支最高有效位MSB,數據被一位一位地移出,在最末的是停止位(即邏輯1),用來(lái)讓接收方區分發(fā)送的數據字節。

由于在上位機程序中集成了選擇發(fā)送電話(huà)號碼的功能,所以本文所介紹的嵌入式Modem能夠靈活方便地與遠方設備進(jìn)行數據傳輸。它還具有體積小、外圍電路簡(jiǎn)單、易維護、成本低廉等特點(diǎn),具有較大的應用價(jià)值。
本文地址:http://selenalain.com/thread-12782-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页