基于STM32地FATFS文件系统移植.doc

基于STM32地FATFS文件系统移植.doc

ID:52536951

大小:42.50 KB

页数:13页

时间:2020-03-28

基于STM32地FATFS文件系统移植.doc_第1页
基于STM32地FATFS文件系统移植.doc_第2页
基于STM32地FATFS文件系统移植.doc_第3页
基于STM32地FATFS文件系统移植.doc_第4页
基于STM32地FATFS文件系统移植.doc_第5页
资源描述:

《基于STM32地FATFS文件系统移植.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于STM32的FATFS文件系统移植经过将近1个月的时间,终于完成了STM32是FATFS文件系统移植,说来是够艰辛的,SDIO章节是我学习cortexm3以来消耗时间最多的章节。这里说一些个人对于SDIO的看法,其实SDIO属于意法半导体公司在cortexm3内核之外(在芯片之内)添加的功能外设,完全属于意法的杰作了。关于SD卡的读写,分为SPI模式和SD模式(专用模式),这两种模式都必须遵循SD2.0协议。SPI模式控制方法相对较为简单,操作简洁,但失去了速度;SD模式控制方法相对较为复杂一点,操作繁琐,但具有高速的特点。FA

2、TFS文件系统是一种兼容性比较高的文件管理系统,兼容FAT32、FAT16。关于文件系统的细节,如果认真研究的话,应该会觉得作者的伟大,惊叹代码的绝妙。我们要想移植FATFS,首先要做的是编写基于SDIO模式的SD卡底层驱动,这部份完整的驱动代码较多,大概有2000多行,但我们首先需要克服心理作用,再长的代码只要理解之后,都很简单。意法在参考手册中介绍SDIO时,上下文比较乱,其中还夹杂讲解了一些SD2.0协议,使得初学者云里雾里。因为SDIO是属于一种完全的外设接口,所以在讲解的过程中必须与实际的外设SD卡联系起来。STM32的S

3、DIO接口兼容性很高,可以兼容SD1.0卡、2.0卡、MMC卡、多媒体卡等,与多媒体卡4.2支持三种不同的数据总线模式:1位、4位和8位,在8位的模式下速度可以达到48MHZ,但在SD2.0协议中只支持两种总数总线模式:1位和4位,在SDIO中存在两种状态机:命令状态机(CPSM)和数据状态机(DPSM),两者的使能信号独立,用于控制外部双向驱动器,命令是通过CMD命令线单线串行发送的,而数据是由于DATx数据线传输(1位或4位),每当CPSM发送一条命令给卡时,如工作正常的话,卡都会有与CPSM中设置响应格式相对应的响应内容(短响

4、应与长响应),两者的细节在下面讲到。SDIO功能分为两个部分,一个就是SDIO适配器模块,可以实现所有MMC/SD/SDI/O卡的相关功能,如时钟的产生、命令和数据的传输;还有就是AHB总线接口操作SDIO适配器模块中的寄存器,并产生中断和DMA请求信号。上面提到的数据总线的宽度为分为1位或4位(本文是针对SD2.0协议进行主要说明),在上电复位后,系统缺省为1位数据宽度——DAT0用于数据传输。SD卡或SDI/O卡可以使用两种数据宽度模式,这两种卡的所有数据线都需要设置为复用推挽模式。命令线CMD有两种操作模式:1、MMC卡V3.

5、31或之前版本的卡在初始化时为复用开路模式;2、SD卡或SDI/O卡或MMCV4.2在初始化时命令传输线工作在复用推挽模式。还有就是卡的时钟线(SDIO_CK),这个时钟频率对于不同的卡需要工作在不同的范围,这个我们就不细说了。SDIO的时钟可以分为两个,分为SDIO适配器时钟(SDIOCLK=HCLK)和AHB总线时钟(HCLK/2),还有HCLK就是SYSCLK。既然提到外设接口,那就要清楚一共有几根线与主控芯片相连,分为SDIO_CKSDIO_CMDSDIO_D[7:0],本文是对SD2.0卡进行论述,所以只用到了SDIO

6、_CK/SDIO_CMD/SDIO_D[3:0],因为SD卡不支持8线模式。SDIO适配器主要全为5个部分:适配器寄存器模块、控制单元、命令通道、数据通道、数据FIFO。这5个部分中,不同部分使用的时钟也有不同,适配器寄存器和FIFO使用HCLK/2,控制单元、命令通道和数据通道使用的是SDIOCLK=HCLK。其实这5个部分,对于初学者来说,根本分不清有何具体区别。适配器寄存器模块包含所有系统寄存器,如用于存放状态位的SDIO_STA和清除中断寄存器SDIO_ICR,对相应寄存器写入清除中断标志(产生清除信号);控制单元有于电源管

7、理和卡的时钟分频设置;命令通道(CPSM)主要用于向卡发送相应的命令并从卡接收相应的响应内容,实现主机与卡之间的控制信息交互,这里就必须提到SDIO_CMD命令寄存器,这个寄存器就是负责向发送命令的,与该寄存器相配合的还有一个参数寄存器(发送命令参数)SDIO_ARG,命令寄存器中存放了命令索引(命令号)和对应命令的等待响应设置和CPSM等待中断请求设置(这个设置一般使用无等待,关闭命令超时控制,改为中断清除方式,关于这个命令超时控制就是设定了一定的时间,在这个时间之间必须得到响应,否则状态机将进入空闲状态),还有就是命令响应了,命

8、令响应寄存器SDIO_RESPCMD用于保存接收到的响应命令索引(如命令发送正常,得到响应命令索引和发送的一致,作为一个控制命令的回应),对于一些带响应的命令(只有cmd0没有响应),都会返回一些参数(如返回卡状态寄存器、CSD、CI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。