?? sd_driver.h
字號:
//======================================================
// 文件名稱: SD_Driver.c
// 功能描述: SD卡組件層頭文件
// 維護記錄: 2006-8-03 v1.0
//======================================================
#ifndef __SDDRIVER_H__
#define __SDDRIVER_H__
#include "SD_Hardware.h"
#include "SD_Command.h"
#include "SD_CRC.h"
#include "SD_USER.h"
typedef struct _SDINFO
{
unsigned long int BlockNum; // 卡中Block的數量
unsigned long int BlockLen; // Block大小
unsigned long int EraseNum; // 一次可擦除的Block個數
unsigned long int rTimOut; // 讀Block超時時間
unsigned long int wTimOut; // 寫塊超時時間
unsigned long int eTimOut; // 擦塊超時時間
}SDINFO;
extern unsigned long int SPI_CLOCK; // SPI總線的SCLK的頻率
extern unsigned int SD_BLOCKSIZE; // SD卡塊的長度
extern SDINFO SDInfo; // SD卡信息
//=============================================================
// 語法格式: unsigned char SD_Initialize(void)
// 實現功能: 初始化SD卡
// 參數: 無
// 返回值: 錯誤類型
//=============================================================
extern unsigned char SD_Initialize(void);
//=============================================================
// 語法格式: unsigned char SD_ReadBlock(unsigned long int BlockAddr, unsigned char *BlockBuf)
// 實現功能: 讀Block
// 參數: BlockAddr - Block地址
// BlockBuf - 存儲Block數據的緩沖區首址
// 返回值: 錯誤類型
//=============================================================
extern unsigned char SD_ReadBlock(unsigned long int BlockAddr, unsigned char *BlockBuf);
//=============================================================
// 語法格式: unsigned char SD_WriteBlock(unsigned long int BlockAddr, unsigned char *BlockBuf)
// 實現功能: 寫Block
// 參數: BlockAddr - Block地址
// BlockBuf - 存儲Block數據的緩沖區首址
// 返回值: 錯誤類型
//=============================================================
extern unsigned char SD_WriteBlock(unsigned long int BlockAddr, unsigned char *BlockBuf);
//=============================================================
// 語法格式: unsigned char SD_EraseBlock(unsigned long int BlockStartAddr, unsigned long int BlockNum)
// 實現功能: 擦除SD卡中的塊
// 參數: BlockStartAddr - Block起始地址
// BlockNum - Block數量
// 返回值: 錯誤類型
//=============================================================
extern unsigned char SD_EraseBlock(unsigned long int BlockStartAddr, unsigned long int BlockNum);
//=============================================================
// 語法格式: unsigned char SD_GetCardInfo()
// 實現功能: 獲得SD卡的信息
// 參數: 無
// 返回值: 錯誤類型
//=============================================================
extern unsigned char SD_GetCardInfo();
// 錯誤碼
#define SD_NO_ERR 0x00 // 函數執行成功
#define SD_ERR_NO_CARD 0x01 // SD卡沒有完全插入到卡座中
#define SD_ERR_USER_PARAM 0x02 // 用戶使用API函數時,入口參數有錯誤
#define SD_ERR_CARD_PARAM 0x03 // 卡中參數有錯誤(與本模塊不兼容)
#define SD_ERR_VOL_NOTSUSP 0x04 // 卡不支持3.3V供電
#define SD_ERR_OVER_CARDRANGE 0x05 // 操作超出卡容量范圍
// Command可能返回的錯誤碼
#define SD_ERR_CMD_RESPTYPE 0x10 // 命令類型錯誤
#define SD_ERR_CMD_TIMEOUT 0x11 // SD命令響應超時
#define SD_ERR_CMD_RESP 0x12 // SD命令響應錯誤
// Data錯誤碼
#define SD_ERR_DATA_CRC16 0x20 // 數據流CRC16校驗不通過
#define SD_ERR_DATA_START_TOK 0x21 // 讀單塊或多塊時,數據開始令牌不正確
#define SD_ERR_DATA_RESP 0x22 // 寫單塊或多塊時,SD卡數據響應令牌不正確
// TimeOut錯誤碼
#define SD_ERR_TIMEOUT_WAIT 0x30 // 寫或擦操作時,發生超時錯誤
#define SD_ERR_TIMEOUT_READ 0x31 // 讀操作超時錯誤
#define SD_ERR_TIMEOUT_WRITE 0x32 // 寫操作超時錯誤
#define SD_ERR_TIMEOUT_ERASE 0x33 // 擦除操作超時錯誤
#define SD_ERR_TIMEOUT_WAITIDLE 0x34 // 初始化SD卡時,等待SD卡進入空閑狀態超時錯誤
// Write Operate可能返回的錯誤碼
#define SD_ERR_WRITE_BLK 0x40 // 寫塊數據錯誤
#define SD_ERR_WRITE_BLKNUMS 0x41 // 寫多塊時,想要寫入的塊與正確寫入的塊數不一致
#define SD_ERR_WRITE_PROTECT 0x42 // 卡外殼的寫保護開關打在寫保護位置
#define SD_INIT_TIMEOUT 1000
#define SD_CMD_TIMEOUT 100
#define SD_READ_TIMEOUT 100 * SPI_CLOCK / 1000 / 8
#define SD_WRITE_TIMEOUT 250 * SPI_CLOCK / 1000 / 8
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -