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

📄 sdcarddriver.h

📁 凌阳SPCE3200 系统开发板随机自带源程序。共安排了32个子目录
💻 H
字号:

#include ".\System\SystemHeader.h"

#define SDCARD 					0
#define MMCCARD 				1
#define SDDAMSRC 				4

#define MASK_CMDSTOP			0x0040		// Stop Command
#define MASK_CMDRun				0x0080		// Initiate the SD command, will be cleared to '0' after the transaction start.
#define MASK_CMDWithData		0x0100		// 0: Command without data, 1: Command with data
#define MASK_TransData			0x0200		// !MASK_TransferData = MASK_ReceiveData
#define MASK_TransMultiBlock	0x0400		// !MASK_TransMultiBlock = MASK_TransSingleBlock
#define MASK_ClockCycle74		0x0800		// 74 Clock cycles on the clock line
#define MASK_RESPTYPE  			0x7000		// Response type R1b
#define MASK_RESPTYPE0  		0x0000		// No response
#define MASK_RESPTYPE1  		0x1000 		// Response type R1
#define MASK_RESPTYPE2  		0x2000 		// Response type R2	
#define MASK_RESPTYPE3  		0x3000		// contains OCR register R3
#define MASK_RESPTYPE6  		0x6000		// Response type R6
#define MASK_RESPTYPE1b 		0x7000		// Response type R1b

	/* Basic commands (class 0) */
#define MASK_CMD0	(0x00000000|MASK_RESPTYPE0|MASK_CMDRun)		// GO_IDLE_STATE
#define MASK_CMD1	(0x00000001|MASK_RESPTYPE3|MASK_CMDRun)		// reserved, use for MMC				
#define MASK_CMD2	(0x00000002|MASK_RESPTYPE2|MASK_CMDRun)		// ALL_SEND_CID 								
#define MASK_CMD3	(0x00000003|MASK_RESPTYPE6|MASK_CMDRun)		// SEND_RELATIVE_ADDR				
#define MASK_CMD4	(0x00000004|MASK_RESPTYPE0|MASK_CMDRun)		// SEND_RELATIVE_ADDR ?				
#define MASK_CMD5												// reserved				
#define MASK_CMD6												// reserved 
#define MASK_CMD7	(0x00000007|MASK_RESPTYPE1b|MASK_CMDRun)	// SELECT/DESELECT_CARD ?			
#define MASK_CMD8												// reserved				
#define MASK_CMD9	(0x00000009|MASK_RESPTYPE2|MASK_CMDRun)		// SEND_CSD ?				
#define MASK_CMD10	(0x0000000a|MASK_RESPTYPE2|MASK_CMDRun)		// SEND_CID ?						
#define MASK_CMD11												// reserved
//#define MASK_CMD12	(0x0000000c|MASK_RESPTYPE1b|MASK_CMDRun)	// STOP_TRANSMISSION ?
#define MASK_CMD12	(0x0000000c|MASK_RESPTYPE1|MASK_CMDRun)	// STOP_TRANSMISSION ?
#define MASK_CMD13	(0x0000000d|MASK_RESPTYPE1|MASK_CMDRun)		// SEND_STATUS ?		
#define MASK_CMD14												// reserved
#define MASK_CMD15	(0x0000000f|MASK_RESPTYPE0|MASK_CMDRun)		// GO_INACTIVE_STATE ?
								
				
	/* Block oriented read commands (class 2) */				
#define MASK_CMD16	(0x00000010|MASK_RESPTYPE1|MASK_CMDRun)		// SET_BLOCKLEN										
#define MASK_CMD17	(0x00000011|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData)	
																// READ_SINGLE_BLOCK				
#define MASK_CMD18	(0x00000012|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|\
			 MASK_TransMultiBlock)							    // READ_MULTIPLE_BLOCK		
#define MASK_CMD19												// reserved				
#define MASK_CMD20												// reserved	
#define MASK_CMD21												// reserved	
#define MASK_CMD22												// reserved	
#define MASK_CMD23												// reserved	

	/* Block oriented write commands (class 4) */
#define MASK_CMD24	(0x00000018|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|MASK_TransData)
																// WRITE_BLOCK				
#define MASK_CMD25	(0x00000019|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|MASK_TransData|\
			 MASK_TransMultiBlock)								// WRITE_MULTIPLE_BLOCK					
#define MASK_CMD26												// reserved for Manfacturer
#define MASK_CMD27	(0x0000001b|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|\
			 MASK_TransData)									// PROGRAM_CSD



	/* Block oriented write protection commands (class 6) */				
#define MASK_CMD28	(0x0000001c|MASK_RESPTYPE1b|MASK_CMDRun)	// SET_WRITE_PROT					
#define MASK_CMD29	(0x0000001d|MASK_RESPTYPE1b|MASK_CMDRun)	// CLR_WRITE_PROT				
#define MASK_CMD30	(0x0000001e|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|\
			 |MASK_TransData)									// SEND_WRITE_PROT	
#define MASK_CMD31												// reserved



	/* Erase commands (class 5) */
#define MASK_CMD32	(0x00000020|MASK_RESPTYPE1|MASK_CMDRun)		// ERASE_WR_BLK_START					
#define MASK_CMD33	(0x00000021|MASK_RESPTYPE1|MASK_CMDRun)		// ERASE_WR_BLK_END
#define MASK_CMD34												// reserved
#define MASK_CMD35												// reserved
#define MASK_CMD36												// reserved
#define MASK_CMD37												// reserved				
#define MASK_CMD38	(0x00000026|MASK_RESPTYPE1|MASK_CMDRun)		// ERASE
#define MASK_CMD39												// reserved
#define MASK_CMD40												// reserved				
#define MASK_CMD41												// reserved



	/* Lock card (class 7) */
#define MASK_CMD42	(0x0000002a|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|\
			 MASK_TransData)									// LOCK_UNLOCK
#define MASK_CMD43												// reserved
#define MASK_CMD44												// reserved				
#define MASK_CMD45												// reserved
#define MASK_CMD46												// reserved
#define MASK_CMD47												// reserved				
#define MASK_CMD48												// reserved				
#define MASK_CMD49												// reserved
#define MASK_CMD50												// reserved				
#define MASK_CMD51												// reserved
#define MASK_CMD52												// reserved
#define MASK_CMD53												// reserved				
#define MASK_CMD54												// reserved

				

	/* Application specific commands (class 8) */
#define MASK_CMD55	(0x00000037|MASK_RESPTYPE1|MASK_CMDRun)		// APP_CMD
#define MASK_CMD56	(0x00000038|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|\
			 MASK_TransData										// GEN_CMD ?
#define MASK_CMD57												// reserved				
#define MASK_CMD58												// reserved				
#define MASK_CMD59												// reserved
#define MASK_CMD60												// reserved for manfacturer				
#define MASK_CMD61												// reserved for manfacturer
#define MASK_CMD62												// reserved for manfacturer
#define MASK_CMD63												// reserved for manfacturer		
				
				
	/* Application specific commands used/reserved only by SD memory card, 
	 * but not by MultiMediaCard.
 	 * All the following ACMDs shall be preceded with APP_CMD command (CMD55).
 	 */				
 
#define MASK_ACMD6	(0x00000006|MASK_RESPTYPE1|MASK_CMDRun)		// SET_BUS_WIDTH
 				
#define MASK_ACMD13	(0x0000000d|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData)
																// SD_STATUS				
#define MASK_ACMD17												// reserved
#define MASK_ACMD18												// reserved for SD security application
#define MASK_ACMD19 											// reserved
#define MASK_ACMD20												// reserved	
#define MASK_ACMD21												// reserved
#define MASK_ACMD22	(0x00000016|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData|\
 			 MASK_TransData)									// SEND_NUM_WR_BLOCKS
 				
#define MASK_ACMD23	(0x00000017|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData)
																// SET_WR_BLK_ERASE_COUNT
 		
#define MASK_ACMD24												// reserved 			
#define MASK_ACMD25												// reserved for SD security application
#define MASK_ACMD26												// reserved for SD security application
#define MASK_ACMD38 											// reserved for SD security application
#define MASK_ACMD39												// reserved 	
#define MASK_ACMD40												// reserved
#define MASK_ACMD41	(0x00000029|MASK_RESPTYPE3|MASK_CMDRun)		// SD_APP_OP_COND
 			
#define MASK_ACMD42  	(0x0000002a|MASK_RESPTYPE1|MASK_CMDRun)	// SET_CLR_CARD_DETECT
#define MASK_ACMD43												// reserved for SD security application					
#define MASK_ACMD49												// reserved for SD security application
#define MASK_ACMD51 	(0x00000033|MASK_RESPTYPE1|MASK_CMDRun|MASK_CMDWithData)
																//SEND_SCR

#define MASK_S_ControllerBusy	0x0001
#define MASK_S_CardBusy			0x0002
#define MASK_S_CmdComplete		0x0004
#define MASK_S_DataComplete		0x0008
#define MASK_S_RespIdxError		0x0010
#define MASK_S_RespCRCError		0x0020
#define MASK_S_RespRegFull		0x0040
#define MASK_S_DataBufFull		0x0080
#define MASK_S_DataBufEmpty		0x0100
#define MASK_S_TimeOut			0x0200
#define MASK_S_DataCRCError		0x0400
#define MASK_S_CardWProtect		0x0800
#define MASK_S_CardIsPresent	0x1000
#define MASK_S_ClrAllBits		0xffff

#define MASK_C_ClockSpeedFactor	0x00ff
#define INIT_ClockSpeedFactor	0x0080
#define INIT_ClockSpeedFactor0	0x0000
#define INIT_ClockSpeedFactor1	0x0001
//#define MIN_ClockSpeedFactor	0x0000
#define MIN_ClockSpeedFactor	0x0000
#define MMC_ClockSpeedFactor	0x0001
#define MASK_C_BUSWIDTH_1		0x0000	
#define MASK_C_BUSWIDTH_4		0x0100 
#define MASK_C_DMAMode			0x0200
#define MASK_C_IOMode			0x0400
#define MASK_C_ENSDBus			0x0800

#define MASK_C_BlockLen_256bytes	0x01000000
#define MASK_C_BlockLen_512bytes	0x02000000 				
#define MASK_C_BlockLen_8bytes		0x00080000


extern U32 rca;
//extern S32 g_sd_dmabusy;
extern S32 SDCardTotalSector;
extern S32 gSDCardInsert;
extern S32 gSDCardPresent;
extern S32 gSDCardWriteProtect;


extern S32 SDDrv_ReadSector(U32 addr, U32 blocknum, U8 *outaddr);
extern S32 SDDrv_WriteSector(U32 addr, U32 blocknum, U8 *outaddr);
extern S32 SDDrv_Initial(void);
extern S32 SDDrv_GetMemSize(void);
extern S32 SDDrv_GetSpeed(void);
extern void SDDrv_PowerOn(void);
extern void SDDrv_PowerOff(void);

extern S32		DrvSDCReadMulCommand(U32 block);
extern S32		DrvSDCReadMulData(U8 *outaddr);
extern S32		DrvSDCReadMulStop(void);
extern S32		DrvSDCWriteMulCommand(U32 block);
extern S32		DrvSDCWriteMulData(U8 *outaddr);
extern S32		DrvSDCWriteMulStop(void);
extern void		DrvSDCClockEn(void);
extern void		DrvSDCPowerRecycle(void);

⌨️ 快捷键说明

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