利用F206片内Flash进行在线编程
摘要:在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所示。
图1
1 实现F206在线编程需要注意的几点
①进行硬件设计时,必须将F206的Vccp引脚直接接于+5V电源上。
②片内CPU的工作时钟不得高于20MHz。如果用倍频连接方式,则输入时钟频率不得高于10MHz,否则会使擦、写过程出现错误,从而导致“在线”擦、写失败。
③正常情况下F206的擦、写次数寿命是1000次。因此,对Flash块的“在线”编程应该做到一次擦除、多次写入,直到整个Flash存储块写满后再重新擦除,这样可以充分延长Flash存储器的使用寿命。
④不要将写Flash的程序和被写数据放在同一块Flash存储器上(后面说明)。由于F206的中断向量从0000H单元开始,所以第一块Flash存储器(Flash0)用于保存固化程序,另一块Flash存储器用于存放重要参数,进行“在线”编程。
2 Flash存储器的特点
存储器的操作有读和写两种基本操作,javascript:window.open(this.src);" style="cursor:pointer;"/>各种类型存储器的读操作都相同,而写操作则各不相同。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,则工作于存储器模式。复位后,自动处于存储器模式。如图2所示,两种工作模式之间切换后,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块的擦除、写入、校验等操作,如图3所示(各个控制位的具体设置方法请查阅TI相关参考资料)。
*TST:测试寄存器,通常不用。(保留,用于测试。)
*WADRS:写地址寄存器,用于存储写操作地址。
*WDATA:写数据寄存器,用于存放写操作数据。
(2)清“0”操作
清“0”操作按扇区进行,F206的Flash每一区的大小为32个字(WORD)。进行清“0”操作就是对Flash存储单元的非零位(即值为“1”)写入0,使各数据位的