电子工程师的网站
首 页
|
新闻资讯
|
最新产品
|
解决方案
|
技术参数
设计应用
电路图
|
技术资料
|
芯片资料
|
技术论坛
现在位置:
首页
>
设计应用
>
单片机
> 详细信息
单片机:51系列单片机双CPU系统通信方法
来源: 时间: 2007-5-25 16:01:10
引 言
本文介绍一种新颖的方法来实现51系列单片机双CPU系统。该方法灵活地运用了51单片机的ID工作方式,使没有HOLD功能的51单片机能够直接通过片外RAM进行数据通信。不但硬件和软件的实现都比较简单,数据传输速度快,而且不涉及高成本特殊器件。对一般51单片机系统的设计有一定的参考意义。
1 实现双处理器的一般方法
① 使用双口RAM。这种方法方便地实现了CPU之间的通信,在选择CPU接口时具有较大的灵活性;但这种方法会增加电路设计的难度和成本。
② 利用I/O口进行并行通信。这种方法既要用I/O口传送数据,又要用I/O口来进行传送的控制,因此占用较多的I/O口;而且控制过程涉及进行通信的两个CPU,软件设计比较复杂。
③ 利用串口进行通信。使用UART或I2C总线来联系CPU也是常用的方法。这种方法实现简单,只是传输速度较慢。
④共享内存。共享内存实际上又有两种不同实现。第一种如LON网络的Neuron节点芯片,利用不同时序实现共享内存。这种方法必须制成专用芯片,把CPU和RAM封装在一起,一般情况下实现困难。第二种如96系列单片机,使用HOLD线先挂起其中一单片机的总线,以使用其内存。这种方法简单而且传输速度快,在具有HOLD功能的CPU系统中经常使用这种方法实现双CPU。
2 使用共享内存法实现双CPU通信
由于51单片机没有HOLD功能,一般不能使用共享内存法实现双CPU通信。这里介绍一种方法,使一般51单片机能够用共享内存实现双CPU通信。该方法电路简单,软硬件实现容易;数据传输速度快,而且占用系统资源少(不使用I/O口传递数据,而用一部分地址空间作为数据传送的媒体),能充分发挥双CPU的作用。下面具体介绍这种方法。
2.1 基本设计方案
首先,甲机划出一部分片外RAM的地址空间作为数据传输的专门通道(一般可用高端地址空间);同时,把这个地址空间映射到接收数据的乙机端的相同大小片外RAM地址空间(乙机端可以直接访问到)。两边需要传递数据时,甲机就直接向这个地址读写数据。读写数据之前,两边要先联络,做好数据传输前的准备。
两边数据线要用开关门电路隔开,可以用三态门。地址线也按照设计者的安排,甲机端经过开关门电路直接映射到乙机端特定片外RAM地址。因为甲机要在乙机这边读写数据,所以甲机对片外RAM的读写选通信号也要经过开关接到乙机读写端。发送数据前,要打开这些开关门电路。这样,甲机就可以在乙机的片外RAM中读写数据了。
最后,还有一个重要工作。两边的CPU有自己独立的工作,彼此独立地在自己的数据线和地址线运行程序,要共用乙机的RAM来实现通信就必须在传送通信数据期间让乙机交出总线控制权,而51单片机又不具备96单片机的HOLD功能,怎样才能让乙机交出总线控制权?这里要用其它方法。51系列单片机本身有ID工作方式(空闲状态),ID方式可以用中断唤醒。我们可以利用ID工作方式让乙机暂停工作,从而让甲机CPU在乙机这边存取数据。
2.2 具体实现方法
图1是两个51单片机组成的双机系统。我们把左边甲机的普通片外RAM地址寻址空间分为0000H~7FFFH和8000H~0FFFFH两个不同的区域。其中,0000H~7FFFH可作为普通片外RAM空间,8000H~0FFFFH可作为数据传输通道。在这里,我们把8000H~803FH的片外RAM寻址空间映射到右端乙机的0000H~003FH的地址空间。(其实甲机8000H以上的任意地址都会映射到相应的乙机0000H ~003FH空间。这里为简单起见,只用甲机的最高位地址线直接线选,并约定甲机的通信数据都往8000H~803FH中写。)因此,甲机端的低六位地址线通过74ALS373接到乙机端的低六位地址线。同时,读写控制线也接过来。两边的数据线通过74ALS245接起来以进行双向数据传输。不传数据时,乙机的P1.7为高电平,74ALS373处于高阻态,74ALS245也因为没有被甲机的地址线选通而呈高阻态,两边的CPU可以在自己的空间运行程序,保持相对独立。甲单片机P1.0接到乙机的INT0脚,可通知乙单片机做传输数据的相应处理,同时可以通过中断来唤醒处于ID状态的乙机。传数据时,乙机的P1.7为低电平,打开74ALS373,同时乙机的P1.7还接到甲机的INT0口,以通知甲机可以开始送数或取数。甲机最高位地址线A15作为数据选通信号,使甲机端可以读写乙机端0000H~003FH地址空间RAM中的数据。数据传送方向由乙机的P1.6脚进行控制。
甲机要把数据传到乙机时,先通过P1.0输出一个下降沿脉冲到乙机的INT0口通知乙单片机,乙机中断服务程序判断是甲机要送数据过来,用指令
MOV DPTR, #003FH
MOV A, #0FFH
MOVX @DPTR 0FFH
把地址线置为003FH,P0口置为FFH。为什么要做这个工作呢?因为乙机把地址线置为003FH后,进入ID状态,地址线会保持这种状态,甲机就可以控制乙机的低六位地址线;同时乙机的高十位地址线保持为"0",这样就确保了甲机的数据映射到乙机的0000H~003FH的地址空间。乙机向数据线上写FFH,是保证把P0口都置?quot;1",进入ID工作方式后,P0口(即数据线)也会保持这种状态,以保证甲机端数据顺利写入。然后,乙机P1.6脚输出高电平,置数据传送方向为甲机到乙机。最后,乙机在P1.7脚发一个下降沿脉冲,以中断通知甲机可以送数据,同时保持低电平,打开74ALS373,再执行
ORL PCON.0,#00000001B
进入ID状态。甲机的INT0中断服务程序把数据从8000H~803FH送过来。送完后,通过甲机P1.0再给乙单片机的INT0端发一个下降沿脉冲唤醒乙机,乙机INT0中断服务程序判断数据已经传送完,进行接收数据处理。
同理,乙机要送数据到甲机时,先把数据写到0000H~003FH,最后是向003FH写FFH,以完成正确置位地址线和数据线。还要把P1.6脚置为低电平,控制数据从乙机传向甲机。再在乙机P1.7发下降沿脉冲触发甲机INT0中断,同时P1.7保持低电平,打开三态门,然后进入ID状态。甲机INT0中断服务程序判断乙机要送数据过来,并且已经做好准备,就把数据从8000H~803FH取过来(当然,803FH中数据无效)。取完后,甲机再通过P1.0给乙单片机的INT0端发一个"1"下降沿脉冲唤醒乙机,让乙机继续运行程序。
乙机的INT0中断服务程序要处理几个不同事务,有几个分支。如果是乙机向甲机传数据,乙机INT0不用做实质工作,退出中断继续运行主程序即可;如果是甲机向乙机传数据,在传数据之前,乙机INT0要为传数据做好准备,并置乙机为ID状态。传数据之后,乙机INT0处理数据。这里要设置数据传送方向和数据传送状态两个标志,用以引导程序正确运行。甲机的INT0根据传数据方向标志传数据或读数据即可。这里不再写具体程序。
相关信息
发表评论
条
打印本页
关闭本页
NCP511SN30T1G的技术参数
产品型号:NCP511SN30T1G输出电压典型值(V):3输出电流典型值(A):0.150极性:正压差典型值(V):0.170/0.15A输入电压最大值(V):6封装/温度(℃):SOT23/-40~85描述:150mA,低功耗低压差稳压器价格/1片(套):¥2.60
>>详细内容
NCP511SN30T1的技术参数
产品型号:NCP511SN30T1输出电压典型值(V):3输出电流典型值(A):0.150极性:正压差典型值(V):0.200输入电压最大值(V):6封装/温度(℃):5TSOP-5/-40~85描述:小静态电流,使能控制价格/1片(套):¥2.79
>>详细内容
NCP511SN28T1G的技术参数
产品型号:NCP511SN28T1G输出电压典型值(V):2.800输出电流典型值(A):0.150极性:正压差典型值(V):0.170/0.15A输入电压最大值(V):6封装/温度(℃):SOT23/-40~85描述:150mA,低功耗低压差稳压器价格/1片(套):¥2.60
>>详细内容
NCP511SN25T1G的技术参数
产品型号:NCP511SN25T1G输出电压典型值(V):2.500输出电流典型值(A):0.150极性:正压差典型值(V):0.170@0.15A输入电压最大值(V):6封装/温度(℃):SOT23/-40~85描述:150mA,低功耗低压差稳压器价格/1片(套):暂无
>>详细内容
NCP511SN18T1G的技术参数
产品型号:NCP511SN18T1G输出电压典型值(V):1.800输出电流典型值(A):0.150极性:正压差典型值(V):0.170/0.15A输入电压最大值(V):6封装/温度(℃):SOT23/-40~85描述:150mA,低功耗低压差稳压器价格/1片(套):¥2.60
>>详细内容
NCP511SN18T1的技术参数
产品型号:NCP511SN18T1输出电压典型值(V):1.800输出电流典型值(A):0.150极性:正压差典型值(V):0.160输入电压最大值(V):6封装/温度(℃):5TSOP-5/-40~85描述:小静态电流,使能控制价格/1片(套):¥2.79
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法
>>更多评论
内 容:
热点新闻
·基于AT89C52单片机的SD卡读写设计
·单片机驱动蜂鸣器原理与设计
·基于AT89C51单片机的LED彩灯控制器设计
·基于TOP234Y的电压可调数控开关电源设计
·AVR单片机的通用USB接口模块设计
·TEA5767收音机模块的C51控制程序
·前置运算放大器的噪声分析与设计
·片机驱动LED数码管有很多方法,按显示方式分,有静态显示和 动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。
·基于RF芯片nRF401的无线数传模块设计
·关于TL431输出阻抗设计
一周排行
·交流变频电机绝缘的试验和应用
·小锥度回转顶尖的设计和应用
·微型嵌入式Web服务器的设计与实现
·新材料激活激光焊接应用
·电子光栅尺在自动控制系统中的应用
·基于MPC755的嵌入式计算机系统设计
·基于ARM9的1553B与CAN总线转换卡的设计与实现
·基于AT89S52的乐曲编辑发生器的设计
·MSP430单片机与nRF905无线通信系统设计
·一种实用的三相步进电机驱动器的设计
关于我们
|
服务项目
|
付款方式
|
广告服务
|
联系我们
|
友情链接
|
投诉 建议 合作
|
网站地图
|
加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:
浙B2-20050339
法律声明
维库电子旗下网站:
维库电子市场网
|
ChinaICMart
|
维库电子开发网
|
维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:
303939539
| MSN:
zh1226@hotmail.com
| 邮箱:
laz8258@163.com
dzsc51@163.com