单片机之多CPU系统共享串行EEPROM



摘 要
  探讨了一种单片机之多CPU共享串行EEPROM的模块化设计方法,使得系统设计简单可靠,软件编制容易。

  关键词    多CPU系统    单片机  可编程器件   串行EEPROM

1 引言

    随着微电子技术的飞速发展,单片机的价格已变得十分低廉,特别是ATMEL公司的89系列单片机,内置闪速(Flash)存储器,具有51系列单片机的内核,尤其是89C2051只有20个引脚,2K Flash程序存储器,本身已是一个完整的微处理机系统,具有很高的性能价格比。此类CPU可以作为可编程器件用于构成一个比较复杂的应用系统,此方法比使用PAL、GAL等产品的性能价格比更高。现今软件工程中比较流行的方法是面向对象的模块化设计,其思想是将复杂的系统划分成任务单一的模块,有利于多人共同开发大规模软件。工控机也大多采用模块化设计,根据工控具体情况可方便地组成应用系统。同样一个小的应用系统也可用单片机作为可编程器件模块来构成。即将系统划分成任务单一的模块,每个器件模块编程简单,性能可靠,抗干扰性能强,从而大大节省设计和编程时间。但同时也出现了一个怎样实现各器件模块间交换信息的问题,对于速度要求比较高时,可采用并行通信或并行RAM共享方案;而对速度要求比较低时,可采用串行通信方法,但此方案要占用CPU的串行口的资源,且多点对多点的通信编程也比较困难。而共享串行EEPROM的方案能够解决这一矛盾,下面以智能热量仪为例介绍此方案。

2 系统的模块化设计

    根据具体情况将系统划分成若干功能单一的模块。划分的原则是:实时性强的任务由一独立器件模块来完成,信息在器件模块之间的交换要少,且时间性要求要低。

    根据智能热量仪要求将其划分成三个器件模块,功能框图如图1所示。CPU1完成智能热量仪物理量的采集,即温差、压力、流量、压差或频率的采集,并能输出控制信号,包括电流和开关量输出;CPU2实现人机对话功能:显示各物理量(温度、压力、压差、频率、瞬时流量或累积热量),接收仪表参数的输入等;CPU3完成与上位机间的通信和打印功能。EEPROM 93LC66连接这三个器件模块。为了编程方便,三个CPU的P1.0~P1.3都依次连接EEPROM的CS、CLK、DI、DO;而三个CPU的P1.4、P1.5则连在一起,作为EEPROM状态的标志,用来协调三个CPU的工作。

3 分时共享EEPROM

    电路的核心器件是EEPROM(93LC66),它同时与三个CPU的P1.0~P1.3相接,所以,三个CPU只能分时访问EEPROM。也就是说,同一时间只能有一个CPU访问它,不访问时将P1.0~P1.3初始化为高电平,否则会出现竞争。这就要求CPU在访问EEPROM前,必须知道EEPROM的状态,为此,将三个CPU的P1.4、P1.5分别连接在一起作为标志,三者的状态编码00、01、10分别表示CPU1至CPU3中的哪一个在访问EEPROM;CPU都不访问EEPROM时,各CPU初始化标志P1.4、P1.5为高电平,即11。某CPU要访问EEPROM时,先测试标志P1.4、P1.5,若为11,说明此时CPU可以访问EEPROM,立即将标志P1.4、P1.5置成此CPU的标志码,表示EEPROM处于忙状态,其它CPU不能再访问EEPROM;该CPU访问完EEPROM后,再将P1.4、P1.5置为高电平。为了防止几个CPU同时测试P1.4、P1.5位,可规定CPU1访问EEPROM的优先级比CPU2、CPU3的高。CPU2或CPU3在测试完P1.4、P1.5后,若为11,此CPU立即将P1.4、P1.5置成自己的标志,再测试一下置为1的位是否还为1;若为0,说明有其它CPU在同时访问EEPROM,则退出等待;若还为1,则进行访问EEPROM。

    CPU1将采集来的数据进行处理,根据EEPROM内的仪表参数计算出瞬时的流量和热量,进行热量的累积,每5s将数据写入EEPROM一次,并根据瞬时量计算出输出量送给D/A转换电路,输出控制电流;CPU2定时地从EEPROM内读出各物理量暂存在CPU内,根据从键盘接收的命令显示相应的物理量,还可将键盘送来的仪表参数写入EEPROM;CPU3也定时地从EEPROM内读出数据存在CPU内,定时或立即打印出来,并和上位机进行串行通信。各CPU在分时使用EEPROM的工作过程中,已实现了数据交换。

4 延长EEPROM工作寿命的方法

    各CPU频繁地擦写串行EEPROM,93LC´ ´ 系列的EEPROM擦写次数典型值为100万次,这是指某一位由1写为0或由0写为1的次数。而实际上写入EEPROM的数据,对于某一位来说,写入的数据并不是每次都是要变化的,实际测试可证明擦写次数大于500万次。按300万次算,若5s写一次,只能写150天左右,显然,这是不能满足要求的。为此,可采用一种利用存储器空间延长EEPROM工作寿命的方法。其方法为:数据存放的地址不是固定的,而是用一个固定的基地址加上EEPROM内的一个单元的内容(即偏移地址)作为真正的地址;若发现存储单元已坏(写入和读出的内容不同),则偏移地址加一,重新写入。如果采用100倍的存储器空间冗余,可将EEPROM的实际寿命延长100倍。对于智能热量仪,写入EEPROM的数据为14字节,采用35倍冗余,选用93LC66,可使其寿命大于14年。

5 结束语

    串行EEPROM(以93LC66为例)数据的读过程时间比较短,约为150ms(89C51的晶振频率为12MHz),但写过程时间较长,技术手册给出的是每字节4ms,实测为2ms。根据各CPU完成任务不同,可将读写程序放在不同位置来实现。

    这种多CPU共享串行EEPROM的设计方法,各模块的任务比较单一,又具有独立性,因而降低了编程的工作量,也方便调试。若系统需要多于三个CPU时,和EEPROM连接的四条线类似总线方式与其它CPU相连,再增加一条或几条状态线即可。构成的系统如果要增加功能,可再增添一个或几个模块即可,而不影响原来设计的硬件和软件,这就解决了过去一旦产品设计完成再想添加功能就很困难的问题。

参 考 文 献

1 武汉力源单片机技术研究所. CMOS串行EEPROM原理及应用.     PIC单片机 www.pic16.com