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__ */
|