摘 要:本文介绍了AT25HP512 EEPROM芯片的主要特点、功能及其工作原理,描述了ADSPBF533的引导模式选择,并详细分析了SPI口引导的过程,最后给出了ADSP BF533与AT25HP512 EEPROM的SPI口引导的接口方法及原理说明。
关键词:自举引导;SPI;AT25HP512;ADSP BF533
为了充分利用DSP快速运行的优点,通常希望用户程序能在DSP中高速运行,这就需要运用DSP的引导功能对用户程序实现快速引导。当对集成电路板的设计尺寸有严格限制时,采用常用的并行EEPROM引导将不能很好地解决此问题,由于串行接口的EEPROM芯片封装体积较小,所以在这里提出了采用SPI串行接口的引导方式。ATMEL公司的AT25HP512是容量为64K 8bit 的SPI串行EEPROM。另外,AD公司推出的ADSP BF533是一款具有SPI等接口引导功能的DSP。自举引导程序Loader Kernel是DSP在出厂前固化在DSP 芯片内ROM 区的一段程序代码,主要功能是在DSP上电或者复位时将用户程序从外部(如EEPROM)加载到程序存储器(片内RAM或扩展的RAM)中,以便实现高速运行。ADSP BF533可以在8位或16位的FLASH/PROM,8位,16位或24位地址的SPI接口的EEPROM和16位的外部存储器进行自举引导。
主要特点及引脚说明
AT25HP512 EEPROM 的主要特点包括以下几个方面: (1) 读写时钟速率可达10MHz; (2) 支持低电压工作模式 (3) 64K 8bit 容量;(4) 可编程的硬件写保护和片内的偶然性的写保护功能;(5) 支持SPI 接口模式0和模式3; (6) 擦写次数可达10万次和数据保存期超过40年; (7) 有8引脚的SOIC、16 引脚的SOIC、8引脚的Leadless Array等多种封装方式。本文主要介绍的是8引脚的SOIC封装的AT25HP512 EEPROM。其引脚排列如图1 所示,引脚功能见表1所列。
图1 AT25HP512的引脚排列(略)
表1:AT25HP512引脚功能说明(略)
工作原理和操作指令集
AT25HP512是一种基于SPI 口连接和容量为64K 8bit的EEPROM,内部有一个8bit的指令寄存器,通过串行输入口SI在时钟信号SCK的上升沿锁存住比特位。在通信的过程中片选信号CS必须置低,而HOLD和写保护WP保持为高电平。指令、地址和数据的传送是按8bit 的串行数据格式进行,且均以最高有效位在先的方式传送。表2列出了AT25HP512的指令集。
表2:AT25HP512的指令集(略)
指令传输给AT25HP512。后面跟着的16bit地址分两次发送,第一次低8bit,第二次高8bit。当READ指令和16bit的地址发送出去后,存储在以选择地址开始的数据就会从串行数据输出SO口发出。当最高的地址位FFFF到达时,地址计数器就会跳转到0000地址而作无限长时间的循环读操作,直到片选信号CS置为高电平为止。AT25HP512的读操作时序如图2所示。
图2 ATHP512的读写时序(略)
自举引导的模式选择
当DSP上电或复位(硬件复位和软件复位)时,ADSP BF533的两个引脚BMODE0和BMODE1的最终状态决定ADSP BF533的引导方式,如表3所列。在时钟的上升沿对这两个引脚进行采样并将采样结果存放到系统配置寄存器的对应位中。
表3:ADSP BF533自举引导模式选择(略)
因为ADSP BF533没有片内程序存储器,用户的代码必须通过外部的存储器来进行引导,当用户程序较大,可以选用大容量的flash来充当程序存储器,当用户程序不是很大,而且对电路板的尺寸有严格限制时,则一般选用SPI串行接口的EEPROM来充当程序存储器。
SPI引导方式分析
图3给出了ADSP BF533引导文件生成的顺序和流程。在VISUAL DSP++的集成开发环境中,通过工具loader,可以将用户的可执行文件(.dxe)转换成 可以实现自引导的用户程序(.ldr)。该文件是由很多个数据块组成,引导数据流其描述如表4所示,每个数据块的起始处都有一个10个字节的Header,其结构定义如表5所示。通过对每个数据块Header清楚的定义,这样就可以方便的知道该块的放置的起始地址,字节数,是否是结束数据块等重要信息。
图3 ADSP BF533的引导顺序(略)
DSP上电或复位后,处理器首先在BOOT ROM开始执行自举引导程序,根据表3所列的条件以判断采样那种引导方式,以下主要分析SPI接口引导过程。用户程序加载在外部EEPROM(AT25HP512)中,如果选择SPI引导,则自举引导程序BOOT ROM将作以下设置:(1)处理器的SPI作为主机;(2)接收字长为8位;(3)MSB先接收;(4)SPI数据传输速率为SCLK外部时钟/266;(5)低电平激活串口时钟等。这样与通用的的SPI串口EEPROM相兼容。
表4:引导数据流的描述(略)
表5:ADSP BF533引导文件块首(Header)(略)
SPI引导过程及其流程图
当DSP上电或者复位时,程序转入到SPI引导子程序的入口处,通过SPI口向EEPROM发送读命令,然后判断SPI接的是8位,16位还是24位地址的EEPROM,然后通过分析Header,主要是其中16位的FLAG标志位来处理这些引导流中数据块,完成最后的数据块的传递,完成整个SPI的引导。然后程序指针跳转到0xFFA00000,可以去执行引导进来的用户程序了,整个引导过程的流程图如图4所示。
图4 ADSP BF533的SPI引导流程图(略)
下面详细介绍启动过程中SPI口对8位,16位或24位地址的EEPROM是如何判断的,这对解决引导过程中出现的一些问题,十分有帮助。当DSP上电或复位时,DSP首先向EEPROM发送读命令(0x03),读取0x00地址的内容,然后判断接收到的数据是否是0x00,如果是,则说明是8位地址的EEPROM,否则再发一个0x00,然后判断接收到的数据是否是0x00,如果是,则说明是16位地址的EEPROM,否则再发一个0x00,然后判断接收到的数据是否是0x00,如果是,则说明是24位地址的EEPROM,否则,不能判断其EEPROM,引导失败。这样就可以通过示波器清楚的看到引导过程中的时序,当然这要求ADSP BF533与EEPROM硬件正常连接。下面将对其接口方法做出详细说明。
SPI引导的接口方法及原理说明
下来简单给出ADSP BF533与AT25HP512EEPROM接口方法,如图5所示。
如前所述,在引导的整个过程中, AT25HP512作为从机, ADSP BF533作为主机,所以EEPROM的输出口SO和输入口SI就必须分别与DSP的MISO口和MOSI口直接连接;前者的SCK口与后者的SCK口连接,要说明的是EEPROM的输出口SO必须接一个上拉电阻;VSS和VCC分别接地和3.3V电源;片选信号CS直接与ADSP BF533的可编程控制的PF2口连接;写保护引脚WP和保护输入引脚HOLD分别用上拉电阻将它拉高,这样这两个引脚在工作过程中将不起作用,因为在引导的过程中不需要对AT25HP512进行写操作。
图5 ADSP BF533与AT25HP512的连接方式(略)
从AT25HP512的读指令时序图可看出,当ADSP BF533上电或重启动后, AT25HP512的片选信号将从高电平转为低电平以选通此芯片,即AT25HP512这时处于工作状态。然后ADSP BF533通过给SPI口的发送缓冲寄存器SPI_TDBR发送READ指令来激活传输。从读指令时序图中AT25HP512的SI引脚时序上可以看出,然后发送的是16bit的地址以确定要从AT25HP512中哪个地址开始读数据。这时AT25HP512将从起始地址为开始的存储空间读数据到输出引脚SO上,经过DSP的MISO口传输到ADSP BF533的SPI接收缓寄存器SPI_RDBR中,当SPI_RDBR满时,DMA将自动地从其中读取数据,以完成数据的传输及引导。
基于AT25HP512 EEPROM的ADSP BF533的SPI串行引导是一种连线简单,引导过程易控制的引导方式,而且提供了64K字节的较大容量,基本能够满足普通应用程序的要求,与它兼容的还有一款AT25HP256,它们只有在容量上的差别,容量为32K字节。它们都提供了较小的封装形式,特别适用于对系统体积有严格限制的集成电路。 |