关键词:Flash存储器 DSP 嵌入式算法 Am29F010B
国内的电动机保护装置种类繁多,但随着现代大中型电动机对保护要求的不断提高和VLSI技术的不断进步,传统的基于热敏电阻、机械式继电器和电子式等保护模式均因可靠性不高,容易出现误操作等缺点已不能满足需要;而以单片机为核心的数字或保护装置的运算速度不高、资源有限、数据处理能力和可扩展性不好等问题日益突出。新的相关理论和技术(如小波变换、自适应保护、故障诊断、模糊整定等)的出现加速了高性能和综合型微机保护的发展,但这不仅要求更高性能的CPU(如近年飞速发展的系列DSP芯片)的支持,而且还要有与之相适应的外围存储器的支持。鉴于此,笔者在开发基于DSP的大中型智能电动机保护装置(系统结构功能如图1)时,在外扩存储器方面采用了AMD公司生产的Flash芯片Am29F010B。该Flash memory因容量大、体积小、功耗低、成本低等优点而被广泛应用于消费类电子、军事、航空航天等领域。它可以在线更新,并具有较高的灵活性,因而可与高性能CPU芯片TMS320C32达到良好的配合,从而可显著提高系统性能和可靠性。
1 硬件设计
1.1 TMS320C32芯片的特点
美国TI公司生产的TMS320系列DSP芯片以其改进的哈佛总线结构、独立的指令系统、专用硬件乘法器、多种寻址方式等优点以及高速数据处理能力广泛应用在通讯、雷达、工业控制等领域。TMS320C32是TI的第一代浮点DSP芯片TMS320C3X系列中的一款高性能浮点芯片,是对TMS320C30、TMS320C31中的不常用资源进行简化、并对其性能进一步改进后的高性价比处理器。它具有增强的外部存储器接口,可以灵活方便地存取8/16/24/32位数据。它支持16/32位外部程序,从而为其外围接口电路设计提供了很大的灵活性;其硬件上增加的一个非常有用的程序引导(Bootloader)功能使其程序可以从低速EPROM、PROM或串口装入到系统的高速RAM中全速运行;它所配备的C编译器具有很高的效率,可直接用汇编语言或两者相结合使用,因而灵活性和实时性都很强;由于中断矢量表可重设位,因此,将其应用到电动机保护中可以大大提高整个保护装置的各项性能。
1.2 Flash Memory芯片Am29F010B
Am29F010B是AMD公司生产的多功能闪烁内存,它的主要技术特点如下:
*可单电压(5V)进行读、写操作;
*高性能,最大存取时间为45ns;
*可靠性极高,可重复编程不小于10万次,数据保持大于100年;
*低功耗(读操作,写/擦除操作以及空闲状态的电流典型值分别为12mA、30mA和1μsA);
*具有扇区擦除能力,对于所分成的8个完全一样的分扇区,既可以块擦除,也可以整个芯片一起擦除;
*嵌入式擦除算法可自动地预编程和擦除芯片,它可以将设好的扇区用嵌入式编程算法自动地编程以把数据写到特定的地址;
*带有JEDEC标准的Flash EEPROM管脚输出和命令集;
*具有编程周期结束检测功能,可缩短等待时间;
Am29F010B存储器采用PDIP,PLCC,TSOP封装,图2给出了Am29F010B的PDIP封装引脚图,各引脚的功能如下:
DQ7~DQ0:双向数据线,可用于输出数据或写入命令和数据。
A0~A16:地址线,其中A16~A14为扇区地址,可用000~111代表8个扇区,A13~A0为扇区内的字节地址。
CE:片选线,低电平有效,高电平时芯片处于空闲状态;
OE,WE:分别为读、写控制线。图3给出了对FLASH编程时,CE、OE和WE的状态时序。
其中,PD为编程数据,tch为CE持续时间,tcs为CE建立时间,tDS为数据建立时间,tDH为数据维持时间,twp为写脉冲宽度。
1.3 Am29F010B与TMS320C32的硬件接口
Am29F010B与TMS320C32的硬件接口电路原理图如图4所示。图中,Am29F010B的17根地址线A0~A16分别与TMS320C32的A0~A16相连。每片Am29F010B的容量为128k×8B。在本开发系统中,数据采用的是32位浮点数,连接方法是将四片8位数据宽的Am29F010B一起与TMS320C32连接,即将四片Am29F010B的D0~D7依次与TMS320C32的D0~D7、D8~D15、D16~D23及D24~D31连接,总容量为128k×32B。
TMS320C32的外扩存储器的寻址空间范围由三组相互独立的控制信号STRB0、STRB1和IOSTRB来控制,可用于对相互独立的存取空间进行操作而不会出现端口冲突。所不同的是,IOSTRB只能用32位宽的程序或数据存储器进行存操作;STRB0和STRB1由各自的四个控制引脚来实现,可以用8/16/32位宽的存储器存取8/16/32位数据,还可以用16或32位宽的程序存储器进行存取操作,因而比较灵活。
图4的设计中使用的是STRB0,Flash所占的128k×32B存取空间的地址范围为000000H~01FFFFH,外围程序存储器配置为32位,可由PRGW置低电平来实现。此时各片的片选信号CE分别由STRB0-B0、STRB0-B1、STRB0-B2、STRB0-B3控制。上电复位后,外部总线接口控制寄存器STRB0可根据PRGW引脚电平的高低来决定存储器的宽度控制位和数据位数控制位的复位值。
2 Am29F010B的在系统编程技术
2.1 Am29F010B的基本编程操作
对FLASH的基本操作主要有读、字节编程、复位、扇区擦除、片擦除等。Am29F010B闪烁存储器的读操作与普通的存储器操作相同,它不需要特定的时序,在电路上电或内部编程等操作后可自动进入读数据状态。而擦除和写操作相对复杂一些,它不能简单的直接写入,同时,out文件不能load到FLASH中,且CCS和CSource Debugger中的load命令均不能对flash写入,而需要专门的程序才能写入一系列Flash Memory的命令寄存器中,然后调用嵌入式算法的内部程序来完成相应的命令。Am29F010B编程的一般步骤是复位、擦除、字节编程等。
(1)复位操作
复位命令用以取消擦除或写入操作而使存储器复位。复位操作不影响各单元的数据。在编程、擦除或正常操作出现错误时都要使用复位命令。向FLASH存储器的任意一个地址写入0F0H均可使其复位并进入读数据状态。
(2)擦除操作
擦除操作的具体软件命令序列如表1所列。该操作包括按扇区擦除和整片擦除两种方式。二者均为6总线周期操作。使用片擦除操作则可一次清除FLASH芯片内的所有数据。扇区擦除操作则用于清除某一个扇区的所有数据,这在仅需要改动少量数据而不是整片数据时特别方便。
(3)字节编程操作
该操作是一个4总线周期指令,可将任意数据写入Am29F010B独立使用的编程,只能写入8位宽的数据,而本开发系统每次可写入32位宽数据。具体软件命令序列如表1所列。
2.2 Am29F010B的编程注意事项及操作技巧
在对Am29F010B进行编程操作时,三条关键控制检测线OE、CE和WE都必须处于正确状态,当CE或WE不是低电平或OE不是高电平时,编程操作将被禁止。
由于在32位浮点芯片TMS320C32进行硬件连接时,采用的是4片数据宽度为8位的Flash来作为一片数据宽度为32位的Flash使用,所以在实际的总线操作过程中,向对应地址写入的数据应为8位16进制数据。例如芯片复位操作时,写入某一地址的数据应该是0xF0F0F0,而不应是单片时写入的0xF0。其软件命令序列可同时参见表1。
表1 Am29F010B编程命令序列表
命令序列 | Flash复位 | 扇区擦除 | 整片擦除 | Flash烧录 | |
总线写周期1 | 地址 | 5555H | 5555H | 5555H | 5555H |
数据 | 0AAAAAAAAH | 0AAAAAAAAH | 0AAAAAAAAH | 0AAAAAAAAH | |
总线写周期2 | 地址 | 2AAAH | 2AAAH | 2AAAH | 2AAAH |
数据 | 55555555H | 55555555H | 55555555H | 55555555H | |
总线写周期3 | 地址 | xxxx | 5555H | 5555H | 5555H |
数据 | 0F0F0F0F0H | 80808080H | 80808080H | 0A0A0A0A0H | |
总线写周期4 | 地址 | 5555H | 5555H | ||
数据 | 0AAAAAAAAH | 0AAAAAAAAH | |||
总线写周期5 | 地址 | 2AAAH | 2AAAH | ||
数据 | 55555555H | 55555555H | |||
总线官周期6 | 地址 | SA | 5555H | ||
数据 | 30303030H | 10101010H |
在Am29F010B擦除及编程操作中使用检测机制可确保操作的正确性和有效性。其核心代码如下:
flash_rase:
……
check_rase:LDI *AR0,R0
NOP
NOP
XOR *AR2,R0
BNZ check_rase
……
RETS
flash_prog:
……
check_prog:LDI * -AR1,R0
NOP
NOP
XOR *-AR1,R0
BNZ check_prog
……
RETS
在将数据或程序烧写到Am29F010B时,应先单步执行烧写程序,同时应观察烧写程序执行过程中有无异常。笔者曾遇到过的FLASH的操作指令代码执行后变成.word XXH的情形,后来经检查发现是由于芯片Am29F010B的地址线引脚再现虚焊所致;另一方面,还要观察在仿真开发环境的存储区查看窗口,以观察FLASH内相应单元内容的变化有否异常。
图4 Am29F010B与TM320C32的硬件接口电路原理图
3 结束语
本文讨论的方法在软、硬件上均已得到实现,对高性能Flash存储器芯片Am29F010B和高速DSP处理器TMS320C32优点的充分利用,使得在硬件和软件上保证了装置的先进性和高可靠性;目前,该装置已成功用于WSM2000电动机智能保护装置系统中,而且效果理想。