0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机和调制解调芯片实现嵌入式Modem设计

电子设计 来源:电子技术应用 作者:倪彬斌;吴明光;周 2021-05-20 09:31 次阅读

作者:倪彬斌;吴明光;周志华;邹润民

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

基于单片机和调制解调芯片实现嵌入式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能够灵活方便地与远方设备进行数据传输。它还具有体积小、外围电路简单、易维护、成本低廉等特点,具有较大的应用价值。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    554

    文章

    8030

    浏览量

    349359
  • 单片机
    +关注

    关注

    6039

    文章

    44579

    浏览量

    636453
  • 监控系统
    +关注

    关注

    21

    文章

    3930

    浏览量

    175392
收藏 人收藏

    评论

    相关推荐

    基于ATMEGA8及MSM7512的嵌入式MODEM设计

    介绍了一种基于AVR单片机ATMEGA8和调制解调芯片MSM7512设计的嵌入式MODEM,详细
    发表于 03-07 12:38

    单片机嵌入式Internet技术的Web应用实现

    ,与MCS 8051系列单片机相比在性能上有很大的提高,在目前单片机开发中用得较多。因此利用AT90S8515单片机作为嵌入式系统的微处理器,通过网络控制
    发表于 11-24 18:10

    嵌入式系统中的MODEM

    嵌入式系统中的MODEM 近日研究MODEM心得不少,写出来,请大家提提意见。(一)协议按照调制解调协议的不同,数据传输速度亦各不相同。5
    发表于 04-18 22:55 57次下载

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

      介绍了一种基于AVR单片机Atmega8和调制解调芯片MSM7512设计的嵌入式Modem
    发表于 09-07 15:36 41次下载

    什么是嵌入式单片机?嵌入式单片机详情汇总

    嵌入式单片机,即嵌入式微控制器,指以微控制器为核心控制单元的嵌入到对象体系中的专用计算机系统,是应用十分广泛的一种嵌入式系统结构。
    发表于 11-13 09:39 6110次阅读

    单片机嵌入式的概念

      单片机嵌入式很多学者将他们混在一块,当往往被问起单片机嵌入式有啥区别的时候,他们的回答通常是二者都差不多吧。没有一个清晰明确的回答。接下来,就让我们着重谈谈
    发表于 07-10 11:21 2441次阅读

    单片机嵌入式的转化

    提到单片机很多人都很觉得不陌生,大街小巷上面电子产品都用到。近几年随着嵌入式的发展,做单片机的一帮家伙突然觉得大祸临头一般发现自己熟悉掌握的单片机慢慢被
    发表于 09-22 10:13 1082次阅读

    到底什么是嵌入式? 什么是单片机

    到底什么是嵌入式?什么是单片机
    的头像 发表于 02-25 16:13 1.5w次阅读

    怎么学习嵌入式单片机

    关于怎么学习嵌入式单片机,我从自身学生经历、工作经验和对于嵌入式单片机学习的建议三个方面回答:
    发表于 07-15 17:37 1001次阅读

    单片机嵌入式区别

    单片机嵌入式芯片平台片上资源价格应用场景不同开发模式技术特征芯片平台主流单片机平台:51、PIC、STM32、AVR、MSP430等主流
    发表于 10-20 14:21 4次下载
    <b class='flag-5'>单片机</b>与<b class='flag-5'>嵌入式</b>区别

    单片机or嵌入式linux

    最近很多童鞋投票并咨询如何从单片机转做嵌入式Linux开发。看来读者圈中做单片机,RTOS的不少。尽管我目前从事Linux/Android方面的嵌入式开发工作,但是读书的时候也有5年左
    发表于 11-01 16:26 17次下载
    <b class='flag-5'>单片机</b>or<b class='flag-5'>嵌入式</b>linux

    是否要从单片机转为嵌入式Linux

    最近很多童鞋投票并咨询如何从单片机转为嵌入式Linux开发。看来读者圈中做单片机,RTOS的不少。尽管小编目前从事Linux/Android方面的嵌入式开发工作,但是读书的时候也有5年
    发表于 11-13 20:51 11次下载
    是否要从<b class='flag-5'>单片机</b>转为<b class='flag-5'>嵌入式</b>Linux

    单片机嵌入式的区别

    ,价格低,应用领域大多为小家电,终端设备。 嵌入式片上资源丰富,价格高,应用领域广泛,基本可以适用于任何领域。开发模式 单片机一般都是裸机开发,程序规模较小,只有在比较高端的芯片上才会使用RTOS
    发表于 11-15 12:36 15次下载
    <b class='flag-5'>单片机</b>和<b class='flag-5'>嵌入式</b>的区别

    1.单片机嵌入式的关系(3)

    单片机嵌入式的关系什么是单片机?什么是嵌入式单片机嵌入式的核心差异
    发表于 12-01 15:51 16次下载
    1.<b class='flag-5'>单片机</b>和<b class='flag-5'>嵌入式</b>的关系(3)

    嵌入式单片机开发的“时钟”是如何实现的?

    嵌入式单片机开发的“时钟”是如何实现的? 嵌入式单片机时钟的概述 嵌入式
    的头像 发表于 10-25 15:07 1156次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>单片机</b>开发的“时钟”是如何<b class='flag-5'>实现</b>的?