0 引言
以单片机为核心的仪器仪表的工作稳定性和可靠性往往受工作环境的影响很大。在电磁干扰较弱(如室内))时,可靠性和稳定性往往容易达到应用要求,然而,在室外,尤其是工作环境较恶劣的情况下,就有可能导致仪器仪表工作不正常或失灵。因此,利用单片机自身的优势和丰富的外围模块来提高仪器仪表的抗干扰能力,具有十分重要的现实意义。
目前,解决单片机程序跑飞主要利用开门狗来实现。解决掉电数据保护功能时,数据存储介质常选用两类:一类是EEPROM,但写入时间较长;另一类是带有后备电池的小容量SRAM来构成非易失存储器,这种方法写入速度快,但增加了电路的复杂性。
SST公司的FlashFlex51系列单片机具有内部看门狗和片内Flash存储器,可以用于解决单片机程序跑飞和重要数据的掉电存储问题。本文是采用SST公司的SST89E58RD2单片机来解决视频字符叠加系统在恶劣环境下程序跑飞和叠加字符丢失的问题。
1 视频字符叠加系统的问题分析
视频字符叠加系统在室内环境下的字符叠加效果一般都可以满足应用要求。然而,将该系统应用于室外电磁干扰较为严重的环境时,叠加系统往往会出现叠加字符消失、系统与上位机通信不正常等问题。通过对该问题的分析研究发现,单片机程序跑飞和叠加系统中的字符叠加芯片在受到外界干扰时,其视频存储器内容被清除是导致系统不能正常运行的真正原因。由于系统的硬件结构一般不便于更改,因此,找到一款与目前AT89C51兼容且能解决系统不稳定的单片机是解决问题的最好方法。在对AT89C51单片机和其它51单片机进行对比分析后,本文选择了SST89E58RD2单片机来解决系统稳定性和可靠性的问题。
2 SST89E5 8RD2简介
2.1 SST89E58RD2的主要特性
SST89E58RD2单片机可兼容80C51系列单片机,且内置超级FLASH存储器,5 V工作电压下的工作频率为0~40 MHz,与现行的80C52系列单片机硬件PIN-TO-PIN完全兼容,同时软件、开发工具也完全兼容;SST89E58RD2带有1 K字节的内部RAM,并包含32 K字节的基本存储块和8K字节二级存储块的超级FLASH;具有ISP (在系统编程)和IAP(在应用中编程)功能;芯片内有SPI(串行外围接口)和增强型UART、10个中断源、四个中断优先级以及可编程看门狗定时器(WDT);兼容TTL和CMOS逻辑电平;内含PCA(可编程计数器阵列),具有PWM和捕获、比较功能;可实现掉电检测。
2.2 看门狗定时器
SST89E58RD2内置的可编程看门狗定时器可用于程序死循环或程序运行不正常(如程序跑飞)时的自动恢复。为保护系统因程序死循环等引起的运行不正常,用户程序需要在其定义的周期内刷新看门狗定时器,否则,当WDRE(看门狗复位)有效时,将触发内部硬件复位。WDT(看门狗定时器)用系统时钟作为基准时钟,因此,严格的说,看门狗定时器应称为看门狗计数器。WDT寄存器每344064个系统时钟加1。看门狗数据/重载寄存器(WDTD)作为WDT的重载寄存器。WDT的结构框图如图1所示。看门狗可通过两个特殊寄存器WDTC(看门狗定时器控制寄存器)和WDTD工作。在空闲模式下,WDT运行被临时挂起,并在接收到中断信号后从空闲模式恢复为正常工作模式。WDT的计数周期计算公式如下:
周期=(255-WDTD)x344064x1/Fclk
式中,WDTD是放入WDTD寄存器的重载值,Fclk是系统的晶振频率。
3 FLASH存储器编程
SST89E58RD2单片机可使用IAP模式对其内部的FLASH存储器进行擦除或写入数据。当SST89E58RD2单片机的CPU进入IAP模式后,其FLASH存储器的两个区中的一个可在擦除数据或写入数据的同时,另一区的用户代码仍可以被CPU执行。即在内部FLASH存储器写人数据的同时,CPU可以从外部存储器载入代码。位于单片机内部的特殊功能寄存器SFST、SFCM、SFAL、SFAH、SFDT和SFCF用于控制和管理FLASH的擦除和编程执行。在IAP模式下,CPU内核和FLASH控制单元将关闭外部时钟,内部晶振提供编程和擦除操作的时序参考。内部晶振只有在被请求时才打开,而当FLASH操作完成后立刻被关闭。CPU要运行于IAP模式,必须使能IAP使能位(SFCF[6]),否则,FLASH的编程命令将不起作用。所有的IAP命令只有在IAP模式才能执行,但当被选择的存储器区域已被安全锁使能时,IAP命令将无法执行。编程命令向存储器块写入新数据时,必须保证该存储器块处于被擦除状态,即其值为0xFF。如果存储器块没有被擦除,则应用合适的擦除命令进行擦除操作。尤其不能在CPU正载入代码的存储器区域进行编程或擦除操作,这将导致不可预测的编程并可能导致编程数据损毁。