SMARTARM2200 ADS工程在IAR EWARM 5.3上的移植(9)-uCFS的移植(SD卡驱动简析)

来源:互联网 发布:淘宝初级课程ppt 编辑:程序博客网 时间:2024/06/07 04:55

接下来就是实现文件系统,uCFS在SD卡上的移植.我用的还是1.34.01版本,网上到处都是.不过更高版本的很难找到,谁有的愿与我分享会非常感谢.
SMARTARM2200上SD卡通过SPI与处理器通信,另外3根IO用来控制供电,插入检测,写保护检测.SD驱动代码从ZLG的工程中获得用来移植到IAR上.移植好的工程请见http://download.csdn.net/source/1796291大部分代码来源于网络,我做了些整合和修改.
SD驱动共有9个文件:
1.sdconfig.h
定义了一些宏,包括配置参数及初始化SPI/SD引脚
2.sdhal.c,sdhal.h
SD卡底层的处理函数,如果电源初始化,SPI初始化,设置SPI时钟,SPI读写函数,SD卡检测
3.sdcmd.c,sdcmd.h
SD命令函数
4.sdcrc.c,sdcrc.h
CRC校验
5.sddriver.c,sddriver.h
SD较高层的驱动,如SD初始化,读写SD Block函数

接下来就sddriver.c中的一些代码进行简要分析.
1.SD_Initialize

2.SD_ReadBlock

3.SD_WriteBlock

4.SD_ReadMultiBlock
   SD_WriteMultiBlock
处理流程与读写单个Block类似,就是多调用了SD_ReadMultipleBlock和SD_WriteMultipleBlock发送读写多个Block的命令,详细代码请参考上传的工程
5.SD_EraseBlock

6.SD_GetCardInfo

读到的CSD对应数据的字节位置如下:

更底层的SD SPI命令实现请参考sdcmd.c,sdcmd.h,以下列举了一些SD命令:

接下来介绍uCFS的在SD上的移植.

原创粉丝点击