?? sddriver.h
字號:
/****************************************Copyright (c)**************************************************
** Guangzhou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: sddriver.h
** Last modified Date: 2007-5-19
** Last Version: V2.0
** Descriptions: sddriver.c 的頭文件
**
**
**------------------------------------------------------------------------------------------------------
** Created by: Ming Yuan Zheng
** Created date: 2005-1-6
** Version: V1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by: Ming Yuan Zheng
** Modified date: 2005-3-10
** Version: V2.0
** Descriptions: 增加了對MMC卡的支持,增加了對UCOS-II的支持,使該模塊不僅能運行于前后臺系統,還可運行
** 于UCOS-II上
**------------------------------------------------------------------------------------------------------
** Modified by: Ming Yuan Zheng
** Modified date: 2007-5-19
** Version: V3.0
** Descriptions: 1. 增加了對SD/MMC卡 SD 總線模式的支持(不同模式下API函數名相同), 各API函數的入口增加了sd_struct結構體, 用于支持多卡讀寫
**
** 2. SPI模式下和SD模式下共用 SDMMC_GetCardInfo() 和 SDMMC_CalTimeout()函數
**
** 3. sd_struct結構體增加了成員多個成員變量, 訪問卡的時鐘及訪問卡的最大時鐘改為可動態獲取
**
** 4. SPI 模式下的命令函數使用SpiCmd_ 開頭, SD 模式下的命令使用 SdCmd_ 開頭
**
** 5. SPI 模式下與硬件相關的函數使用 SdSpiHal_ 開頭, SD 模式下與硬件相關的函數使用 SdHal_ 開頭
********************************************************************************************************/
#ifndef __SDDRIVER_H__
#define __SDDRIVER_H__
/*
*************************************************************
用戶API函數: 讀, 寫, 擦 SD卡 API函數及錯誤碼
*************************************************************
*/
/* 錯誤碼 error code */
#define SD_NO_ERR 0x00 // 函數執行成功
#define SD_ERR_NO_CARD 0x01 // 卡沒有完全插入到卡座中
#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 // 操作超出卡容量范圍
#define SD_ERR_UNKNOWN_CARD 0x06 // 無法識別卡型
#define SD_ERR_CURRENT_STATE 0x07 // 卡當前狀態不正確(只適用于SD模式)
#define SD_ERR_READY_FOR_DATA 0x08 // 卡數據緩沖區未就緒
/* SD命令可能返回的錯誤碼 */
#define SD_ERR_CMD_RESPTYPE 0x10 // 命令類型錯誤
#define SD_ERR_CMD_TIMEOUT 0x11 // 卡命令響應超時
#define SD_ERR_CMD_RESP 0x12 // 卡命令響應錯誤
#define SD_ERR_CMD_NOTSUSP 0x13 // 不支持該命令
#define SD_ERR_CMD_RESPCRC 0x14 // 命令CRC響應錯誤
/* 數據流錯誤碼 */
#define SD_ERR_DATA_CRC16 0x20 // 數據流CRC16校驗不通過
#define SD_ERR_DATA_START_TOK 0x21 // 讀單塊或多塊時,數據開始令牌不正確
#define SD_ERR_DATA_RESP 0x22 // 寫單塊或多塊時,卡數據響應令牌不正確
#define SD_ERR_DATA_STARTBIT 0x23 // 寫單塊或多塊時, 數據起始位不正確
/* 等待錯誤碼 */
#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 // 初始化卡時,等待卡退出空閑狀態超時錯誤
/* 寫操作可能返回的錯誤碼 */
#define SD_ERR_WRITE_BLK 0x40 // 寫塊數據錯誤
#define SD_ERR_WRITE_BLKNUMS 0x41 // 寫多塊時,想要寫入的塊與正確寫入的塊數不一致
#define SD_ERR_WRITE_PROTECT 0x42 // 卡外殼的寫保護開關打在寫保護位置
/* 使用UCOS-II時可能出現的錯誤 */
#define SD_ERR_CREATE_SEMSD 0xA0 // 創建SD/MMC卡訪問信號量失敗
#define SD_ERR_WAIT_WRSEM 0xA1 // 等待讀寫信號量失敗
/* SD_STRUCT結構體可能出現的錯誤 */
#define SD_ERR_SD_STRUCT 0xB0 // SD_STRUCT結構體成員值存在錯誤
/* 其它可能的錯誤 */
#define SD_ERR_HARDWARE 0xE0 // 硬件出錯
/**************************************************
其它宏定義
***************************************************/
#define CARDTYPE_UNKNOWN 0x00
#define CARDTYPE_SD 0x01 // 卡型為SD 卡
#define CARDTYPE_MMC 0x02 // 卡型為MMC 卡
#define SD_READREG_TIMEOUT 8 // 讀寄存器的超時時間
extern INT8U SD_Initialize(sd_struct *sds);
extern INT8U SD_WriteBlock(sd_struct *sds, INT32U blockaddr, INT8U *sendbuf);
extern INT8U SD_ReadBlock(sd_struct *sds, INT32U blockaddr, INT8U *recbuf);
extern INT8U SD_ReadMultiBlock(sd_struct *sds, INT32U blockaddr, INT32U blocknum, INT8U *recbuf);
extern INT8U SD_WriteMultiBlock(sd_struct *sds, INT32U blockaddr, INT32U blocknum, INT8U *sendbuf);
extern INT8U SD_EraseBlock(sd_struct *sds, INT32U startaddr, INT32U blocknum);
/*
*************************************************************
下面為軟件包用到的與SD卡相關的宏定義
*************************************************************
*/
/* Mask off the bits in the OCR corresponding to voltage range 3.2V to
* 3.4V, OCR bits 20 and 21 */
#define MSK_OCR_33 0x00100000
/* 定義在初始化階段,等待SD卡退出空閑狀態的重試次數 */
/* Number of tries to wait for the card to go idle during initialization */
#define SD_IDLE_WAIT_MAX 8000
/* SD卡命令超時時間(單位 8clock)*/
/* timeout of command */
#define SD_CMD_TIMEOUT 100
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -