登录   |   注册
    准考证打印   论文投票   报考指南   论文辅导   软考培训   郑重申明  
您现在的位置:  首页 > 通信学苑 > 中级终端与业务 >> 正文
正文
HCS12X单片机的SD卡FAT文件系统读写设计
来源:尚大教育-通信学院 作者:小连 时间;2012-12-18 点击数: 尚大软考交流群:376154208
HCS12X单片机的SD卡FAT文件系统读写设计

3.2 HCSl2XSPl模块初始化

 

    MC9S12XSl28MAA单片机包含2个串行外设接口SPI,可以很方便地实现对Micro SD卡接口的数据传输。为了配置时钟和数据长度,需要对SPI控制寄存器(SPCRl和SPICR2)、SPI波特率寄存器SPIBR和SPI数据寄存器SPIDR进行设置:使能SPI模块,将SPICRl中的MSTR位置1使单片机工作在主机模式,产生串行时钟来同步主从双方的移位寄存器,配置SPI时钟极性位与SPI时钟相位控制位,使能从机输出选择;初始化SPI波特率寄存器。

    3.3 SD卡初始化

    SD卡初始数据传输需工作在低于400 kb/s的频率,因此配置SPI波特率寄存器,以工作在低速模式下。片选信号后应延时至少74个时钟周期。SD卡默认缺省使用SD总线传输协议,主机需要发出命令CMDO(CMD_GO_IDLE_STATE)才能使SD卡工作在SPI传输模式下,当单片机返回0x 01时说明已经进入了IDLE状态。此时应循环发送CMD55+ACMD41以确认是否为SD卡,如果回应超时则发送CMDl(CMD_SEND_OP_COND)以确认是否为MMC卡。经实验发现,Kingston公司的Micro SD卡使用CMD55+ACMD41或者CMDl都可以进行激活。激活SD卡的SPI模式后SD卡进入准备状态,此时发送CMDl6(CMD_SET_BLOCKLEN)设置SD卡的读写块大小,然后重新配置SPI波特率寄存器SPIBR使单片机SPI工作在高速频率下,延时8个时钟周期后返回,完成SD卡初始化。图2为SD卡SPI高速模式初始化流程。

    3.4读写单块数据

    SD卡单块数据的读取是先通过单片机发送CMDl7(CMD_READ_SINGLE_BLOCK)命令,以SD卡指定数据块起始位地址作为参数,如果读取成功SD卡会返回1个R1命令作为响应。然后发送1个起始数据命令,接着发送单块字节数量的数据并接收SPI数据寄存器SPIDR中的数据,最后是2字节CRC校验。

    SD卡单块数据的写入与读取相似,通过单片机发送CMD24(CMD_WRITE_SINGLE_BLOCK)命令,以SD卡指定数据块起始位地址作为参数,如果读取成功SD卡会返回1个R1命令作为响应。然后发送1个起始数据命令,接着发送单块字节数量的需写入数据,最后是2字节CRC校验。

3.5 FAT文件系统信息读取

 

    为了SD卡文件数据管理方便并且与PC机之间兼容得更好,同时考虑到SD卡自身容量的限制,选择FATl6文件系统对SD卡信息进行管理。

    为了方便管理和扩展性开发,对SD卡进行了分区。模拟硬盘模式创建出了MBR区(主引导扇区)与DBR区(操作系统引导记录区),在向下兼容的同时实现了对分区过的SD卡FAT文件系统的读写。

    SD卡数据可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。MBR区是主引导区,位于整个SD卡的第1单块上。在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节是DPT(Disk Partition Table,分区表),最后2个字节“55 AA”是分区的结束标志。这整体构成了SD卡的主引导扇区。DBR是操作系统引导记录区,是操作系统可以直接访问的第1个扇区,它包括1个引导程序和1个被称为BPB(Bios Parameter Block)的本分区参数记录表。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT、个数,分配单元的大小等重要参数。

    FAT文件系统的分区有如下几个部分:保留区,存放FAT文件系统的重要参数和引导程序;FAT表,记录簇使用情况;根目录区,记录根目录信息。

    本文中单片机对FAT系统的读写利用的是MBR区上的DPT分区表信息,用于找到FAT分区。然后通过FAT分区的DBR区上的BPB分区参数记录表信息找到根目录,读取根目录信息并通过FAT表中的文件簇信息实现文件的管理。

    研究中为方便代码的移植和优化,在FAT初始化的时候将读写扇区函数指针指向Micro SD卡的读写函数,并使用了2个结构体来存储SD卡的MBR与DBR信息。但鉴于单片机自身的内存容量,又建立了1个SimpleFat.c程序文件,只存储程序所需的几个地址常量:StartMbrAddress(MBR起始地址)、StartDbrAddress(DBR起始地址)、StartFatlAddress(FATl表起始地址)以及SeePerClu(簇扇区数量),大大减小了单片机内存的开销。

来顶一下
返回首页
返回首页
上一篇:PXA270的电池充电及电量计量模块设计
下一篇:移动彩信在设备远程检测中的应用
 相关文章
 
 
跟贴共
笔 名 :   验证码:
网友评论仅供其表达个人看法,并不表明尚大教育同意其观点或证实其描述
距离2023年10月14日通信考试还有
通信各地考务机构
各省市通信报名简章