0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于單片機(jī)和調(diào)制解調(diào)芯片實(shí)現(xiàn)嵌入式Modem設(shè)計(jì)

電子設(shè)計(jì) ? 來源:電子技術(shù)應(yīng)用 ? 作者:倪彬斌;吳明光;周 ? 2021-05-20 09:31 ? 次閱讀

作者:倪彬斌;吳明光;周志華;鄒潤民

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

基于單片機(jī)和調(diào)制解調(diào)芯片實(shí)現(xiàn)嵌入式Modem設(shè)計(jì)

圖1

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

1 嵌入式Modem的硬件設(shè)計(jì)

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

1.1 Atmega8單片機(jī)簡介

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

1.2 MSM7512簡介

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

圖2

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

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

1.3 振鈴檢測和撥號電路

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

圖3

2 嵌入式Modem的軟件設(shè)計(jì)

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

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

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

前導(dǎo)碼 目的地址 源地址 數(shù)據(jù)幀 CRC校驗(yàn)碼

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

圖4

2.2 上位機(jī)軟件的編寫

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

2.3 單片機(jī)程序設(shè)計(jì)

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

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

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

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

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

模擬串口發(fā)送數(shù)據(jù):與接收數(shù)據(jù)過程相比,發(fā)送數(shù)據(jù)要簡單些。因?yàn)椴恍枰蓸?,幀中所有位的時(shí)間長度是一樣的,所以定時(shí)/計(jì)數(shù)器0的定時(shí)時(shí)間為固定值,即1位的時(shí)間。送出的第一位數(shù)據(jù)是起始位,通過接收方準(zhǔn)備接收數(shù)據(jù),然后從最低有效位LSB支最高有效位MSB,數(shù)據(jù)被一位一位地移出,在最末的是停止位(即邏輯1),用來讓接收方區(qū)分發(fā)送的數(shù)據(jù)字節(jié)。

由于在上位機(jī)程序中集成了選擇發(fā)送電話號碼的功能,所以本文所介紹的嵌入式Modem能夠靈活方便地與遠(yuǎn)方設(shè)備進(jìn)行數(shù)據(jù)傳輸。它還具有體積小、外圍電路簡單、易維護(hù)、成本低廉等特點(diǎn),具有較大的應(yīng)用價(jià)值。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • dsp
    dsp
    +關(guān)注

    關(guān)注

    554

    文章

    8058

    瀏覽量

    349649
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6040

    文章

    44604

    瀏覽量

    637116
  • 監(jiān)控系統(tǒng)

    關(guān)注

    21

    文章

    3939

    瀏覽量

    175914
收藏 人收藏

    評論

    相關(guān)推薦

    基于ATMEGA8及MSM7512的嵌入式MODEM設(shè)計(jì)

    介紹了一種基于AVR單片機(jī)ATMEGA8和調(diào)制解調(diào)芯片MSM7512設(shè)計(jì)的嵌入式MODEM,詳細(xì)
    發(fā)表于 03-07 12:38

    單片機(jī)嵌入式Internet技術(shù)的Web應(yīng)用實(shí)現(xiàn)

    ,與MCS 8051系列單片機(jī)相比在性能上有很大的提高,在目前單片機(jī)開發(fā)中用得較多。因此利用AT90S8515單片機(jī)作為嵌入式系統(tǒng)的微處理器,通過網(wǎng)絡(luò)控制
    發(fā)表于 11-24 18:10

    單片機(jī)如何控制MODEM

    目前用到MODEM 的場合越來越多,其中有些會需要智能控制,如無人值守的無線調(diào)制解調(diào)器、部分網(wǎng)絡(luò)應(yīng)用中的MODEM 等。筆者在多次開發(fā)MODEM 設(shè)備、利用
    發(fā)表于 04-16 10:16 ?25次下載

    基于Atmega8及MSM7512的嵌入式Modem設(shè)計(jì)

      介紹了一種基于AVR單片機(jī)Atmega8和調(diào)制解調(diào)芯片MSM7512設(shè)計(jì)的嵌入式Modem,
    發(fā)表于 09-07 15:36 ?41次下載

    什么是嵌入式單片機(jī)?嵌入式單片機(jī)詳情匯總

    嵌入式單片機(jī),即嵌入式微控制器,指以微控制器為核心控制單元的嵌入到對象體系中的專用計(jì)算機(jī)系統(tǒng),是應(yīng)用十分廣泛的一種嵌入式系統(tǒng)結(jié)構(gòu)。
    發(fā)表于 11-13 09:39 ?6115次閱讀

    單片機(jī)嵌入式的概念

      單片機(jī)嵌入式很多學(xué)者將他們混在一塊,當(dāng)往往被問起單片機(jī)嵌入式有啥區(qū)別的時(shí)候,他們的回答通常是二者都差不多吧。沒有一個(gè)清晰明確的回答。接下來,就讓我們著重談?wù)?/div>
    發(fā)表于 07-10 11:21 ?2450次閱讀

    單片機(jī)嵌入式的轉(zhuǎn)化

    提到單片機(jī)很多人都很覺得不陌生,大街小巷上面電子產(chǎn)品都用到。近幾年隨著嵌入式的發(fā)展,做單片機(jī)的一幫家伙突然覺得大禍臨頭一般發(fā)現(xiàn)自己熟悉掌握的單片機(jī)慢慢被
    發(fā)表于 09-22 10:13 ?1088次閱讀

    到底什么是嵌入式? 什么是單片機(jī)?

    到底什么是嵌入式?什么是單片機(jī)?
    的頭像 發(fā)表于 02-25 16:13 ?1.5w次閱讀

    怎么學(xué)習(xí)嵌入式單片機(jī)

    關(guān)于怎么學(xué)習(xí)嵌入式單片機(jī),我從自身學(xué)生經(jīng)歷、工作經(jīng)驗(yàn)和對于嵌入式單片機(jī)學(xué)習(xí)的建議三個(gè)方面回答:
    發(fā)表于 07-15 17:37 ?1007次閱讀

    單片機(jī)嵌入式區(qū)別

    單片機(jī)嵌入式芯片平臺片上資源價(jià)格應(yīng)用場景不同開發(fā)模式技術(shù)特征芯片平臺主流單片機(jī)平臺:51、PIC、STM32、AVR、MSP430等主流
    發(fā)表于 10-20 14:21 ?4次下載
    <b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>嵌入式</b>區(qū)別

    單片機(jī)or嵌入式linux

    最近很多童鞋投票并咨詢?nèi)绾螐?b class='flag-5'>單片機(jī)轉(zhuǎn)做嵌入式Linux開發(fā)。看來讀者圈中做單片機(jī),RTOS的不少。盡管我目前從事Linux/Android方面的嵌入式開發(fā)工作,但是讀書的時(shí)候也有5年左
    發(fā)表于 11-01 16:26 ?17次下載
    <b class='flag-5'>單片機(jī)</b>or<b class='flag-5'>嵌入式</b>linux

    是否要從單片機(jī)轉(zhuǎn)為嵌入式Linux

    最近很多童鞋投票并咨詢?nèi)绾螐?b class='flag-5'>單片機(jī)轉(zhuǎn)為嵌入式Linux開發(fā)。看來讀者圈中做單片機(jī),RTOS的不少。盡管小編目前從事Linux/Android方面的嵌入式開發(fā)工作,但是讀書的時(shí)候也有5年
    發(fā)表于 11-13 20:51 ?11次下載
    是否要從<b class='flag-5'>單片機(jī)</b>轉(zhuǎn)為<b class='flag-5'>嵌入式</b>Linux

    單片機(jī)嵌入式的區(qū)別

    ,價(jià)格低,應(yīng)用領(lǐng)域大多為小家電,終端設(shè)備。 嵌入式片上資源豐富,價(jià)格高,應(yīng)用領(lǐng)域廣泛,基本可以適用于任何領(lǐng)域。開發(fā)模式 單片機(jī)一般都是裸機(jī)開發(fā),程序規(guī)模較小,只有在比較高端的芯片上才會使用RTOS
    發(fā)表于 11-15 12:36 ?15次下載
    <b class='flag-5'>單片機(jī)</b>和<b class='flag-5'>嵌入式</b>的區(qū)別

    1.單片機(jī)嵌入式的關(guān)系(3)

    單片機(jī)嵌入式的關(guān)系什么是單片機(jī)?什么是嵌入式單片機(jī)嵌入式的核心差異
    發(fā)表于 12-01 15:51 ?16次下載
    1.<b class='flag-5'>單片機(jī)</b>和<b class='flag-5'>嵌入式</b>的關(guān)系(3)

    嵌入式單片機(jī)開發(fā)的“時(shí)鐘”是如何實(shí)現(xiàn)的?

    嵌入式單片機(jī)開發(fā)的“時(shí)鐘”是如何實(shí)現(xiàn)的? 嵌入式單片機(jī)時(shí)鐘的概述 嵌入式
    的頭像 發(fā)表于 10-25 15:07 ?1179次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>單片機(jī)</b>開發(fā)的“時(shí)鐘”是如何<b class='flag-5'>實(shí)現(xiàn)</b>的?