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

📄 sd_driver.h

📁 凌阳单片机的录音,方音程序,用c语言边的,可用性强.
💻 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 + -