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

📄 sd.h

📁 SD和FAT文件系统.rar
💻 H
字号:
#ifndef __SD_H__
#define __SD_H__
//#include <avr/io.h>
#include "datatype.h"
#define	SD_TYPE_SD			1
#define	SD_TYPE_MMC 		2
#define SD_POWER_PIN        3
#define SD_POWER_OFF		PORTB |= (1 << SD_POWER_PIN)
#define SD_CD_PIN           (PIND & (1 << PD2))
#define SPI_CS_ASSERT		rPDATE = 0x0  
#define SPI_CS_DEASSERT		rPDATE=0x20
#define SPI_HIGH_SPEED		1
#define SPI_LOW_SPEED		0
#define SD_CMD0 			0
#define BEEP_ON 			PORTD &= ~(1 << PD7)
#define BEEP_OFF 			PORTD |= (1 << PD7)
//spi模拟SD卡操作命令宏定义
#define CMD_GO_IDLE_STATE			0x00   	/* CMD0: response R1 */
#define CMD_SEND_OP_COND 			0x01    /* CMD1: response R1 */
#define CMD_SEND_IF_COND 			0x08   	/* CMD8: response R1 */
#define CMD_SEND_CSD 					0x09	/* CMD9: response R1 */
#define CMD_SEND_CID 					0x0A	/* CMD10: response R1 */
#define CMD_STOP_TRANSMISSION	0x0C	/* CMD12: response R1 */
#define CMD_SEND_STATUS 			0x0D	/* CMD13: response R2 */
#define CMD_SET_BLOCKLEN 			0x10	/* CMD16: arg0[31:0]: block length, response R1 */
#define CMD_READ_SINGLE_BLOCK 		0x11	/* CMD17: arg0[31:0]: data address, response R1 */
#define CMD_READ_MULTIPLE_BLOCK 	0x12	/* CMD18: arg0[31:0]: data address, response R1 */
#define CMD_WRITE_SINGLE_BLOCK 		0x18	/* CMD24: arg0[31:0]: data address, response R1 */
#define CMD_WRITE_MULTIPLE_BLOCK 	0x19	/* CMD25: arg0[31:0]: data address, response R1 */
#define CMD_PROGRAM_CSD 					0x1B	/* CMD27: response R1 */
#define CMD_SET_WRITE_PROT 				0x1C	/* CMD28: arg0[31:0]: data address, response R1b */
#define CMD_CLR_WRITE_PROT 				0x1D	/* CMD29: arg0[31:0]: data address, response R1b */
#define CMD_SEND_WRITE_PROT 			0x1E	/* CMD30: arg0[31:0]: write protect data address, response R1 */
#define CMD_TAG_SECTOR_START 			0x20	/* CMD32: arg0[31:0]: data address, response R1 */
#define CMD_TAG_SECTOR_END 				0x21	/* CMD33: arg0[31:0]: data address, response R1 */
#define CMD_UNTAG_SECTOR 					0x22	/* CMD34: arg0[31:0]: data address, response R1 */
#define CMD_TAG_ERASE_GROUP_START 0x23	/* CMD35: arg0[31:0]: data address, response R1 */
#define CMD_TAG_ERASE_GROUP_END 	0x24	/* CMD36: arg0[31:0]: data address, response R1 */
#define CMD_UNTAG_ERASE_GROUP 		0x25	/* CMD37: arg0[31:0]: data address, response R1 */
#define CMD_ERASE 								0x26	/* CMD38: arg0[31:0]: stuff bits, response R1b */
#define CMD_SD_SEND_OP_COND 			0x29	/* ACMD41: arg0[31:0]: OCR contents, response R1 */
#define CMD_LOCK_UNLOCK 					0x2A	/* CMD42: arg0[31:0]: stuff bits, response R1b */
#define CMD_APP 									0x37	/* CMD55: arg0[31:0]: stuff bits, response R1 */
#define CMD_CRC_ON_OFF 						0x3B	/* CMD59: arg0[31:1]: stuff bits, arg0[0:0]: crc option, response R1 */
typedef struct _SD_INFO
{	
	INT8U	mid; 			//制造商ID
	INT8U 	oid[2];		//OEM ID
	INT8U 	pnm[5];		//产品名称
	INT8U 	prv;			//产品版本
	INT32U  psn;			//32位串号
	INT8U 	mdt;			//制造日期 高4位年,低4位月
	INT8U  	ct;   		//卡类型
	INT32U 	bn;				//卡中块的数量
	INT32U 	bl;				//卡的块长度
	INT32U 	cap; 
}SD_INFO , *PSD_INFO;	

extern SD_INFO g_SDInfo;
extern void SPI_MasterInit(INT8U u8Speed);
extern INT8U SPI_MasterTransmit(INT8U u8Data);
extern INT8U SD_SendCMD(INT8U u8Cmd, INT32U u32Arg);
extern INT8U SD_GetOCR(INT8U *pu8Buff);
extern INT8U SD_GetCID(INT8U *pu8Buff);
extern INT8U SD_GetCSD(INT8U *pu8Buff);
extern INT8U SD_GetCardInfo(PSD_INFO psdi);
extern INT8U SD_ReadBlockSingle(INT32U u32Sector, INT8U *pu8Buff);
extern INT8U SD_WriteBlockSingle(INT32U u32Sector, INT8U *pu8Buff);
extern INT8U SD_Init(PSD_INFO pg_SDInfo);

#endif

⌨️ 快捷键说明

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