⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sd_command.h

📁 凌阳单片机的录音,方音程序,用c语言边的,可用性强.
💻 H
字号:
//======================================================
// 文件名称:	SD_Command.h
// 功能描述:	SD卡命令相关头文件
// 维护记录:	2006-8-03	v1.0
//======================================================
#ifndef	__SD_COMMAND_H__
#define	__SD_COMMAND_H__

//=============================================================
// 语法格式:	unsigned char SD_SendCmd_NoCSOP(unsigned char cmdIndex, unsigned char *Param, unsigned char resLen, unsigned char *resp)
// 实现功能:	发送命令(不对CS操作)
// 参数:		cmdIndex	-	命令序号
//				Param		-	参数首地址
//				resLen		-	响应长度
//				resp		-	响应存储首地址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_SendCmd_NoCSOP(unsigned char cmdIndex, unsigned char *Param, unsigned char resLen, unsigned char *resp);

//=============================================================
// 语法格式:	unsigned char SD_SendCmd(unsigned char cmdIndex, unsigned char *param, unsigned char resptype, unsigned char *resp)
// 实现功能:	发送命令
// 参数:		cmdIndex	-	命令序号
//				Param		-	参数首地址
//				resLen		-	响应长度
//				resp		-	响应存储首地址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_SendCmd(unsigned char cmdIndex, unsigned char *Param, unsigned char resLen, unsigned char *resp);

//=============================================================
// 语法格式:	void SD_DWord2Bytes(unsigned char *Param, unsigned long int ulValue)
// 实现功能:	双字转换为字节
// 参数:		Param		-	参数首地址
//				ulValue		-	双字参数
// 返回值:		无
//=============================================================
extern void SD_DWord2Bytes(unsigned char *Param, unsigned long int ulValue);

//=============================================================
// 语法格式:	unsigned char SD_BlockCommand(unsigned char cmdIndex, unsigned char resLen, unsigned long int ulParam)
// 实现功能:	发送Block相关命令
// 参数:		cmdIndex	-	命令序号
//				resLen		-	响应长度
//				ulParam		-	参数(Block号)
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_BlockCommand(unsigned char cmdIndex, unsigned char resLen, unsigned long int ulParam);

//=============================================================
// 语法格式:	unsigned char SD_ResetSD(void)
// 实现功能:	发送SD卡软件复位命令
// 参数:		无
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ResetSD(void);

//=============================================================
// 语法格式:	unsigned char SD_ReadCSD(unsigned char CSDLen, unsigned char *CSDBuf)
// 实现功能:	发送读CSD寄存器命令
// 参数:		CSDLen	-	CSD寄存器长度
//				CSDBuf	-	CSD寄存器内容存储缓冲区首址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ReadCSD(unsigned char CSDLen, unsigned char *CSDBuf);

//=============================================================
// 语法格式:	unsigned char SD_ReadCard_Status(unsigned char *ucBuffer)
// 实现功能:	发送读Crad Status寄存器命令
// 参数:		无
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ReadCard_Status(unsigned char *ucBuffer);

//=============================================================
// 语法格式:	unsigned char SD_ReadCard_Status(unsigned char *ucBuffer)
// 实现功能:	发送设置Block大小命令
// 参数:		无
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_SetBlockLen(unsigned long int ulLen);

//=============================================================
// 语法格式:	unsigned char SD_ReadSingleBlock(unsigned long int ulBlockAddr)
// 实现功能:	发送读Block函数命令
// 参数:		Block地址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ReadSingleBlock(unsigned long int ulBlockAddr);

//=============================================================
// 语法格式:	unsigned char SD_WriteSingleBlock(unsigned long int ulBlockAddr)
// 实现功能:	发送写Block函数命令
// 参数:		ulBlockAddr	-	Block地址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_WriteSingleBlock(unsigned long int ulBlockAddr);

//=============================================================
// 语法格式:	unsigned char SD_EraseStartBlock(unsigned long int ulStartBlockAddr)
// 实现功能:	发送设置Block擦除起始地址命令
// 参数:		ulStartBlockAddr	-	Block地址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_EraseStartBlock(unsigned long int ulStartBlockAddr);

//=============================================================
// 语法格式:	unsigned char SD_EraseEndBlock(unsigned long int ulStartBlockAddr)
// 实现功能:	发送设置Block擦除结束地址命令
// 参数:		ulEndBlockAddr	-	Block地址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_EraseEndBlock(unsigned long int ulEndBlockAddr);

//=============================================================
// 语法格式:	unsigned char SD_EraseSelectedBlock(void)
// 实现功能:	发送擦除选中的Block命令
// 参数:		无
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_EraseSelectedBlock(void);

//=============================================================
// 语法格式:	unsigned char SD_ReadOCR(unsigned char *OCRBuf)
// 实现功能:	发送读操作条件寄存器OCR命令
// 参数:		无
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ReadOCR(unsigned char *OCRBuf);

//=============================================================
// 语法格式:	unsigned char SD_EnableCRC(unsigned char Enable)
// 实现功能:	发送使能CRC校验命令
// 参数:		Enable	-	使能CRC
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_EnableCRC(unsigned char Enable);

//=============================================================
// 语法格式:	unsigned char SD_ReadRegister(unsigned long int ulLen, unsigned char *ucRegBuf)
// 实现功能:	读取寄存器数据
// 参数:		ulLen	-	寄存器长度
//				ucRegBuf-	寄存器存储缓冲区首址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ReadRegister(unsigned long int ulLen, unsigned char *ucRegBuf);

//=============================================================
// 语法格式:	unsigned char SD_ReadBlockData(unsigned long int BlockLen, unsigned char *BlockBuf)
// 实现功能:	读数据块
// 参数:		BlockLen	-	数据块长度
//				BlockBuf	-	数据块存储缓冲区首址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_ReadBlockData(unsigned long int BlockLen, unsigned char *BlockBuf);

//=============================================================
// 语法格式:	unsigned char SD_WriteBlockData(unsigned char Multi, unsigned long int BlockLen, unsigned char *BlockBuf)
// 实现功能:	读数据块
// 参数:		Multi		-	是否为多块操作
//				BlockLen	-	长度
//				BlockBuf	-	Block存储缓冲区首址
// 返回值:		错误类型
//=============================================================
extern unsigned char SD_WriteBlockData(unsigned char Multi, unsigned long int BlockLen, unsigned char *BlockBuf);

//=============================================================
// 语法格式:	void SD_StopMultiToken(void)
// 实现功能:	发送多块写停止令牌
// 参数:		无
// 返回值:		无
//=============================================================
extern void SD_StopMultiToken(void);

//=============================================================
// 语法格式:	unsigned char SD_WaitBusy(unsigned char Type)
// 实现功能:	查询SD卡是否处于忙状态
// 参数:		Type	-	查询类型
// 返回值:		无
//=============================================================
extern unsigned char SD_WaitBusy(unsigned char Type);

// 命令响应长度
#define R1 1
#define R1B 1
#define R2 2
#define R3 5

//	错误码(R1和R2高字节)
#define MSK_IDLE          		  0x01
#define MSK_ERASE_RST     		  0x02
#define MSK_ILL_CMD       		  0x04
#define MSK_CRC_ERR       		  0x08
#define MSK_ERASE_SEQ_ERR 		  0x10
#define MSK_ADDR_ERR      		  0x20
#define MSK_PARAM_ERR     		  0x40

//	错误码(R2低字节)
#define MSK_TOK_ERROR             0x01
#define MSK_TOK_CC_ERROR          0x02
#define MSK_TOK_ECC_FAILED        0x04
#define MSK_TOK_CC_OUTOFRANGE     0x08
#define MSK_TOK_CC_LOCKED         0x10

//	数据令牌
#define SD_TOK_READ_STARTBLOCK    0xFE
#define SD_TOK_WRITE_STARTBLOCK   0xFE
#define SD_TOK_READ_STARTBLOCK_M  0xFE
#define SD_TOK_WRITE_STARTBLOCK_M 0xFC
#define SD_TOK_STOP_MULTI         0xFD

//	数据响应令牌
#define SD_RESP_DATA_MSK		  0x0F		//	数据响应掩码
#define SD_RESP_DATA_ACCETPTED	  0x05		//	数据被接受
#define SD_RESP_DATA_REJECT_CRC	  0x0B      //	由于CRC错误而被拒绝
#define SD_RESP_DATA_REJECT_WRITE 0x0D		//	由于写错误而被拒绝

//	等待类型
#define SD_WAIT_READ			  0x00		//	读等待
#define SD_WAIT_WRITE			  0x01		//	写等待
#define SD_WAIT_ERASE		 	  0x02		//	擦除等待

#define SD_READREG_TIMEOUT		  8			//	读寄存器超时次数

#define CMD0 0								//	复位
#define CMD0_R R1

#define CMD1 1								//	读OCR寄存器
#define CMD1_R R1

#define CMD9 9								//	读CSD寄存器
#define CMD9_R R1

#define CMD13 13							//	读 Card_Status 寄存器
#define CMD13_R R2

#define CMD16 16							//	设置块的长度
#define CMD16_R R1

#define CMD17 17							//	读单块
#define CMD17_R R1

#define CMD24 24							//	写单块
#define CMD24_R R1

#define CMD32 32							//	设置擦除块的起始地址
#define CMD32_R R1

#define CMD33 33							//	设置擦除块的终止地址
#define CMD33_R R1

#define CMD38 38							//	擦除所选择的块
#define CMD38_R R1B

#define CMD58 58							//	读OCR寄存器
#define CMD58_R R3

#define CMD59 59							//	使能或禁止 CRC
#define CMD59_R R1

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -