Compact Flash存储卡的8051系统接口方案_8051输入输出接口有哪些
发布时间:2020-02-16 来源: 美文摘抄 点击:
收稿日期:2006-09-27? 作者简介:刘佑祥(1946-),男,湖北武汉人,武汉科技大学中南分校信息工程学院副教授。? (武汉科技大学中南分校 信息工程学院,湖北 武汉 430223)?
摘要:本文介绍了SST公司Compact Flash存储卡(CF卡)的电气特性与接口指令集,提出了一个基于8051单片机系统的完整CF卡接口解决方案,并给出了详细硬件电路设计和软件设计要点。?
关键词:8051单片机系统;CF卡;计算机接口设计?
中图分类号:TP305 文献标识码:A??
前 言?
随着电子技术的迅速发展,嵌入式系统的功能变得越来越强大,设计中对其存储容量的要求也随之提高,所以原有的EEPROM等存储容量为KB级的存储器件已经无法满足设计要求。在这一背景下,Compact Flash Card(CF卡,见图1)作为一类存储速度快,存储容量大(容量可达数百MB至数GB)的新型存储器件就应运而生。但是由于CF卡的接口方式是为PC机接口设计的IDE方式,如果要在单片机系统中使用CF卡,需要在单片机系统中模拟IDE控制器的功能。因此,本文将讨论在8051系统中实现CF卡接口的解决方案。?
图1 Compact Flash Card外观示意图?
一、CF卡接口的电气特性?
SST公司的CF的封装为25×2的双列插座,行列之间的间距均为25mil。由于封装的特殊性,在应用时需要自行设计SCH和PCB封装。设计PCB封装时需注意选择合适孔径和焊盘大小,因为排针的针脚为正方形不是圆形,所以焊盘的直径应选择为针脚截面正方形的对角线长。如果直接使用标准CF卡接插件,则PCB上应相应设计成适合的贴片封装。?
二、主要功能引脚及说明?
CF卡的主要功能引脚为数据线D0~D15,地址线A0~A9,片选及数据选择CE1,CE2,读写控制端OE、WR,寄存器选择REG,卡读写忙判断RDY/BSY,RESET等。?
数据线D0~D15用于数据的读写。CF可以工作于16位数据总线方式也可以工作于8位总线方式。在读写速度上的要求不是很严格的情况下,为了方便和8位MCU的接口,一般选择为8位数据总线工作方式。?
CE1和CE2的功能如表1所示:?
若选择8位工作方式,CE2应接固定电平1,CE1低有效。在不同工作方式的说明中,可能把CE1和CE2分别改称CS0,CS1。?
地址线A0~A9。CF卡在Memory工作方式下,仅地址线A0~A3起作用,用于选择读写端口,其余地址线可以接固定电平。?
REG用于选择是对CF卡进行命令、状态读写还是读写CF卡的属性寄存器。REG=1时读写命令。如表2所示:?
在Memory方式下,对CF的控制和数据读写均是通过对这几个端口的读写来实现的。?
RDY/BSY用于判断CF卡是否处于读写忙状态。出于严谨性可以在对CF卡进行读写之前利用此引脚判断CF卡是否空闲。在数据读写量比较小的情况下,使用一定的延时即可。?
三、实际应用电路设计?
图2给出了CF卡的实际应用电路。图中96MB的CF卡工作于Memory方式,8位数据总线,接口的主控MCU是89C52。?
图2 CF实际应用电路?
单片机按标准的P2、P0口复用方式与CF卡接口。CS0,CS1,REG分别接单片机的P2?6,P2?5,P2?7,端口选择A3~A0接到经74LS373锁存的低4位地址,CF卡的读写引脚分别与单片机的读写信号相接。若把闲置地址引脚接固定电平,则系统分配给CF卡的端口地址为【B000】~【B007】。?
INTRQ(即BSY/RDY)脚接到单片机的P1.7。?
四、CF卡的存储特性?
CF卡采取的是类似硬盘的分块存储方式,分为柱面Cylinder、头Head和扇区Sector管理。对96MB的CF卡而言,共有733个柱面,每个柱面8个头,每个头32个扇区,每个扇区512字节(8位)。CF卡的读写是以一个扇区为基本单位的,在读写一个扇区之前先送出当前需要读写的柱面、头和扇区,然后发送读写命令,一个扇区的512个字节需要一次性连续写入或者读出。?
下面给出一段对CF卡读写的C51程序段:?
#define DataPort XBYTE\[0xB800\]?
#define Feature XBYTE\[0xB801\]?
#define SecCount XBYTE\[0xB802\]?
#define SecNo XBYTE\[0xB803\]?
#define CylLow XBYTE\[0xB804\]?
#define CylHigh XBYTE\[0xB805\]?
#define CardHead XBYTE\[0xB806\]?
#define Command XBYTE\[0xB807\]定义CF卡端口?
CardHead=0xA0+head;置当前头?
SecCount=0x01;一次读写一个扇区?
SecNo=sector;置当前扇区?
CylLow=cylinder%255;置柱面高位?
CylHigh=cylinder/255;置柱面低位?
Command=0x30;写扇区命令?
delay(1);延时1ms?
for(i=1;i
相关热词搜索:存储卡 接口 方案 Compact Flash存储卡的8051系统接口方案 compactflash存储卡 compactflash读卡器
热点文章阅读