| SST28SF040与高速数字处理器的接口设计及编程技巧 |
| 类别:电子综合 |
|
SST28SF040与高速数字处理器的接口设计及编程技巧 武汉高压研究所华电公司 张蓬鹤 湖南大学电气与信息工程学院 邵 霞 DSP具有先进的并行处理结构,特别适合于信号处理,已经越来越多的应用于工业控制领域和各类仪器仪表的开发设计。TMS320F206是TI公司生产的16位定点DSP,它有1条程序总线和3条数据总线,采用了改进的哈佛结构,内含高度并行的32位算术逻辑单元、16 16位并行硬件乘法器、片内存储器、片内外设,并配备了高度专业化的指令集,而且功耗相当低,特别适合于信号处理。由于闪存能在不脱离系统的情况下修改其存储单元中的内容,且断电后仍能保持存储的片内信息,故在DSP处理器中的应用愈来愈广泛。本文即结合DSP处理器的特点,详细介绍SST公司的SuperFlashEEPROM的硬件电路设计方法及编程技巧。 SST28SF040是SST公司(Silicon Storage Technology)推出的高速可编程闪存。它具有512K 8的存储结构;芯片擦除及写入的时间快,整片擦除只需20秒,段擦除只需2毫秒,字编程写入时间仅为35微秒;可靠性高,能够重复写100,000次,数据可以保存100年不丢失;低功耗,在激活状态下仅需15mA的电流(5V工作电压),备用状态时仅需5uA的电流;具有32脚的PLCC/TSOP封装和PDIP封装SOI封装,在多功能的精密测试仪中具有广阔的前途。 引脚及功能 引脚分配情况如图1所示 引脚功能 (1)A18-A8:行地址输入引脚。行地址决定每个段的地址。 (2)A7-A0:列地址输入引脚。用列地址来选择在每个段内的具体地址。 (3)DQ7-DQ0:数据输入/输出引脚。 (4)CE:使能信号输入端,低电平有效。 (5)OE:输出使能信号,低电平有效。 (6)WE:写使能信号,控制芯片的写入。 (7)VDD:工作电源,接5V。 (8)VSS:工作地。 操作命令序列概要介绍 SST28SF040操作指令序列的具体情况如表1所示 在表1中,PA为要写入数据信息的存储器地址,PD为要在地址PA处写入的数据信息。 操作命令及时序详解 字节编程命令 编程命令要以一个建立命令来开始,一旦建立命令被执行,则在下一个WE信号脉冲到来时,就执行编程命令,该命令仅占用2个总线操作周期。采用WE信号控制的编程命令的时序图如图2所示。 复位命令 复位命令使存储器复位,且进入读数据状态。向任何一个的地址写入FFH就能使存储器复位,该命令占有1个总线操作周期。 擦除命令 擦除命令包括段擦除命令和整片擦除。段擦除命令将擦除整个段内的所有字节(一个段包含256个字节),需要用一个建立命令和一个执行命令来初始化,占有2总线周期的操作。整片擦除命令同段擦除命令基本相似。 读命令 当CE、OE信号为低电平,WE信号为高电平时,芯片就进入读状态,并不需要特定的操作命令代码,只需给出要读取的地址,即可迅速读出该地址的内容。 读ID号命令 当向器件写控制字90H时,读地址0000H将输出厂家编号“BFH”;读地址0001H将输出器件编号04H。任何一个有效的命令都将终止这种操作。 应用举例 硬件接口 利用闪存在线可编程的特点,笔者在开发基于DSP的信号处理板时,在存储采样数据时用了一片SST28SF040,并利用这套硬件系统和仿真软件直接对SST28SF040进行了在线编程,具体的硬件接口电路图如图3所示。 在该系统中采用TMS320F206作为中央信号处理器,用74LS245实现对超过64K的存储器地址空间进行选择。 软件程序 TMS320F206的用户可以用汇编语言或C语言进行源程序的编写,而C语言开发出的系统易于维护,可靠性高,可移植性好,故下面介绍用C语言编写的SST28SF04的开发程序。这里仅给出段擦除和字节编程程序,对于整片擦除的程序可以参看段擦除程序。 ioportunsigned intport1823; #defineioadr0port1823 ioportunsigned intport1820; #defineioadr1port1820 ioportunsigned intport1822; #defineioadr2port1822 ioportunsigned intport0418; #defineioadr3port0418 ioportunsigned intport041b; #defineioadr4port041b ioportunsigned intport0419; #defineioadr5port0419 ioportunsigned intport040a; #defineioadr6port040a ioportunsigned intport041a; #defineioadr7port041a ioportunsigned intporta000; #defineRegCsporta000 void FlashSDP()/*存储器软件数据保护程序*/ {ioadr0=0; ioadr1=0; ioadr2=0; ioadr3=0; ioadr4=0; ioadr5=0;ioadr6=0; } /*共需7个总线操作周期*/ void UnFlashSDP() /*存储器软件数据不保护程序*/ { ioadr0=0; ioadr1=0; ioadr2=0; ioadr3=0; ioadr4=0; ioadr5=0;ioadr7=0; } /*共需7个总线操作周期*/ int EraseFlashSector(int Cs,unsigned int *Adr) { int m; /*开始段擦除程序*/ for(m=0;m<3;m++) {*Adr=0xffff; UnFlashSDP(); RegCs=Cs; *Adr=0x20; *Adr=0xd0; } FlashSDP(); *Adr=0xffff; } /*段擦除程序结束*/ int WrFlashByte(int *DataIn,int Cs,int *AdrIn,int Len) {inti; int b; int *Data,*Adr; /*写入字节编程程序开始*/ Data=DataIn;Adr=AdrIn; *Adr=0xffff; UnFlashSDP(); RegCs=Cs; for(i=0;i<Len;i++,Adr++,Data++) { if(*Data==0xffff)continue; *Adr=0x1010; *Adr=*Data; } FlashSDP(); *(int *)0xffff=0xffff; RegCs=Cs; }/*写入字编程程序结束*/ 结束语 本文详细论述了SST28SF040的引脚功能、操作命令和使用方法,这些同样可以作为单片机、微处理器及PC机等其他应用系统对于闪存编程的直接参考。笔者在GKNDC-H型高压开关特性精密测量仪中就使用了SST28SF040,并取得了很好的存储效果。
|
- 海尔空调制冷故障维..
- 2008-1-25
- 大尺寸TFT显示器..
- 2008-1-27
- 利用DC/DC转换..
- 2008-1-27
- 电动车铅酸蓄电池的..
- 2008-1-27
- 大型搅拌站自动配料..
- 2008-1-27
- 城市和工业污水处理..
- 2008-1-27
- 开关电源的数字控制..
- 2008-1-27
- 精密的智能电池使充..
- 2008-1-27
- 基于DSP控制的2..
- 2008-1-27
- 增强型运营商级多服..
- 2008-1-27
- 高效CCD数码相机..
- 2008-1-27
- Atheros 单..
- 2008-1-27
- Philips 推..
- 2008-1-27
- Fujitsu 数..
- 2008-1-27
- 如何给PCI卡选用..
- 2008-1-27
- A/D转换芯片的测..
- 2008-1-27
- 基于CTl技术的交..
- 2008-1-27
- MMIC和RFIC..
- 2008-1-27
- 利用皮弹服务器进行..
- 2008-1-27
- 白色发光二极管及其..
- 2008-1-27



