打印
[资料分享与下载]

基于SPI读写SD卡的标准sdcard_spi组件

[复制链接]
621|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
    /* sdcard_spi.h */

    #ifndef __SDCARD_SPI_H__
    #define __SDCARD_SPI_H__

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

    #define SDC_BLOCK_SIZE_BYTE     (512U)

    typedef struct
    {
        void    (*SPI_InitFunc)(void);
        uint8_t (*SPI_SwapByteFunc)(uint8_t txData);
        void    (*SPI_SetBaudrateFunc)(uint32_t baudrate);
        void    (*SPI_AssertCsFunc)(bool enable);
        uint32_t Baudrate;
    } SDC_SPICallback_T;

    typedef enum
    {
        eSDCCardUnknown    = 0U,
        eSDCCardTypeOfSDv2 = 1U,
        eSDCCardTypeOfSDHC = 2U
    } SDC_CardType_T;

    typedef struct
    {
        SDC_CardType_T CardType;
        uint32_t CardBlkCnt;
    } SDC_Info_T;

    bool SDC_Install(const SDC_SPICallback_T *ioPtr);
    bool SDC_InitCard(SDC_Info_T *infoPtr);
    bool SDC_WriteBlock(uint32_t blkIdx, uint8_t *txPtr);
    bool SDC_ReadBlock(uint32_t blkIdx, uint8_t *rxPtr);
    uint32_t SDC_WriteBlocks(uint32_t blkIdx, uint32_t blkCnt, uint8_t *txPtr);
    uint32_t SDC_ReadBlocks(uint32_t blkIdx, uint32_t blkCnt, uint8_t *rxPtr);

    #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

粉丝