TA的每日心情 | 奋斗 2018-10-29 22:48 |
---|
签到天数: 731 天 连续签到: 1 天 [LV.9]以坛为家II
|
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__ */目前,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则表示还剩下这些块没有读写成功。
时间仓促,所以相关的文档还在完善过程总,说明写得比较简单,但是通过阅读样例代码也很容易理解API的功能。
附加保存在论坛的帖子中提供下载:
https://www.eeboard.com/bbs/thread-40127-1-1.html
欢迎广大电子工程师和单片机爱好者在使用后提供宝贵意见和建议。
suyong_yq@126.com
2014年11月 |
|