摘要:在DSP构成的装置或仪器中,经常需要保存或修改一些重要的参数。本文介绍如何利用TMS320F206片内Flash进行“在线”擦、写,用于保存和修改数据,具有较强的实用性。
关键词:DSP TMS320F206 Flash 在线编程
引言
TMS320F206(简称F206)是德州仪器公司一种较新型的高性能数字信号处理器芯 片,采用静态CMOS工艺技术设计,功耗低、抗干扰能力强。其结构简单,指令执行速度快(单周期指令的执速度为50ns),指令的源代码与C1XX和C2XX系列保持兼容并且向上兼容TI公司的第5代DSP(C5X系列)。同时,F206处上集成的32K×16位的Flash存储器由二块相互独立的16K×16位的Flash存储器组成(Flash0和Flash1),可分别独立地对它们进行读取、擦除和编程等操作。第二块Flash工作模式的切换分别由片上2个I/O映射寄存器控制。通常情况下,这二块Flash存储器,一块用于存放固化程序,程序调试完成后通过DSP仿真头将程序直接写入Flash中;另一块可用于存放重要参数,可通过键盘、通信端口以及运行程序自动地将数据写入Flash中,从而实现对Flash存储器的“在线”擦、写。F206及F24x在程序地址空间的映射如所示。
1 实现F206在线编程需要注意的几点
①进行硬件设计时,必须将F206的Vccp引脚直接接于+5V电源上。
②片内CPU的工作时钟不得高于20MHz。如果用倍频连接方式,则输入时钟频率不得高于10MHz,否则会使擦、写过程出现错误,从而导致“在线”擦、写失败。
③正常情况下F206的擦、写次数寿命是1000次。因此,对Flash块的“在线”编程应该做到擦除、多次写入,直到整个Flash存储块写满后再重新擦除,这样可以充分延长Flash存储器的使用寿命。
④不要将写Flash的程序和被写数据放在同一块Flash存储器上(后面说明)。由于F206的中断向量从0000H单元开始,所以块Flash存储器(Flash0)用于保存固化程序,另一块Flash存储器用于存放重要参数,进行“在线”编程。
2 Flash存储器的特点
存储器的操作有读和写两种基本操作,各种类型存储器的读操作都相同,而写操作则各不相同。RAM型存储器的读/写操作幸免通过址/数据总线和片选、读/写控制线来完成;EEPROM型存储器读操作和RAM相同,写操作由片内定时完成擦除和编程操作,并有一个状态信号线来指示写操作是否完成;PROM型存储器的写操作则由特殊工具来完成,系统中只有读操作;Flash型存储器的写操作则由清“0”、置“1”和编程操作构成。清“0”和置“1”操作按扇区(一块存储区),如F206的一块存储区的大小为32个字,Flash0的起始地址为0000H,Flash1的起始地址为40000H,每个Flash块包含512个扇区。
Flash存储器的写操作由控制寄存器控制,状态寄存器反馈的信息指示操作过程。Flash型存储器的写操作既可以“在线”完成,也可以由特殊工具来完成。由此可见,对Flash型存储器的访问由两部分构成,一为Flash存储单元,二为Flash寄存器。访问存储单元和寄存器公用一组外部总线,究竟是访问存储单元还是访问寄存器则由工作模式决定。作在访问存储单元模式(只读)时,从数据总线上读到的是存储单元中的数据;工作在访问寄存器模式(读/写)时,从数据总线读到的是寄存器的状态信息。因此,如果将写Flash的程序和将写入数据放在同一块Flash上,则对Flash写操作时需要切换工作模式,从而导致取指令时取到的是状态信息,Flash写操作失败,所以不能将程序和数据放在同一块Flash存储器上。
3 F206进行Flash“在线”擦写的基本步骤
(1)模式切换
Flash的“在线”编程由清“0”、置“1”和数据写入等操作组成。进行这些操作前首先要将Flash由存储器工作模式(mode 1)切换至于寄存器工作模式(mode 0)。F206中Flash存储器工作模式由映射于I/O地址中的两个寄存器控制,分别为F_ACCESS0寄存器(FFE0h)和F_ACCESS1寄存器(FFE1h)。向Flash模式控制寄存器的位写入0,则Flash工作于寄存器模式;反之写入1,则工作于存储器模式。复位后,自动处于存储器模式。如所示,两种工作模式之间切换后,Flash内容变化。处于模式1时,Flash存储器显示的是其所存储的数据;处于模式0时,Flash存储器显示寄存器的内容,并且以4个为一组重复显示于整个Flash块中。
F206的Flash存储器块中只有4个寄存器SEG_CTR、TST、WADRS、WDATA,其余都是重复显示相同的内容,其功能如下所述。
*SEG_CTR:片段控制寄存器,其高8位(MSBS)用于选择相应片段。该位置“1”,则使能相应的片段,可以进行擦写。因此F206中16K×16的Flash块分为8个片段,每个片段2KB.低8位(LSBS)用来控制Flash块的擦除、写入、校验等操作,如所示(各个控制位的具体设置方法请查阅TI相关参考资料)。
*TST:测试寄存器,通常不用。(保留,用于测试。)
*WADRS:写地址寄存器,用于存储写操作地址。
*WDATA:写数据寄存器,用于存放写操作数据。
(2)清“0”操作
清“0”操作按扇区进行,F206的Flash每一区的大小为32个字(WORD)。进行清“0”操作就是对Flash存储单元的非零位(即值为“1”)写入0,使各数据位的边缘保持一致;通常的做法是将Flash存储单元中的数据读出,与FFFFh进行异或(XOR)后,再写回Flash存储单元中。清“0”操作后,需调用VER0功能对Flash块进行0校验。
(3)置“1”操作
置“1”操作按扇区进行,对每个存储单元写入“1”;执行置“1”操作后需要调用VER1功能进行校验。置“1”操作后,Flash块存储单元的值均为FFFFh。如果置“1”正确,则可以进行下一步的数据写入数据。
(4)数据写入
数据只能写入已经置“1”的存储单元,对于同Flash存储单元只能写一入;如要改变存储单元中的内容,必须重新进行清“0”和置“1”的操作后才能写入新的数据。否则,会使存储单元中各个数据位的“边缘”不一致,从单元中读出的数据与写入的数据不一致。由于Flash擦除次数有限,因此不可能每次修改和定改数据时都进行擦除操作,而应将每次修改后的参数(表)连续写在已置“1”但沿未写入数据的Flash存储单元中,并对参数(表)作起始和结束的标记(如55AA);程序调用参数(表)时可以很方便地找到修改的参数(表),当已置“1”的Flash存储单元已写完,再重新进行清“0”和置“1”操作后,从Flash块的起始位置(对F206的Flash1存储块为4000h)写入新的数据,这样可以充分延长F206片内Flash的使用。
结语
本文对TI公司的TMS320F206为例,介绍了DSP进行Flash“在线”编程的方法,具有较强的实用价值。笔者将该技术用于由F206构成的微机过流保护装置中,使得保护装置的现场校验、调试和动作值整定都非常方便。对于具有三个Flash块的TMS320FL2407系列,只要找出相应Flash块控制寄存器,也能用同样的方法进行“在线”编程。Flash进行“在线”编程的程序较为复杂,进行编程时需要加入一定的时间延时,编程时可参阅TI公司的例程,该例程可以从TI公司的网页www.ti.com。由于篇幅有限,此处不作详细介绍。
[1]. TMS320F206 datasheet https://www.dzsc.com/datasheet/TMS320F206_17297.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。