基于DSP的TMS320VC5421与CF存储卡的接口实现
扫描二维码
随时随地手机看文章
本文实现了TMS320VC5421与CompactFlash存储卡(以下简称CF卡)的接口。利用DSP的高速数字信号处理能力可完成数据的实时采集和处理;利用CF卡的容量大、非易失性和即插即用的特性可完成数据保存和传输。因此TMS320VC5401与CF卡的接口在工业检测前端系统的应用中有很好的前景。
1 TMS320VC5421芯片介绍
数字信号处理器(DSP)是数字信号处理理论与超大规模集成电路(VLSI)技术融合的结晶。TMS320VC5421更是定点系列DSP中的佼佼者。其系统框架如图1所示。
TMS320VC5421有4个主要特点:
(1)TMS320VC5421包含两个独立的DSP子系统。每个子系统都有独立的程序空间、数据空间和I/O空间,且每个子系统分别具有片
内4套总线即4条地址总线、4条数据总线(3种数据总线用来访问片内数据空间,1条数据总线用来访问程序空间)和2个地址发生辅助寄存器来实现并行运算和并行存储功能,提高CPU的运算效率。
(2)TMS320VC5421的每一个子系统都有6个独立的DMA通道,且可对每个DMA通道进行独立编程。TMS320VC5421的两个子系统的所有程序空间、数据空间和I/O空间都在每个DMA通道的寻址范围内。
(3)TMS320VC5421的工作频率最高可达到100MIPS,且两个子系统的工作时钟统一由子系统A控制。
(4)TMS320VC5421的两个子系统之间同步信号可以由IPIRQ中断提供。
TMS320VC5421有3种方式实现不同子系统中的数据传输:
(1)将数据存放在两个子系统共享的128KB程序空间中,由共享的128KB程序空间实现数据传递。
(2)将数据存放在与两个系统分别相连的16字的FIFO中,由FIFO实现两个子系统的数据传递。
(3)通过DMA将数据传输到任意子系统的任意空间。
2 CompactFlash存储卡产品介绍
CompactFlash技术是由CompactFlash协会(CFA)提出的一种与PC机的ATA接口标准兼容的新技术,它致力于开发一种先进的、速度快、容量大、体积小、质量轻、功耗低且可移动的数字信息存储产品。
由图2可知,CF卡包含两个基本部分:片内的芯片控制器和片内的存储模块。片内的存储模块用来存储数字信息,片内的芯片控制器用来实现与主机的接口及控制数据在存储模块中的传输。
2.1 CF卡控制器
CF卡控制器中包含两组寄存器:命令寄存器和控制寄存器。命令寄存器用来接受命令和传输数据;控制寄存器用作磁盘控制。这两个寄存器组通过REG信号进行区分。控制寄存器组主要用于控制CF卡的工作方式;命令寄存器组被分配在与ATA标准兼容的地址空间。当CF卡工作在I/O方式下,命令寄存器组的地址空间为IF0H~1F7H和3F6H~3F7H;当CF卡工作在寄存器方式下,命令寄存器组的地址空间为1F0H~1FFH。
当CF卡工作在存储器方式下,CF卡按照ATA标准以寄存器方式传送数据、命令和地址。些寄存器除数据寄存器为16位外,其它寄存器均为8位。
数据寄存器(R/W):这是一个16位数据寄存器,用于对扇区的读写操作。主机通过该寄存器向CF卡卡控制器写入或从CF卡控制寄存器读出扇区缓冲区的数据。
错误寄存器(R)和特性寄存器(W):错误寄存器反映控制寄存器在诊断方式或操作方式下的错误原因。特性寄存器一般不使用。
扇区数寄存器(R/W):用来记录读、写命令的扇区数目。
扇区号寄存器(R/W):用来记录读、写和校验命令指定的起始扇区号。
柱面号寄存器(R/W):用来记录读、写、校验和寻址命令指定的柱面号。
驱动器/磁头寄存器(R/W):记录读、写、校验和寻道命令指定的驱动器号、磁头号和寻址方式(CHS模式或LBA模式)。
状态寄存器(R)和命令寄存器(W):状态寄存器反映CF卡驱动器执行命令后的状态,读该寄存器要清除中断请求信号。命令寄存器接收主机发送的CF卡工作的命令控制字。[!--empirenews.page--]
2.2 CF卡的编址方式
CF卡的扇区寻址有两种方式:物理寻址方式(CHS)和逻辑寻址方式(LBA)。物理寻址方式使用柱面、磁头和扇区号表示一个特定的扇区。起始扇区是0磁道、0磁头、1扇区,接下来是2扇区,一直到EOF扇区;接下来是同一柱面1头、1扇区等。逻辑寻址方式将整个CF卡同一寻址。逻辑块地址和物理地址的关系为:
LBA地址=(柱面号×磁头数+磁头号) ×扇区数+扇区数-1
采用逻辑寻址方式,没有磁头和磁道的转换操作,因此在访问连续扇区时,操作速度比物理寻址方式块。
3 磁盘文件管理系统简介
为了能够对大容量磁盘上的数据进行有效的管理,Win9X在磁盘上建立了一个文件系统。该文件系统可对磁盘上的数据进行有效的管理。
磁盘文件系统将整个磁盘划分为4个独立的区域,每个区域包含磁盘的独立信息,且这4个独立区域中的信息组合成一个完整有效的磁盘文件管理系统,如表1所示。
(1)DOS引导扇区:该扇区是磁盘的引导扇区,包含一些重要的磁盘系统信息,如:磁盘总共包含多少个扇区,每个族包含多少个扇区,每个扇区包含多少个字节等。通过这些磁盘系统信息可以计算出磁盘的容量、FAT表和FDT表的起始位置以及文件数据存放的起始位置等。
(2)文件分配区(FAT):文件分配区包含两个完全相同的FAT表,其中一个FAT表用作备份FAT。每个FAT表以16字节为个单元。FAT的每一个单元都映射磁盘上的一个簇,其中的值就反映了该簇的使用情况。
(3)根目录区(FDT):根目录区专用来存放根目录下的文件信息。根目录下的每一个文件在该目录区都对应一个32字节的目录项。这32字节的目录项包含文件的名称、属性、文件的长度、文件在磁盘上的起始簇号、文件建立和最后修改和日期和时间等。这些32字节的小单元互相首尾相接,中间没有任何分隔标志。
(4)文件数据区:该区是磁盘存放所有信息的场所为了便于管理,文件管理系统以簇为单位将文件分配在文件数据区的存储空间。1族总是2n个连续扇区。文件在文件数据区存放的起始位置存放在其对应目录下的FDT表中,当文件的长度大于1K时,文件数据区的后续位置保存在FAT表中,即对应的FAT单元中的数值就是文件的后续部分所存放位置的簇号。
文件管理系统通过以上4个区域实现对磁盘上的文件进行有效的管理。文件管理系统将文件数据存放在文件数据区,将文件的属性存放在文件对应目录下的FDT表中,将文件的存放位置存放在FAT表中。因此文件管理系统通过FAT表和FDT表可以很方便地对文件数据区的文件进行管理。
4 TMS320VC5421与CF卡的硬件接口
TMS320VC5421对外有I/O、程序和数据3个并行的16位访问空间,分别由对应的空间选择信号线选通。本硬件电路选用TMS320VC5421的I/O空间与CF卡接口,采用数据线分时复用方式。
如图3所示,本电路使用DSP子系统A与前向通道相连。DSP子系统A对采集到的数据进行实时处理,完成数据的实时处理后,通过核间的3种数据传输方式将采集到的数据发送到DSP子系统B中,并且通过核间中断IPIRQ通知DSP子系统B可以存储CF卡。
4.1 CF卡即插即用的实现
(1)硬件提供判断条件。CF卡为了实现即插即用的功能,在自身电路上提供了两个用来检测CF卡是否存在的管脚(CD1、CD2)。CD1和CD2的有效电平为低电平,即当主机检测到与其相连的CD1和CD2两个管脚同时为低电平时,可判断出CF卡与主机相连;当主机检测到与其相连的CD1和CD2有一个管脚不为低,则可判断出CF卡未与主机相连。
(2)软件实现。首选定义全局变量(如:IsExist)用于记录CF卡是否与主机相连,当IsExist为0时表示CF卡未与主机相连;当IsExist为1时表示CF卡与主机相连。其次在每次操作CF卡时检测CF卡的CD1和CD2管脚。当检测到CD1和CD2管脚为低电平且IsExist为0时复位CF卡,重新检测CF卡的FAT表统计还剩余多少空间可以分配,检测完FAT表后置变量IsExist为1。当检测到CD1和CD2管脚为低电平且IsExist为1时,继续CF卡的正常操作。当检测到CD1和CD2为高时,停止CF卡操作,置变量IsExist为0。
4.2 文件的存储
向CF卡创建文件的流程如图4所示。在CF卡初始化后(包含CF卡上电复位和统计剩余空间等),DSP向CF卡存储数据的核心部分就是首先向一些必要的寄存器填写必要的信息,如向扇区号寄存器填写读写数据的起始扇区号(LBA地址)和扇区数寄存器填写读写数据所占的扇区个数等。然后向CF卡的命令寄存器写入CF卡操作的命令字,如写操作则向CF卡的命令寄存器写入30H,读操作向CF卡的命令寄存器写入20H等。