LPC1768 SPI模式下SD卡FatFs文件系统移植_第1页
LPC1768 SPI模式下SD卡FatFs文件系统移植_第2页
LPC1768 SPI模式下SD卡FatFs文件系统移植_第3页
LPC1768 SPI模式下SD卡FatFs文件系统移植_第4页
LPC1768 SPI模式下SD卡FatFs文件系统移植_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页LPC1768SPI模式下SD卡FatFs文件系统移植最近在LPC1768SPI模式下移植SD卡FatFs(版本R0.09a)文件系统成功,总结一下移植过程。

一、底层驱动

使用的SSP0的SPI模式驱动,SSP时钟开始使用的25M。SD卡驱动测试完成,可读写擦除测试没有问题之后开始文件系统移植。

要用到的底层驱动函数有:

MMCSD_TYPEMMCSD_Init(void)

BOOLMMCSD_EraseBlocks(uint32_tblkStart,uint32_tblkEnd)

BOOLMMCSD_ReadSingleBlock(uint32_tblkIndex,uint8_t*pBytes)

uint32_tMMCSD_ReadMultipleBlocks(uint32_tblkIndex,uint32_tblkCnt,uint8_t*pBytes)

BOOLMMCSD_WriteSingleBlock(uint32_tblkIndex,uint8_t*pBytes)

uint32_tMMCSD_WriteMultipleBlocks(uint32_tblkIndex,uint32_tblkCnt,uint8_t*pBytes)

除此之外需要读取卡的基本信息,存在CSD寄存器中的,根据读取到的CSD寄存器来得到卡扇区大小,扇区数量等,具体可参考SD卡资料中CSD寄存器说明,对于不同的卡CSD的版本不同。一般SDSC为V1.0版本,SDHC或SDXC为V2.0版本

二、FatFs移植

1、disk_initialize

磁盘初始化,调用底层SD卡驱动(这里用的MMCSD_Init),如果初始化成功返回RES_OK。

2、disk_status

获取磁盘状态,可直接返回RES_OK.

3、disk_read

读磁盘操作,根据couter参数来判断是读单扇区还是多扇区

4、disk_write

写磁盘操作,根据couter参数来判断是写单扇区还是多扇区

5、disk_ioctl

控制设备特定的功能以及磁盘读写以外的其它功能。

nGET_SECTOR_SIZE

扇区大小,跟SD协议中的Block是同一个概念,返回值以WORD形式存入Buffer中。一般情况是以512字节为单位,直接返回512即可。

nGET_SECTOR_COUNT

获取扇区数量,该功能与格式化(f_mkfs)时有关,返回值以DWORD形式存入Buffer中,若返回值错误将导致格式化后容量错误。如果不需要格式化可以直接返回RES_OK;

nGET_BLOCK_SIZE

以扇区为单位的存储阵列的擦除块大小,返回值以DWORD形式存入Buffer中,当擦除块大小未知或是磁盘设备时可以直接返回RES_OK,仅在格式化时使用。

可以直接返回RES_OK,也可以根据CSD寄存器中的SECTOR_SIZE来确定。

nCTRL_ERASE_SECTOR

当要往SD卡写数据时就需要使用该功能,即写之前的擦除扇区。参数以DWORD形式存在Buffer中。

DWORD*pDWORD=(DWORD*)buff;

pDWORD[0]表示要擦除的起始扇区

pDWORD[1]表示要擦除的截止扇区

如果SD卡为只读的话可以直接返回RES_OK;

6、get_fattime

获取当前时间

DWORDget_fattime(void);

返回的当前时间为DWORD数值。各位域定义如下:

bit31:25年,从1980年开始算起(0..127)

bit24:21月(1..12)

bit20:16日(1..31)

bit15:11时(0..23)

bit10:5分(0..59)

bit4:0秒/2(0..29)

7、配置参数

_USE_MKFS:为1时允许格式化,为0时不允许。

_MAX_SS:最大操作扇区大小,大的值可以提前文件系统效率。

_USE_ERASE:为1时可以使用CTRL_ERASE_SECTOR功能

三、速度测试:

测试文件wmv视频文件,大小:7375.689KB(7552706Bytes)

SPI时钟50MHz

其中写入速度是根据拷贝时间和读取时间来计算出写入时间而得到的。

速度测试结果如下:

文件系统SD卡类型读取时间读取速度拷贝时间拷贝速度写入速度

FAT金士顿TF1G10秒737.569KB/S27秒273.174KB/S433.864KB/S

FAT32金士顿TF1G10秒737.569KB/S123秒59.965KB/S65.272KB/S

FAT32闪迪SD4G21秒351.223KB/S34秒216.932KB/S567.361KB/S

FAT32金士顿SD8G11秒670.517KB/S29秒254.334KB/S409.761KB/S

FAT32金士顿SD16G12秒614.641KB/S29秒254.334KB/S433.864KB/S

FAT32金士顿SD32G11秒670.517KB/S29秒254.334KB/S409.761KB/S

底层驱动使用SSP0,加上DMA功能后的速度测试结果如下:

文件系统SD卡类型读取时间读取速度拷贝时间拷贝速度写入速度

FAT金士顿TF1G5秒1.441MB/S17秒433.864KB/S614.641KB/S

FAT32金士顿TF1G5秒1.441MB/S111秒66.448KB/S69.582KB/S

FAT32闪迪SD4G16秒460.981KB/S32秒230.490KB/S460.981KB/S

FAT32金士顿SD8G6秒1.200MB/S20秒368.784KB/S526.835K

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论