?? spi_sd_driver.h
字號:
#ifndef _SPI_SD_DRIVER_H_
#define _SPI_SD_DRIVER_H_
/* Private define ------------------------------------------------------------*/
/* SD卡類型定義 */
#define SD_TYPE_MMC 0
#define SD_TYPE_V1 1
#define SD_TYPE_V2 2
#define SD_TYPE_V2HC 4
/* SPI總線速度設(shè)置*/
#define SPI_SPEED_LOW 0
#define SPI_SPEED_HIGH 1
/* SD傳輸數(shù)據(jù)結(jié)束后是否釋放總線宏定義 */
#define NO_RELEASE 0
#define RELEASE 1
/* SD卡指令表 */
#define CMD0 0 //卡復(fù)位
#define CMD9 9 //命令9 ,讀CSD數(shù)據(jù)
#define CMD10 10 //命令10,讀CID數(shù)據(jù)
#define CMD12 12 //命令12,停止數(shù)據(jù)傳輸
#define CMD16 16 //命令16,設(shè)置SectorSize 應(yīng)返回0x00
#define CMD17 17 //命令17,讀sector
#define CMD18 18 //命令18,讀Multi sector
#define ACMD23 23 //命令23,設(shè)置多sector寫入前預(yù)先擦除N個block
#define CMD24 24 //命令24,寫sector
#define CMD25 25 //命令25,寫Multi sector
#define ACMD41 41 //命令41,應(yīng)返回0x00
#define CMD55 55 //命令55,應(yīng)返回0x01
#define CMD58 58 //命令58,讀OCR信息
#define CMD59 59 //命令59,使能/禁止CRC,應(yīng)返回0x00
/* Private macro -------------------------------------------------------------*/
//SD卡CS片選使能端操作:
#define SD_CS_ENABLE() GPIO_ResetBits(GPIOD,GPIO_Pin_9) //選中SD卡
#define SD_CS_DISABLE() GPIO_SetBits(GPIOD,GPIO_Pin_9) //不選中SD卡
#define SD_PWR_ON() GPIO_ResetBits(GPIOD,GPIO_Pin_10) //SD卡上電
#define SD_PWR_OFF() GPIO_SetBits(GPIOD,GPIO_Pin_10) //SD卡斷電
#define SD_DET() !GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2) //檢測有卡
//1-有 0-無
/* Private function prototypes -----------------------------------------------*/
void SPI_Configuration(void);
void SPI_SetSpeed(u8 SpeedSet);
u8 SPI_ReadWriteByte(u8 TxData); //SPI總線讀寫一個字節(jié)
u8 SD_WaitReady(void); //等待SD卡就緒
u8 SD_SendCommand(u8 cmd, u32 arg, u8 crc); //SD卡發(fā)送一個命令
u8 SD_SendCommand_NoDeassert(u8 cmd, u32 arg, u8 crc);
u8 SD_Init(void); //SD卡初始化
//
u8 SD_ReceiveData(u8 *data, u16 len, u8 release);//SD卡讀數(shù)據(jù)
u8 SD_GetCID(u8 *cid_data); //讀SD卡CID
u8 SD_GetCSD(u8 *csd_data); //讀SD卡CSD
u32 SD_GetCapacity(void); //取SD卡容量
u8 SD_ReadSingleBlock(u32 sector, u8 *buffer); //讀一個sector
u8 SD_WriteSingleBlock(u32 sector, const u8 *buffer); //寫一個sector
u8 SD_ReadMultiBlock(u32 sector, u8 *buffer, u8 count); //讀多個sector
u8 SD_WriteMultiBlock(u32 sector, const u8 *data, u8 count); //寫多個sector
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -