访问电脑版页面

导航:老古开发网手机版其他

闪存Am29F400B的操作过程及动态数据保存

导读:
关键字:
闪存Am29F400B的操作过程及动态数据保存 武汉大学黄天戍尹文军张旭良周清睿赵冰洁 摘要以TMS320C32 DSP开发的电动机保护装置为模型,介绍对闪存Am29F400B的操作过程,以及利用其来实现动态数据保存的具体方法。 关键字闪存Flash MemoryTMS320C32DSP数据保存 在对电动机进行保护的过程中,需要对故障数据进行保存,以备查看。一般电动机产生故障的间隔时间是比较长的,而有些电动机的工作方式是非连续的,在故障间隔期间难免会出现停机现象。因此如何在掉电状态下保存数据便成为一个关键。电动机的保护装置须要具备两种基本的特性,即实时性和快速性。这两种特性都需要以快速处理大量的数据信息为基础,而专用的数据处理芯片DSP恰能很好地满足这方面的要求。当我们选用DSP芯片之后,对数据的更新和存储便有了更高的要求。下面给出一种以闪存Am29F400B为基础的解决方案。 1 外部闪存(Flash Memory)Am29F400B 保护装置的外部闪存采用Am29F400B,主要负责对固化程序及历史数据的保存,也即保护装置通电开机以后是在执行闪存内的程序,并在程序执行的过程中适时地保存或修改其内部的数据单元。为了更全面的叙述,首先介绍一下Am29F400B的特点及操作。 Am29F400B属于大容量的闪存,可以存储512K×8bit或者256K×16bit的数据。它具备了E2PROM的特点,且更优于E2PROM,在此仅举出如下几点: (1) 内嵌的擦除和编程算法。可自动段擦除或整片擦除,自动在指定地址写入或校验数据。提供命令接口、状态寄存器。 (2) 区段保护功能。具有防止对任何区段进行编程或擦除的硬件保护机制。 (3) 擦除挂起和恢复功能。在擦除过程中,支持读写不在擦除的段。 (4) 准备好信号RY/BY,输出指示信号,提供硬件检测。 (5) 硬件复位RESET引脚。芯片复位时,内部状态机自动处于读状态。 从以上特点可以看出,Am29F400B有一套内部操作机制。其芯片内部增加了控制逻辑,如命令接口、状态寄存器、内部状态机等,通过写入特定地址和数据序列到命令寄存器中来确定芯片的操作方式及对象。例如,处理器将编程命令及相应的目的地址和数据等传入芯片的命令寄存器中,则芯片内部将地址和数据锁存,并把命令字输入到内部状态机,从而执行内嵌的编程算法来自动完成一系列的操作。 对Am29F400B的操作主要分为以下几种:复位、读、字节编程、段擦除、片擦除。不同的操作具有不同的命令字及其相应的地址。例如编程命令为:0AAH→(5555H),055H→(2AAAH),0A0H→(5555H),然后就可进行写操作即PD→(PA)。 2 TMS320C32与扩展存储器接口及操作程序 针对以上介绍的Am29F400B的硬件特点,在控制器的主程序中设计了专门针对写入、擦除的函数。值得注意的是,在进行写入之前,首先要对将写入的单元进行擦除,且要注意对RY/BY状态的判断,以配合DSP与闪存之间的时序。若从RAM单元中取出的数据宽度为32位而Am29F400B的数据宽度为8位,则还要采用移位的方法写入。下面的程序就是在电动机保护装置的设计中,固化在闪存内的写入子程序。其它的可类似得出。 〖2〗.global〖〗f_wrtin 〖2〗.data〖1〗flash_ul1〖〗.word〖〗000AA00AAH〖1〗flash_ul2〖〗.word〖〗000550055H〖1〗flash_prog〖〗.word〖〗000A000A0H〖2〗 .text 〖1〗f_wrtin:〖〗PUSH〖〗DP〖〗;AR0→Address of ×555〖2〗PUSH〖〗R0 ;AR1→Address of ×2AA〖2〗LDP〖〗 flash_ul1,DP;AR2 →Address ;of Destination〖2〗LDI〖〗flash_ul1,R0;R1→ Data to ;be programmed〖2〗STI〖〗R0,*AR0;00AA00AAH→(555H)〖2〗LDI〖〗flash_ul2,R0〖2〗STI〖〗R0,*AR1;00550055H→(2AAH)〖2〗LDI〖〗@flash_prog,R0〖2〗STI〖〗R0,*AR0;00A000A0H→(555H)〖2〗STI〖〗R1,*AR2++ ;R1→(AR2)〖1〗f_pr_st:〖〗LDI〖〗*-AR2(1),R0〖2〗NOP〖2〗NOP〖2〗XOR〖〗*-AR2(1),R0〖2〗AND〖〗0FFFFH,R0〖2〗BNZ〖〗f_pr_st〖2〗POP〖〗R0〖2〗POP〖〗DP〖2〗RETS3 TMS320C32的引导程序 上面介绍的程序在实际应用中是以全局函数的形式给出的,提供给其它的程序进行调用,并且固化在闪存中,这便解决了数据的写入及断电保存问题,但同时又会出现另外一个问题:如果DSP从Am29F400B中顺序地读出并执行程序,那么,当运行到写入程序时,根据前面对闪存的硬件描述,其状态只能被设为单一的读或写,而不能像RAM一样可以随机地被读写,于是便强行地中断了程序。面对这一较普遍的问题,我们在设计电机保护装置时提出了一个行之有效的解决方案。其中心思想即是在程序运行的最初便将闪存的内容搬到SRAM内执行,从而使程序的执行区与数据保存区得到分离。这样既保证了程序的执行,又保证了数据的断电保存。为此,在内部ROM的引导区内写入如下一段“搬运程序”,即实现了程序由外部闪存至SRAM转移。其简化代码如下: 〖〗.text〖1〗F_load〖〗LSH〖〗9, AR1〖2〗LDI〖〗*AR1++(1),R1〖2〗LDI〖〗SUB_W, AR3〖2〗LSH〖〗26,R1〖2〗BN〖〗LOAD0〖2〗NOP〖〗*AR1++(1)〖2〗LDI〖〗sub_h, AR3〖2〗LSH〖〗1, R1〖2〗BN〖〗load0〖2〗LDI〖〗sub_AR3〖2〗ADDI〖〗 2, AR1〖1〗Load0〖〗CALLU〖〗AR3〖2〗STI 〖〗R1, *+AR0(64h)〖1〗Load2〖〗CALLU〖〗AR3〖2〗LDI〖〗R1, RC〖2〗CMPI〖〗 0, RC〖2〗BZ〖〗AR2〖2〗SUBI〖〗1, RC〖2〗CALLU〖〗AR3〖2〗LDI 〖〗R1, AR4〖2〗LDI〖〗R0, R0〖2〗LDIZ〖〗R1, AR2〖2〗LDI 〖〗-1, R0〖2〗SUBI 〖〗1, AR3〖2〗CALLU〖〗AR3〖2〗LDI〖〗1,R0〖2〗ADDI〖〗1,AR3〖2〗BR〖〗load2〖2〗RETS通过这样一段引导程序,使主机开机后首先完成了主程序的加载,即实现了本文开头提出的动态数据的保存;同时也由于SRAM的快速读取而提升了程序运行的整体速度,优化了系统的性能。MES 参考文献 1张雄伟,曹铁勇.DSP芯片的原理与开发应用.第二版.北京:电子工业出版社,2000 2北京闻亭科技发展有限责任公司.TMS320第三代数字信号处理器用户指南
来源:单片机与嵌入式系统应用   作者:武汉大学 黄天戍 尹文军 张旭良 周清睿 赵冰洁  2006/2/12 0:00:00
栏目: [ ]

相关阅读

安森美推出新的高功率图腾柱PFC控制器,满足具挑战的能效标准

动态功耗低至60μA/MHz!助力设备超长续航,首选国民技术低功耗MCU!