设为首页
收藏本免费论文网
老版首页
老版首页2
经济学论文 财政税收论文 证券金融论文 管理学论文 会计审计论文 工商管理论文 财务管理论文 公共管理论文 法学论文
理学论文 医药学论文 政治论文 社会学论文 教育类论文 工学论文 计算机论文 艺术类论文 哲学论文
文化论文 英语论文 应用文论文 论文指导论文 文学论文 老版免费论文 老版2免费论文 本站导航
本站已收录十余万免费论文,并不断增加中,想要什么论文资料,轻松一搜便得! 关键词:
免费工学论文免费论文网首页 --> 工学论文 --> 电子信息工程论文 -->单片机实现对cf卡的读写

单片机实现对cf卡的读写

 摘要:CF卡是一种包含了控制和大容量Flash存储器的标准器件,具有容量大、体积小、高性能、携带方便等优点,已广泛应用在数据采集系统和许多消息类电子产品中。本文详细介绍CF卡在单片机系统中的硬件接口电路,以及单片机对CF卡进行标准文件读写的实现,且写入的文件能被Windows操作系统读写。 关键词:CF卡 单片机 FAT文件格式引言由于CF卡(Compact Flash Card)具有容量大、体积小、高性能、携带方便等优点,而且读写速度快,可与多种电脑操作系统平台兼容,因此在数据采集系统中的数据记录或与PC机之间的数据转存多采用CF卡。为了在PC机中能方便地进行数据处理,在下位机端必须采用一种标准的格式组织数据,即将数据按照Windows标准文件格式写入,在PC机端通过读卡器将写入CF的内容以标准文件形式读出。Windows标准文件格式有FAT、FAT32和NTFS。考虑到广泛使用的Windows 98系统的CF卡的容量等因素,通常采用FAT(File Allocation Table)文件系统。单片机系统对CF卡的读写,就是从底层对它进行直接操作,包括寻址、创建文件和读写等。1 CF卡简介CF卡内集成了控制器、Flash Memory阵列和读写缓冲区,如图1所示。内置的智能控制器,使外围电路设计大大简化,而且完全符合PC机内存卡的国际联合会PCMCIA(Personal Computer Memory Card International Association)和ATA(Advanced Technology Attachment)接口规范。实际上,控制器起到了一种协议转换的作用,即将对Flash Memory的读写转化成了对控制器的访问,这样不同的CF卡都可以用单一的机构来读写,而不用担心兼容性问题。CF卡的缓冲区结构,使得外部设备与CF卡通信的同时,CF卡的片内控制器可以对Flash进行读写。这种设计可以增加CF卡数据读写的可靠性,同时提高数据传输速率。CF卡支持多种接口访问模式,有符合PCMCIA规范的Memory Mapped模式、I/O Card模式和符合ATA规范的True IDE模式。上电时,OE(9脚)为低电平,CF卡进入True IDE模式,此时引脚OE也叫ATA SEL;上电时,OE(9脚)为高电平,CF卡进入PCMCIA模式,即Memory Mapped模式或I/O Card模式,此时可通过修改配置选项寄存器进入相应的模式。配置选项寄存器格式如下:SRESETLevelREQconf5conf4conf3conf2conf1conf0SRESET—软复位信号;Level REQ—中断模式选择(电平或边沿触发)。例如,要加入Memory mapped模式,只需要在上电时保证OE为高电平,因为配置选项寄存器的conf5~conf0位的初始化值为“00000”;而要进入I/O Card模式,除了上电时保证OE为高电平外,还要进一步设置conf5~conf0,如表1所列。但是对于具体型号的CF卡而言,下面三种情况也是被CFA(CF card Association)所允许的:①上电时进入True IDE模式,工作过程中,只要监测到OE变为高,就退出True IDE模式;②允许卡在复位时重新配置;③上电时进入PCMCIA模式,允许过程中,只要监测到OE变为低,就进入True IDE模式。

表1 模式选择conf5conf4conf3conf2conf1conf0模 式000000Memory map000001I/O Mapped,对应16位系统000010I/O,对应1F0h-1F7h/3F6h-3F3h000011I/O,对应170h-177h/376h-377h2 CF卡与51单片机的接口CF卡在PC Memory方式与51芯片的接口电路如图2所示。由于采用CF卡上电后自动进入的Memory模式,而且不存在对特性寄存器的读写,故可将REG接高电平。片选信号CE1和CE2组合可选择数据位宽度,如表2所列。图2中CE2接VCC,选用的是8位(D7~D0)数据宽度。
表2 数据宽度选择 8位(D7~D0)8位(D15~D8)16位高 阻 CE10101CE21001为了实现即插即用的功能,CE卡上提供了两个用来检测卡是否存在的引脚(CD1、CD2),由卡内部接地。当主机检测到与其相连的CD1和CD2两个引脚同时为低电平时,可判断出卡与主机相连;否则,卡未与主机相连。由于I/O口紧张,RDY/BSY引脚悬空不用,通过查询状态寄存器能判断CF卡是否准备就绪。在实际应用中,由于一次至少要读写一个扇区512字节,所以要扩充一块RAM。我们选用的是62256,容量为32KB,这样便可以支持大到2GB的CF卡(参见下文),增加了其扩展性。

   
单片机实现对cf卡的读写 来自: 免费论文网www.paper800.com  

3 FAT文件系统FAT文件系统是基于DOS的文件系统。常说的FAT有12位的FAT12和16位的FAT16,另外就是32位的FAT32。考虑到CF卡的容量有限,宜选用FAT16。这里只对FAT文件系统作一简单介绍,更详细的内容请见参考文献。磁盘的寻址方式有两种:物理寻址C/H/S(柱面/磁头/扇区)方式和逻辑块LBA(Logical Block Addressing)寻址方式。二者之间的转换关系为:LBA地址=(柱面号×磁头数+磁头号)×扇区数+扇区数-1采用LBA寻址方式,没有磁头和磁道的转换操作,在访问连续的扇区时,操作速度比物理寻址方式要快,而且也简化了对磁盘的访问。硬盘的结构布局分为MBR(主引导扇区)和最多4个逻辑分区(含DOS分区或非DOS分区),而在DOS逻辑分区中的磁盘组织如下:引导扇区FAT1FAT2根目标区数据区引导扇区DBR(DOS Boot Record):位于LBA 0扇区,包含跳转指令、厂商标识和DOS版本号、BPB(BIOS Parameter Block,BIOS参数块)、DOS引导程序、结束标志字AA55。其中BPB包含每扇区字节数、每簇扇区数、每个FAT扇区数、扇区总线、根目录项数等等参数。FAT是给每个文件分配磁盘物理空间的表格。FAT16簇数的上限是2 16,即65536个,每簇扇区数的上限是64个,因此其分区空间的上限为2G。FAT1位于逻辑1扇区。FAT簇映射中,0000表示空簇,FFF0~FFF6备用,FFF8~FFFF表示簇链结束,FFF7表示坏簇,其余值表示其后续簇的簇号。图3所示的文件起始簇号为2,结束簇号为4,共占用2、3、4三个簇。簇是存储文件的最小单位,可以包含多个扇区。当文件本身或文件的最后一簇哪怕只有1个字节,也要占去1簇。这样,当这种文件很多时,空间的浪费是很可观的。文件目录表FDT(File Directory Table)是操作系统寻找文件的入口,其内容是每一个文件的目录。FDT中的每一个目录项由32个字节组成。前8个字节是文件名,不足时用空格填满。紧跟着的3个字节是文件扩展名,接下来是10个字节的系统保留字。然后是文件产生的时刻和日期占8个字节,再后的2个字节是文件首簇号,最后4个字节是文件大小。FDT的起始扇区可由FAT的大小计算出,而FAT的大小可在DBR中读出。

4 软件实现按照FAT16方式存储文件,是一个通用的解决方案。因为这样可以得到现有的DOS和Windows系统的支持,但是代价是浪费一部分空间,也就是说存储效率下降了。为了改善这一情况,采用了改进的存储方法。就是先创建一个空文件,并根据需要为其分配一个大的存储空间,写入动作只是从尾部追加数据。这样就避免了很多小文件的产生,既可以充分利用存储空间,又可以使地址连续。CF卡的读写是通过卡内的缓冲区进行的,不支持直接读写存储区域。缓冲区为一个FIFO结构,读写顺序进行,不支持随机存取,系统只能一次性地按顺序读完或写完所有一个或多个扇区。设计时使用LBA方式访问CF卡比较方便,读写时只需要先在相应的寄存器写入LBA地址即可。要设定LBA方式,需访问驱动器/磁头寄存器。内存模式下部分寄存器译码如表3所列。
表3 内存模式下部分寄存器译码REGA10A9~A4A3~A0offsetOE=0WE=010X00000偶字节读侧字节写10X00011错误寄存器特性寄存器10X00102扇区数扇区数10X00113扇区号(LBA7~0)扇区号(LBA7~0)10X01004低柱面号(LBA15~8)低柱面号(LBA15~8)10X01015高柱面号(LBA23~16高柱面号(LBA23~16)10X01106驱动器/磁头(LBA27~24)驱动器/磁头(LBA27~24)10X01117状态寄存器命令寄存器驱动器/磁头寄存器结构如下:1LBA1DRVHS3HS2HS1HS0LBA—1为LBA方式,0为C/H/S(柱面/磁头/扇区)方式;DRV—选择驱动器0或驱动器1;HS3~HS0—LBA27~24,或为C/H/S方式的磁头号。文件创建过程也就是针对FAT和FDT的读写过程。首先在FDT中申请表项,创建文件名称、属性、起始簇号、文件大小等,然后修改FAT,分配数据空间,备份FAT。文件存储就是要先从FDT和FAT中获得文件的起始簇号和簇号链,即LBA地址。然后,将此地址送给寄存器3、4、5、6(表3中的offset3、4、5、6),向扇区数寄存器填写读写数据所占的扇区个数,再向CF卡的命令寄存器写入操作的命令字,写操作30H,读操作20H。当写入命令或写入数据后要查询状态寄存器的状态,以判定CF卡是否准备就绪或写入成功。状态寄存器结构如下:BUSYRDYDWFDSCDRQCORR0ERR各位的值为1时含义如下:BUSY—CF卡记,此时不能接受其它命令;RDY—卡可以接受命令;DWF—写错误;DSC—卡准备就绪;DRQ—CF卡请求数据传送;CORR—数据错误但被修正,不会终止多扇区读操作;ERR—在上一命令以某种错误结束,可以在错误寄存器中查看错误类型。下面以向CF卡写一个扇区数据为例,给出图4所示流程和C程序代码。bit flag_1,flag_2;void cfwr(){unsigned char status;cfwr_comm(0xe0,0x00,0x00,0x6c);//写参数命令,指向逻辑6c扇区do{status=PBYTE[0x07]; //读状态寄存器if((status & 0x01)==0x01)flag_1=1; //若ERR=1,置出错标志,做相应处理while(status!=0x58);cfwr_dat(); //写入数据do{status=PBYTE[0x07]; //读状态寄存器if((status & 0x20)==0x20)flag_2=1; //若DWF=1时,置出错标志,做相应处理while(status!=0x50);}void cfwr_comm(unsigned char lba27,lba23,la15,lba7) //写参数命令函数{PBYTE[0x02] 扇区数为1PBYTE[0x03]=lba7;PBYTE[0x04]=la15;PBYTE[0x05]=lba23;PBYTE[0x06]=lba27; //设定LBA方式PBYTE[0x07]=0x30; //送写入命令30H}void cfwr_dat() //写数据函数{unsigned int i,temp;unsigned char xdata dat[512]; //dat[]存放一个扇区的数据for (i=0;i<512;i++) //连续写512字节{P1=P1 & 0xf8; //选中外部RAMtemp=dat[i];P1++; //根据实际电路选择中CF卡PBYTE[0x00]=temp;}}5 结论笔者在湿度检测仪中,根据本文所介绍的方法,用CF卡向计算机转存数据,可以非常方便地对数据进行维护。

   
单片机实现对cf卡的读写 来自: 免费论文网www.paper800.com

 如果觉得本篇论文可以,添加到收藏夹! [返回顶部↑
搜 索 其 它
相 关 论 文
led电子礼花树控制器设计
历史在马克思哲学中是如何作为本体而存在的
遐思录——赴湖北s县调查日记
选举之后——李集村村民自治调查
民主制度的言论限制[2]
完善社会主义市场经济进程中的马克思主义意识形态建设
摄影文学促进人们成为艺术创造的主人
电影剧作分析及其要领
相 关 类 别
通信学论文
电子机械论文
工程建筑论文
材料工程学论文
交通运输论文
工业设计论文
环境工程论文
电力论文
水利工程论文
电子信息工程论文
自动化论文
电气工程及其自动化论文
通信工程论文
计算机科学与技术论文
电子科学与技术论文
热能与动力工程论文
测控技术与仪器论文
材料成型及控制工程论文
机械设计制造及其自动化论文
石油工程论文
矿物加工工程论文
农学论文
园林论文
园艺论文
水产养殖学论文
草业科学论文
动物科学论文
森林资源与保护游憩论文
农业资源与环境论文
林学论文
植物保护论文
水土保持与荒漠化防治论文
动物医学论文

免费论文网包含:各类免费毕业论文下载、免费法律论文、免费计算机论文、免费会计论文、免费英语论文、免费经济论文、免费管理论文、免费金融论文、大学生社会实践论文、三个代表论文、三农问题论文等所有论文均来源于网上的共享资源以及一些期刊杂志,所有论文仅供网友间相互学习交流之用,请特别注意勿做其他非法用途!如果我们有侵犯你的版权或其他有损您利益的行为,请联系我们指出,我们会立即进行改正或删除有关内容!
广告服务 | 关于我们 | 加盟合作 | 免责条款 | 人才招聘 | 联系我们