双端口RAM方式的数据通讯

[10-10 20:42:03]   来源:http://www.88dzw.com  电路学习   阅读:8681

文章摘要:单片机间传统的数据通信是通过串行口进行的。在要求实时速度很快的场合时,由于串行通信的速度较慢,会产生控制算法等待数据的状态,从而延误指令输出。另外,控制算法和串行通信两个部分都要保证实时性和连续性,但是单片机最主要的任务是完成控制算法并处理控制指令输入和输出的中断。这样,单片机就有可能无法及时响应和处理串行通信的中断,从而造成数据的丢失。同时,又因为单片机中的串行寄存器SBUF只能保留一个字节的数据,就可能造成传输数据的丢失或错误,从而影响串行通信数据接收的可靠性。再者,Rs-232信号数据是ASCⅡ码,并不能被单片机直接运用,转换过程要大量占用单片机内部数据区,引起单片机资源紧张。双端口RA

双端口RAM方式的数据通讯,标签:学习园地,http://www.88dzw.com

  单片机间传统的数据通信是通过串行口进行的。在要求实时速度很快的场合时,由于串行通信的速度较慢,会产生控制算法等待数据的状态,从而延误指令输出。另外,控制算法和串行通信两个部分都要保证实时性和连续性,但是单片机最主要的任务是完成控制算法并处理控制指令输入和输出的中断。这样,单片机就有可能无法及时响应和处理串行通信的中断,从而造成数据的丢失。同时,又因为单片机中的串行寄存器SBUF只能保留一个字节的数据,就可能造成传输数据的丢失或错误,从而影响串行通信数据接收的可靠性。再者,Rs-232信号数据是ASCⅡ码,并不能被单片机直接运用,转换过程要大量占用单片机内部数据区,引起单片机资源紧张。

  双端口RAM器件在单片机系统中的应用双端口RAM是一种特殊的数据存储芯片,利用双端口RAM可以实现两个单片机的总线方式的数据共享。我们以CYPRESS公司的cY7c136为例来说明其应用。图1为多单片机共享RAM方案的示意图。

  1.数据线通信(从)单片机和主单片机之间的数据总线通过双端口RAM的两套数据总线端口连接起来,实现总线方式的数据共享。

  2.地址线通信单片机和主单片机可以利用自身的I/O口,或者是地址线扩展方法,通过地址线确定和选择双端口RAM中的指定存储单元。

  3.读写信号单片机的wR和RD引脚分别和双端口RAM的左、右两套独立的读写引脚相连。单片机通过RD引脚从双端口RAM中读取相应地址存储单元的数据,通过wR引脚发出写信号,向双端口RAM中相应的存储单元中写入数据。

  4.争用标志在双端口RAM中,可有一套独立的“BUSY”逻辑线,保证两个单片机对双端口RAM的同一单元读写操作的正确性。从而解决端口争用问题。

  除了需要知道CY7c136的引脚定义和连线外,还需要了解单片机是如何操作双端口RAM中的数据的。单片机对双端口RAM的操作和对外部RAM操作一样。根据图1的电路连接,具体的地址定义如下://定义双端口RAM—CY7c136中的6个存储单元的地址Ox0100一Ox0600H:

  #define dsyawh  XBYTE【Ox0600】

  #define dsyawl  XBYTE[0x0100]

  #define DSPitchh XBYTE【Ox0200】

  #define dspitchl XBYTE[Ox0300]

  #define dsrollh  XBYTE[0x0400]

  #define dsrolll  XBYTE[Ox0500】

  ∥从单片机向双端口RAM—CY7C136的6个存储单元中写入3组数据:

  unit numyaw=atoi(stringyaw);dsyawh=numyaw/256;dsyawl=numyaw%256;unit numpitch=atoi(stl4ngpitch);Idspitchh=numpitch/256;dspitchl=numpitch%256;unit numroll=atoi(stringroll);dsrollh=numroll/256;dsrolll=numroll%256;//主单片机从双端口RAM—CY7C136的6个存储单元中读入3组数据;读人数据后,如果原始数据是16位,则还需要将高、低位的数据叠加。

  yawh=XBYTE[Ox6000];yawl=XBYTE[Ox1000];yaw=-yawh*256+yawl;pitchh=XBYTE[Ox2000];pitchl=XBYTE[Ox3000];pitch=pitchh*256+pitchl;rollh=XBYrE[Ox4000];rolll=XBYTE[0x5000];roll=rollh*256+rolll;双端口RAM在使用中数据冲突问题的解决双端口RAM在使用中应注意的一个问题就是可能发生同一数据区的争用。

  当两个端口的CPU同时读取一个双端口RAM单元时,就产生了争用,会出现写入值和读取值不是所期望数据的混乱状态。通常,有4种不同的争用解决方案,分别是硬件判优方案、中断方案、令牌传递方案和软件判优方案。目前,很多双端口RAM都支持硬件判优方案,这些双端口RAM中都有片内硬件判优电路,并且两个端口上都有BUSY引脚。当出现争用现象时,双端口RAM的片内硬件判优电路确定某一个具有优先权的端口可以继续对该端口进行读写操作,对该端口而言,就像没有发生争用现象一样。硬件判优电路将另一个被延迟存取的端口的BusY引脚置为高电平,此时延迟存取端口的一方可以继续存取。硬件判优方案要求cPu能插入等待状态,所以对于具备和不具备插入等待状态的单片机就有两种不同的信号处理方法。对于具备插入等待状态功能的单片机,将双端口RAM的。BUSY连接到读端口cPu的等待状态检测线上即可。例如,对于8098单片机,可将CY7c136的一个BUSY引脚连接到8098的READY引脚即可。一般只要等待周期长度超过另一端CPU的读写周期即可保证cPu结束等待时BUSY=1。对于不具备插入等待状态的单片机,需要在电路设计和编程上使用一些技巧才能使用硬件判优方法解决争用问题。例如,对于89c 5 2单片机,由于不具备像READY之类的检测线引脚,可采用将CY7C136的一个BUSY引脚连接到89C52的P1.2引脚上来解决。89C52在读双端口RAM时,首先通过端口扫描,判断P1.2口的电平值,如果电平为高,则表示该RAM单元空闲,89C52可以执行读取数据的操作;如果此时端口电平为低,则表示该RAM单元正被另一个单片机操作,则89C52暂时停止执行读取数据的操作,等待P1.2口的电平变低,从而避免和通信单片机发生争用端口的情况。

[1] [2]  下一页


Tag:电路学习学习园地维修教程知识 - 电路学习

《双端口RAM方式的数据通讯》相关文章