[资料分享与下载] 基于SPI读写SD卡的标准sdcard_spi组件

[复制链接]
795|3
 楼主| 西门扫雪 发表于 2015-8-11 18:07 | 显示全部楼层 |阅读模式
sdcard_spi是一个基于SPI通信接口操作SD卡的单片机软件。用户只需要在自己使用的平台上实现基本的SPI驱动,并注册到sdcard_spi组件中,即可通过sdcard_spi提供的API对SD卡进行读写操作。对于基于SPI总线操作SD卡的协议已经在sdcard_spi组件内部实现,用户不需要再考虑。基于sdcard_spi组件,可以非常容易地同fatfs、znFAT等嵌入式文件系统对接,在应用程序中使用文件系统方便地管理海量的SD卡存储空间。
sdcard_spi组件使用纯C编写,遵循MISRA 2004标准,具有非常好的可移植性。该组件已在Freescale KL25、Freescale K64、Freescale K60,ST STM32F103RBT6等平台上测试通过,工作稳定。
这里预览一下sdcard_spi的头文件:
sdcard_spi.h
  1.     /* sdcard_spi.h */

  2.     #ifndef __SDCARD_SPI_H__
  3.     #define __SDCARD_SPI_H__

  4.     #include <stdint.h>
  5.     #include <stdbool.h>

  6.     #define SDC_BLOCK_SIZE_BYTE     (512U)

  7.     typedef struct
  8.     {
  9.         void    (*SPI_InitFunc)(void);
  10.         uint8_t (*SPI_SwapByteFunc)(uint8_t txData);
  11.         void    (*SPI_SetBaudrateFunc)(uint32_t baudrate);
  12.         void    (*SPI_AssertCsFunc)(bool enable);
  13.         uint32_t Baudrate;
  14.     } SDC_SPICallback_T;

  15.     typedef enum
  16.     {
  17.         eSDCCardUnknown    = 0U,
  18.         eSDCCardTypeOfSDv2 = 1U,
  19.         eSDCCardTypeOfSDHC = 2U
  20.     } SDC_CardType_T;

  21.     typedef struct
  22.     {
  23.         SDC_CardType_T CardType;
  24.         uint32_t CardBlkCnt;
  25.     } SDC_Info_T;

  26.     bool SDC_Install(const SDC_SPICallback_T *ioPtr);
  27.     bool SDC_InitCard(SDC_Info_T *infoPtr);
  28.     bool SDC_WriteBlock(uint32_t blkIdx, uint8_t *txPtr);
  29.     bool SDC_ReadBlock(uint32_t blkIdx, uint8_t *rxPtr);
  30.     uint32_t SDC_WriteBlocks(uint32_t blkIdx, uint32_t blkCnt, uint8_t *txPtr);
  31.     uint32_t SDC_ReadBlocks(uint32_t blkIdx, uint32_t blkCnt, uint8_t *rxPtr);

  32.     #endif /* __SDCARD_SPI_H__ */


 楼主| 西门扫雪 发表于 2015-8-11 18:07 | 显示全部楼层
目前,sdcard_spi还处于完善阶段。除了sdcard_spi实现部分的内容暂时以库的方式开放,其它包括demo程序的源代码全部开放,以提供给广大电子工程师和单片机爱好者进行测试。

使用简要说明及目录介绍:

      

    lib目录下存放了sdcard_spi的库文件,目前提供使用keil创建的库文件,分别支持ARM Cortex-M0+\M3\M4内核的设备。在使用时,直接把"*.lib"文件当成"*.c"源文件添加到工程中编译链接即可。注意,在应用中一定要包含头文件"sdcard_spi.h"才能调用sdcard_spi的API。
    app目录下存放了demo的源文件,在自己的平台上移植sdcard_spi成功之后,直接使用这里的源文件作为应用程序即可编译运行,作为测试功能。这个demo覆盖了sdcard_spi的所有API,也可以作为样例程序作为使用参考。
        测试工程组织示意如下:

        测试程序运行开始界面如下:

               

    port目录下存放了移植相关的代码,用户可以借鉴这里的写法进行移植。

特别提醒:

    单块操作API的返回是布尔类型,表示操作成功与否。
    多块操作API的返回值是没有成功读写的块数,返回0说明操作成功,非0则表示还剩下这些块没有读写成功。
侣行天下 发表于 2015-8-12 09:24 | 显示全部楼层
也就是说,现在这个套件还没有完全公布出来
FSL_TICS_Jeremy 发表于 2015-8-12 09:51 | 显示全部楼层
期待中!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

286

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部