历史上的今天

今天是:2024年08月24日(星期六)

2021年08月24日 | LPC1768 SPI模式下SD卡FatFs文件系统移植

发布者:温柔心情 来源: eefocus关键字:LPC1768  SPI模式  SD卡  FatFs文件  系统移植 手机看文章 扫描二维码
随时随地手机看文章

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


一、底层驱动


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


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


MMCSD_TYPE MMCSD_Init(void)


BOOL MMCSD_EraseBlocks(uint32_tblkStart,uint32_t blkEnd)


BOOL MMCSD_ReadSingleBlock(uint32_tblkIndex,uint8_t *pBytes)


uint32_t MMCSD_ReadMultipleBlocks(uint32_tblkIndex,uint32_t blkCnt,uint8_t *pBytes)


BOOL MMCSD_WriteSingleBlock(uint32_tblkIndex,uint8_t *pBytes)


uint32_tMMCSD_WriteMultipleBlocks(uint32_t blkIndex,uint32_t blkCnt,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 


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


n GET_SECTOR_SIZE


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


n GET_SECTOR_COUNT


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


n GET_BLOCK_SIZE


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


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


n CTRL_ERASE_SECTOR


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


DWORD  *pDWORD = (DWORD *)buff;


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


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


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


6、get_fattime 


获取当前时间   


DWORD get_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.689 KB(7552706Bytes)


SPI时钟 50MHz


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


速度测试结果如下:


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


FAT     金士顿TF1G    10秒    737.569KB/S    27秒    273.174KB/S    433.864KB/S


FAT32    金士顿TF1G    10秒    737.569KB/S    123秒   59.965KB/S     65.272KB/S


FAT32    闪迪SD4G      21秒    351.223KB/S    34秒    216.932KB/S    567.361KB/S


FAT32    金士顿SD8G    11秒    670.517KB/S    29秒    254.334KB/S    409.761KB/S


FAT32    金士顿SD16G   12秒     614.641KB/S    29秒    254.334KB/S    433.864KB/S


FAT32    金士顿SD32G   11秒    670.517KB/S    29秒    254.334KB/S    409.761KB/S


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


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


FAT      金士顿TF1G    5秒     1.441MB/S      17秒      433.864KB/S    614.641KB/S


FAT32    金士顿TF1G    5秒     1.441MB/S      111秒     66.448KB/S    69.582KB/S


FAT32    闪迪SD4G     16秒     460.981KB/S    32秒      230.490KB/S    460.981KB/S


FAT32    金士顿SD8G    6秒     1.200MB/S      20秒     368.784KB/S     526.835KB/S


FAT32    金士顿SD16G   6秒     1.200MB/S      20秒     368.784KB/S     526.835KB/S


FAT32    金士顿SD32G   6秒     1.200MB/S      22秒     335.259KB/S     460.981KB/S

关键字:LPC1768  SPI模式  SD卡  FatFs文件  系统移植 引用地址:LPC1768 SPI模式下SD卡FatFs文件系统移植

上一篇:LPC17XX之SSP0/1接口
下一篇:通过SPI方式实现LPC17xx的远程升级设计

推荐阅读

   2018年8月24日,高通宣布将在中国台湾设立“台湾营运与制造工程暨测试中心”,用以负责高通供应链、相关工程与业务发展等海外业务的核心据点。据了解,该中心预计将于2019年初开始营运,并进行相关领域的人才招募与投资,通过直接与间接的价值创造,为台湾经济带来重大效益。值得注意的是高通成立此中心的背景。本月10日,彭博社报道,高通已与中国...
编写串口流程很简单:初始化端口 ==> 发送程序编写 + 接受程序编写 ==> PC串口调试助手第一步:因为涉及接受和发送的优先级,所以在初始化串口端口之前必须先初始化中断的设置,下面就先给出主函数的程序:int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断向量的初始化 Usart_Init(115200); ...
1 设计目标及内容目标:设计出一套基于 AI 的智慧人脸门禁系统的硬件系统。主要内容:基于门禁系统的需求,设计并搭建出门禁系统的硬件架构、并协助后台管理系统来完成门禁系统。2 设计方案概述2.1 设计方案原则的选择 本方案的设计原则如下:(1)采用较为先进的技术力量,保证应用程序在硬件平台上运行具备一定的优势。(2)采用成熟的硬件技术,保...
  雷达液位计在环保、电力、石油、化工、钢铁等行业有着广泛应用,是与雷达波所具有的不受被测介质密度、介电常数、导电率、以及泡沫、烟雾、蒸汽介质等变化的环境影响,可靠测量液位分不开的。尽管雷达液位计优点很多,但由于被测对象和工况极其复杂,在使用过程中,雷达液位计难免会出现故障,影响准确测量。一般来讲,雷达液位计测量不可靠,或者说测...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved