老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[基于Atmega8及MSM7512的嵌入式Modem设计]
| -文章搜索 - 最新文章 - |

基于Atmega8及MSM7512的嵌入式Modem设计

发布时间:2005年8月27日 点击次数:639
来源:电子技术应用   作者:倪彬斌 吴明光 周志华 邹润民
 

    摘要:介绍了一种基于AVR单片机Atmega8和调制解调芯片MSM7512设计的嵌入式Modem,详细地阐述了Modem的硬件及软件设计方法。在设计中,鉴于单片机串口资源匮乏的问题,采用单片机上I/O模拟UART口的技术予以解决。上位机软件用Delphi语言编写,通过嵌入式Modem实现了计算机与远方设备之间的数据传送。

    关键词:嵌入式Modem Atmega8 MSM7512B 模拟串口

随着经济的发展,远程监控系统的应用日益广泛。其核心部分是远程信息交换,即系统需要在地域分布广泛的设备之间进行信息的交换及协调工作。对于某些采集点分散、传输量不大、对速度要求又不高的信息交换系统,目前有两种解决方案:一是采用Internet或现场总线技术,该方案铺设网络的费用高,维护量大;二是利用现有的电话网通过Modem进行数据传输,这样不仅可以摆脱伎的分布式总线系统繁琐的布线、中继、放大以及运行过程中维护量大等问题,而且系统扩展极为方便,基本不受设备地域的限制,该方案灵活实用且成本低廉。

图1

    嵌入式Modem主要由单片机(或DSP)和调制解调芯片构成。与通用Modem相比,嵌入式Modem具有体积小、易维护、外围电路简单、成本低廉等特点。在企业或住宅区中的远程监控系统使用嵌入式Modem,能够节约大量的人力和财力,大大提高自动水平,因此具有较广阔的应用前景。本文介绍一种基于Atmel公司AVR系列单片机Atmega8和OKI公司调制解调芯片MSM7512的嵌入式Modem。

1 嵌入式Modem的硬件设计

系统的原理框图如图1所示,上位机与PC机,下位机是远方的嵌入式Modem和设备。PC机是数据终端,通过嵌入式Modem与远方终端实现数据交换;嵌入式Modem以Atmega8为中心,控制MSM7512芯片实现数据的发送与接收,通过外围电路实现振铃检测、摘机、显示信息、呼叫远方Modem等,它以RS232接口标准与上位机相连。

1.1 Atmega8单片机简介

AVR单片机是美国Ateml公司生产的具有双结构的RISC单片机系列,具有较短的指令周期和较快的运行速度。Atmega8是基于2002年推出的一款新型AVR高档单片机,工作在16MHz时能达到16MIPS。该芯片内部集成了8K字节Flash、1K字节内部SRAM及512字节的E2PROM,具有丰富强大的硬件接口电路(32个通用寄存器,23个通用可编程I/O口,三个计数器,三个PWM通道,一个I2C的总线接口,一个USART接口,一个SPI接口,6通道的10位ADC及2通道的8位ADC),并且支持在线编程(ISP)和在应用程序(IAP)。由于采用了小引脚封装(PDIP28和TQFP/MLF32)形式,所以其价格仅与低档单片机相当,因此Atmgea8是一款性价比很高的8位单片机。

1.2 MSM7512简介

MSM7512是日本OKI公司生产的一种价格低廉、功耗低、性能良好的调制解调芯片。该芯片满足ITU-TV.23协议标准,由单电源(3~5V)供电,采用FSK半双工调制解调方式,通信速率为1200bps,低功耗(典型值仅25mW),稳定性好,具有片内回音消除电路,模拟输出可直接连入PSTN;并具有TTL接口,其FSK输出信号可直接驱动600Ω的通信电路,外围电路简单,可方便地与数字系统及计算机系统相连,广泛应用于嵌入式Modem、数据传输和家庭安防系统中。图2为该芯片的功能框图。

图2

    MSM7512有四种工作模式,由MOD1、MOD2端口进行控制。当MOD1=0、MOD2=0时,MSM7512工作于调制模式,XD输入为“0”或“1”的数字信号,AO端则对应输出频率为“2100Hz”或“1300Hz”的FSK信号;当MOD1=1、MOD2=0时,MSM7512工作于解调模式,A输入频率为“2100Hz”或“1300Hz”的FSK信号,RD则对应输出解调后的“0”或“1”数字信号;当MOD1=0、MOD2=1时,MSM7512工作于环路自测模式,用于检测芯片工作是否正常;当MOD1=1、MOD2=1时,MSM7512工作于节电模式,此时MSM7512功耗仅为0.1mW,其它模式一般功耗为25mW。在本设计中所使用的工作模式是FSK调制发送及接收模式。

在硬件设计中需要着重考虑的问题是:MSM7512是一块串行调制解调芯片,与单片机通过串口相连,而单片机上的USART串口也需要与上位机进行串行通信,但Atmega8只有这一个串口,就出现了串口资源不足的问题。如果仅仅为增加一个串口而使用可编程串行通信接口芯片8251,无疑会增加设计的复杂性和成本。而利用Atmega8的两个I/O口编程模拟一个UART串口的功能(即模拟串口),可以很好地解决这个问题。这将在软件设计部分具体介绍。

1.3 振铃检测和拨号电路

振铃检测与拨号电路如图3所示。它的工作原理很简单,在此不再多述。

图3

2 嵌入式Modem的软件设计

软件部分的设计包括上、下位机通信协议的制订、上位机程序和单片机程序的编写。其中上位机程序以Delphi为开发工具,单片机程序用ANSIC C编写。

2.1 上位机与下位机通信协议的制订

上位机与下位机之间的数据交换必须遵循一定的通信协议,通信双方才能按照该协议解析所传输的数据。就本设计而言,一台PC机要对应多个下位机,属于主从式结构。所制订的通信协议为:

前导码 目的地址 源地址 数据帧 CRC校验码

前导码使通信双方保持同步,目的地址和源地址就是各设备所对应的电话号码,当PC机发送数据时,先发送目的地址给所有下位机,如果某个从机被上位机寻址,它将接收主机接下来发出的数据帧,而其它的从机则将忽略数据帧;当PC机接收数据时,同样地,下位机先发送源地址再发数据帧给上位机。同样时,下位机先发送源地址再发数据帧给上位机。CRC校验码是为了防止传输出错而设计的。为设计方便,规定数据帧为32位,其中功能码为4位,参数为28位。功能码为0000时,参数表示的是设备传输数据;功能码为1111时,参数表示设备自检数据。

图4

    2.2 上位机软件的编写

上位机是一个数据发送与接收的终端,上位机软件的功能是:选择并发送要呼叫的电话号码;使计算机与嵌入式Modem能够通过RS232接口标准收发数据。由于Delphi是一种易学易用的面向对象的程序设计工具,因而采用它来编写上位机程序。在上位机程序中要能够对计算机串行口的硬件进行操作。然而Delphi本身不提供串行通信组件,因此需要调用Windows API函数建立一个串行通信组件Tcomm来对串口硬件实现控制,进而使用该组件完成串行通信功能。在设计中还需要使用其它一些组件如Button、Memo、RadioGroup等来完成软件界面的设计。

2.3 单片机程序设计

根据设计中单片机的任务设置一个全局变量TransOrReceFlag(规定值为0时,表示Modem处于接收状态;为1时,Modem处于发送状态),主程序根据它的值跳转到相应的子程序中。下面分别介绍子程序的编写过程。

嵌入式Modem发送数据:上位机按照通信协议通过串口向Atmega8先后发送目的地址(电话号码)和数据帧。单片机在USART接收完成中断服务程序中,将MSM7512设置为调制模式并使MSM7512与电话线连通,再控制双音多频信号发生器HT9200产生目的地址所对应的DTMF信号,送入MSM7512的外部信号输入端EAI,经内部放大后从AO输出端向电话线上发送所呼叫的电话号码,待与远方Modem建立起联系后,就可以通过模拟串口向MSM7512传送接下来所收到的数据帧。

嵌入式Modem接收数据:Atmega8外部计数口T1上有下降沿出现时,表明电话线上有振铃信号,可能有远方Modem要求和本地Modem进行数据传输。为防止误拨,规定了振铃信号需要连续出现的次数。当达到计数设定值时,单片机确认有远方Modem要进行数据传输,于是将MSM7512设置为调解模式,接通电话线,再通过模拟串口接收MSM7512传来的数据,经USART把数据传给上位机。

单片机程序中一个重要的部分是模拟UART串口的实现部分。在设计中用定时/计数器0产生合适的波特率,使接收和发送的数据符合异步串行通信数据帧的格式;一个普通I/O口作为TXD’,外部中断0口T0作为RXD’;在内存中开辟一块缓冲区模拟串口的数据接收/发送缓冲器。规定模拟串口中数据帧为1起始位,8个数据位,1个停止位,波特率为9600bps。下面就接收和发送两个过程介绍模拟串口的实现。

模拟串口接收数据:串行通信中数据帧都是从一个下降沿开始的。当T0口上有下降沿出现并触发中断时,表明MSM7512已经接收到远方传来的数据,单片机需要对所接收到的数据进行采样。在中断服务程序中初始化数据位计数器和定时/计数器0,设定其第一次定时时间为1.5位,因为从起始位需要延时1.5位才能进行数据位D0的采样(1.5位=1起始位+0.5D0位),如图4所示。接下来的8次采样的间隔一样,所以在定时器第一次计时溢出后,在每次溢出中断服务程序中重新装载的定时时间均为1位。采样后将所得数据存入缓冲区再送给上位机。图5是模拟串口接收数据的程序流程图。

模拟串口发送数据:与接收数据过程相比,发送数据要简单些。因为不需要采样,帧中所有位的时间长度是一样的,所以定时/计数器0的定时时间为固定值,即1位的时间。送出的第一位数据是起始位,通过接收方准备接收数据,然后从最低有效位LSB支最高有效位MSB,数据被一位一位地移出,在最末的是停止位(即逻辑1),用来让接收方区分发送的数据字节。

由于在上位机程序中集成了选择发送电话号码的功能,所以本文所介绍的嵌入式Modem能够灵活方便地与远方设备进行数据传输。它还具有体积小、外围电路简单、易维护、成本低廉等特点,具有较大的应用价值。


 


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
Keil C51开发系统基本知识1
简介:
Keil C51开发系统基本知识 1. 第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 下面详细介绍Keil C51......

Keil C51开发系统基本知识2
Keil C51开发系统基本知识3
通常采用什么方法来测试单片机系统的可靠性?
Delta-Sigma软件测量方式,是什么概念?
在开发单片机的系统时,具体有那些是衡量系统的稳定性的标准?
用微控制器或DSP电路控制开机/关机功能
在完成程序编写运行以后看到的结果是存储器中从R0到R7都被占用,而我根本就没用到几个,这是为什么?
在单片机C编成时,如何才能使生成的代码具有和汇编一样的效率
在嵌入式开发中软件抗干扰有哪些问题?如何解决?
 
下一个:[英文资料]RF MICRO DEVICES EXTENDS TRACTION IN CELLULAR HANDSET MARKET WITH OPTIMIZED BLUETOOTH? HARDWARE AND ADVANCED SOFTWARE SOLUTIONS
简介:
RF Micro Devices?, Inc. (Nasdaq: RFMD?), a leading provider of proprietary radio frequency integrated circuits (RFICs) for wireless communications applications, today announced that it has extended its traction in the cellular handset market with its complete line of system-on-chip (SoC) Bluetooth?......
 

上一个:[新闻热点]3大产业问题困扰国产手机 厂商年中全线告急

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒