高性能FLASH存储器在DSP电机智能保护中的应用
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所列。javascript:window.open(this.src);" style="cursor:pointer;"/>
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电动机智能保护装置系统中,而且效果理想。