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

📄 sd_datatype.h

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 H
📖 第 1 页 / 共 2 页
字号:

#define	bsMCI_DATA_ENABLE	   ( (unsigned long) 0)
#define	bwMCI_DATA_ENABLE	   ( (unsigned long) 1)
#define	bsMCI_DATA_DIRECTION   ( (unsigned long) 1)
#define	bwMCI_DATA_DIRECTION   ( (unsigned long) 1)
#define	bsMCI_DATA_MODE		   ( (unsigned long) 2)
#define	bwMCI_DATA_MODE		   ( (unsigned long) 1)
#define	bsMCI_DATA_DMA_ENABLE  ( (unsigned long) 3)
#define	bwMCI_DATA_DMA_ENABLE  ( (unsigned long) 1)
#define	bsMCI_DATA_BLOCKSIZE   ( (unsigned long) 4)
#define	bwMCI_DATA_BLOCKSIZE   ( (unsigned long) 4)

#define	MCI_DATA_WRITE		   ( (unsigned long) 0)

#define	MCI_FIFO_UWORDS		   ( (unsigned long) 16)
#define	MCI_FIFO_BYTES		   ( MCI_FIFO_UWORDS * 4 )


/*
 * Description:
 * Bit offsets and masks in	CID	register
 */
#define	bsMCI_CID_MID		   120		   /*Manufacturer ID*/
#define	bwMCI_CID_MID			 8		   /*Manufacturer ID*/
#define	bsMCI_CID_OID		   104		   /*Application ID*/
#define	bwMCI_CID_OID			16		   /*Application ID*/
#define	bsMCI_SD_CID_PNM_H		96		   /*Product Name upper	one	ASCII chars*/
#define	bwMCI_SD_CID_PNM_H		 8		   /*Product Name*/
#define	bsMCI_SD_CID_PNM_L		64		   /*Product Name lower	four ASCII chars*/
#define	bwMCI_SD_CID_PNM_L		32		   /*Product Name*/
#define	bsMCI_SD_CID_PRV		56		   /*Product Revision*/
#define	bwMCI_SD_CID_PRV		 8		   /*Product Revision*/
#define	bsMCI_SD_CID_PSN		24		   /*Product Serial	Number*/
#define	bwMCI_SD_CID_PSN		32		   /*Product Serial	Number*/
#define	bsMCI_SD_CID_MDT		 8		   /*Manufacturing Date*/
#define	bwMCI_SD_CID_MDT		12		   /*Manufacturing Date*/
#define	bsMCI_CID_PNM_H			88		   /*Product Name upper	two	ASCII chars*/
#define	bwMCI_CID_PNM_H			16		   /*Product Name*/
#define	bsMCI_CID_PNM_L			56		   /*Product Name lower	four ASCII chars*/
#define	bwMCI_CID_PNM_L			32		   /*Product Name*/
#define	bsMCI_CID_PRV			48		   /*Product Revision*/
#define	bwMCI_CID_PRV			 8		   /*Product Revision*/
#define	bsMCI_CID_PSN			16		   /*Product Serial	Number*/
#define	bwMCI_CID_PSN			32		   /*Product Serial	Number*/
#define	bsMCI_CID_MDT			 8		   /*Manufacturing Date*/
#define	bwMCI_CID_MDT			 8		   /*Manufacturing Date*/

/*
 * Description:
 * Options for command sending
 */
#define	MCI_CMDOPT_PENDING	   1	  /*waits for a	CmdPend	signal before sending*/
#define	MCI_CMDOPT_IMMEDIATE   2	 /*enables the command state engine*/
#define	MCI_CMDOPT_IGNORE_CRC  4	 /*ignores CRC errors as response will not be used*/
#define	MCI_CMDOPT_IGNORE_TIMEOUT  8 /*ignores timeout errors*/

/*
 * Description:
 * Block size for all App Commands
 */
#define	MCI_APPCMD_BLOCK_SIZE 512

/*
 * Description:
 * Generic constant	for	accessing all bits in a	32 bit word
 */
#define	apBITS_ALL 0xFFFFFFFF

/*
 * Description:
 * Build a mask	for	the	specified bits
 *
 * Implementation:
 * __bws - a width/shift pair.
 * 
 * Returns	a mask with	the	bits to	be addressed set and all others	cleared
 * 
 */
#define	apBIT_MASK(__bws) ((unsigned long)(((bw	## __bws)==32)?0xFFFFFFFF:((1U << (bw ## __bws)) - 1)) << (bs ## __bws))

/*
 * Description:
 * Clear the specified bits
 *
 * Implementation:
 * __datum - the word of data to be	modified
 * __bws - a width/shift pair.
 * 
 */
#define	apBIT_CLEAR(__datum, __bws)	((__datum) = ((__datum)	& ~((unsigned long)	apBIT_MASK(__bws))))

/*
 * Description:
 * Access the specified	bits from a	word of	data as	an integer value
 *
 * Implementation:
 * __datum - the word of data to be	accessed
 * __bws - a width/shift pair.
 * 
 * Returns	The	relevant bits masked from the data word	shifted	to bit zero
 * 
 */
#define	apBIT_GET(__datum, __bws) ((unsigned long)(((__datum) &	((unsigned long) apBIT_MASK(__bws))) >>	(bs	## __bws)))

/*
 * Description:
 * Place the specified value into the specified	bits of	a word of data
 *
 * Implementation:
 * __datum - the word of data to be	accessed
 * __bws - a width/shift pair.
 * __val - the data	value to be	shifted	into the specified bits.
 * 
 */
#define	apBIT_SET(__datum, __bws, __val) ((__datum)	= ((unsigned long) (__datum) & (unsigned long)~(apBIT_MASK(__bws)))	| \
										((unsigned long) ((unsigned	long)(__val) <<	(unsigned long)(bs ## __bws)) &	(apBIT_MASK(__bws))))


/*
 * Description:
 * Bit offsets and masks in	CID	register
 */
#define	bsMCI_CID_MID		   120		   /*Manufacturer ID*/
#define	bwMCI_CID_MID			 8		   /*Manufacturer ID*/
#define	bsMCI_CID_OID		   104		   /*Application ID*/
#define	bwMCI_CID_OID			16		   /*Application ID*/
#define	bsMCI_SD_CID_PNM_H		96		   /*Product Name upper	one	ASCII chars*/
#define	bwMCI_SD_CID_PNM_H		 8		   /*Product Name*/
#define	bsMCI_SD_CID_PNM_L		64		   /*Product Name lower	four ASCII chars*/
#define	bwMCI_SD_CID_PNM_L		32		   /*Product Name*/
#define	bsMCI_SD_CID_PRV		56		   /*Product Revision*/
#define	bwMCI_SD_CID_PRV		 8		   /*Product Revision*/
#define	bsMCI_SD_CID_PSN		24		   /*Product Serial	Number*/
#define	bwMCI_SD_CID_PSN		32		   /*Product Serial	Number*/
#define	bsMCI_SD_CID_MDT		 8		   /*Manufacturing Date*/
#define	bwMCI_SD_CID_MDT		12		   /*Manufacturing Date*/
#define	bsMCI_CID_PNM_H			88		   /*Product Name upper	two	ASCII chars*/
#define	bwMCI_CID_PNM_H			16		   /*Product Name*/
#define	bsMCI_CID_PNM_L			56		   /*Product Name lower	four ASCII chars*/
#define	bwMCI_CID_PNM_L			32		   /*Product Name*/
#define	bsMCI_CID_PRV			48		   /*Product Revision*/
#define	bwMCI_CID_PRV			 8		   /*Product Revision*/
#define	bsMCI_CID_PSN			16		   /*Product Serial	Number*/
#define	bwMCI_CID_PSN			32		   /*Product Serial	Number*/
#define	bsMCI_CID_MDT			 8		   /*Manufacturing Date*/
#define	bwMCI_CID_MDT			 8		   /*Manufacturing Date*/
/*
 * Description:
 * Bit offsets and masks in	Card Specific Data 
 */
#define	bsMCI_CSD_STRUCTURE		   126		/*CSD structure*/		
#define	bwMCI_CSD_STRUCTURE			 2		/*CSD structure*/
#define	bsMCI_CSD_SPEC_VERS		   122		/*System specification version*/	   
#define	bwMCI_CSD_SPEC_VERS			 4		/*System specification version*/
#define	bsMCI_CSD_TAACHI		   115		/*asynch data access time*/		  
#define	bwMCI_CSD_TAACHI			 4		/*asynch data access time*/
#define	bsMCI_CSD_TAACLO		   112		/*asynch data access time*/		  
#define	bwMCI_CSD_TAACLO			 3		/*asynch data access time*/
#define	bsMCI_CSD_NSAC			   104		/*clocked data access time*/	   
#define	bwMCI_CSD_NSAC				 8		/*clocked data access time*/   
#define	bsMCI_CSD_MAXTRANHI			99		/*maximum transfer speed (high bits)*/		 
#define	bwMCI_CSD_MAXTRANHI			 4		/*maximum transfer speed (high bits)*/
#define	bsMCI_CSD_MAXTRANLO			96		/*maximum transfer speed (low bits)*/		
#define	bwMCI_CSD_MAXTRANLO			 3		/*maximum transfer speed (low bits)*/
#define	bsMCI_CSD_CCC				84		/*card command classes supported*/	  
#define	bwMCI_CSD_CCC				12		/*card command classes supported*/
#define	bsMCI_CSD_RDBL				80		/*read block length*/		
#define	bwMCI_CSD_RDBL				 4		/*read block length*/
#define	bsMCI_CSD_RDBLP				79		/*read block partial allowed*/		 
#define	bwMCI_CSD_RDBLP				 1		/*read block partial allowed*/
#define	bsMCI_CSD_WTBLMIS			78		/*read block misalign allowed*/		  
#define	bwMCI_CSD_WTBLMIS			 1		/*read block misalign allowed*/
#define	bsMCI_CSD_RDBLMIS			77		/*read block misalign allowed*/		  
#define	bwMCI_CSD_RDBLMIS			 1		/*read block misalign allowed*/
#define	bsMCI_CSD_DSR_IMP			76		/*DSR implimented*/
#define	bwMCI_CSD_DSR_IMP			 1		/*DSR implimented*/
#define	bsMCI_CSD_CSIZE				62		/*card size*/		
#define	bwMCI_CSD_CSIZE				12		/*card size*/  
#define	bsMCI_CSD_CMULT				47		/*card multiplier*/		  
#define	bwMCI_CSD_CMULT				 3		/*card multiplier*/	 
#define	bsMCI_CSD_ERASE_SECT		42		/*size of erase	sector*/	
#define	bwMCI_CSD_ERASE_SECT		 5		/*size of erase	sector*/	
#define	bsMCI_CSD_ERASE_SECT_SD		39		/*size of erase	sector for SD*/	   
#define	bwMCI_CSD_ERASE_SECT_SD		 7		/*size of erase	sector for SD*/	   
#define	bsMCI_CSD_ERASE_GRP			37		/*size of erase	group*/	   
#define	bwMCI_CSD_ERASE_GRP			 5		/*size of erase	group*/	   
#define	bsMCI_CSD_WP_GRP_SIZE		32		/*write	protect	group size*/	
#define	bwMCI_CSD_WP_GRP_SIZE		 5		/*write	protect	group size*/	
#define	bsMCI_CSD_WP_GRP_ENABLE		31		/*write	protect	group enable*/	  
#define	bwMCI_CSD_WP_GRP_ENABLE		 1		/*write	protect	group enable*/	  

#define	bsMCI_CSD_ERASE_GRP_SIZE11	42		/* CSD v1.1	*/
#define	bwMCI_CSD_ERASE_GRP_SIZE11	 5
#define	bsMCI_CSD_ERASE_GRP_MULT11	37 
#define	bwMCI_CSD_ERASE_GRP_MULT11	 5
#define	bsMCI_CSD_WP_GRP_SIZE11		32
#define	bwMCI_CSD_WP_GRP_SIZE11		 5


#define	bsMCI_CSD_R2W				26		/*Read/Write factor*/		
#define	bwMCI_CSD_R2W				 3		/*Read/Write factor*/	
#define	bsMCI_CSD_WTBL				22		/*write	block length*/		 
#define	bwMCI_CSD_WTBL				 4		/*write	block length*/
#define	bsMCI_CSD_WTBLP				21		/*write	block partial allowed*/		  
#define	bwMCI_CSD_WTBLP				 1		/*write	block partial allowed*/
#define	bsMCI_CSD_FILE_FORMAT_GRP	15		/*file format group*/	 
#define	bwMCI_CSD_FILE_FORMAT_GRP	 1		/*file format group*/
#define	bsMCI_CSD_COPY				14		/*copy flag	(OTP)*/	   
#define	bwMCI_CSD_COPY				 1		/*copy flag	(OTP)*/	   
#define	bsMCI_CSD_PERM_WP			13		/*permanent	write protect*/	   
#define	bwMCI_CSD_PERM_WP			 1		/*permanent	write protect*/	   
#define	bsMCI_CSD_TEMP_WP			12		/*temporary	write protect*/	   
#define	bwMCI_CSD_TEMP_WP			 1		/*temporary	write protect*/	   
#define	bsMCI_CSD_FILE_FORMAT		10		/*file format*/	   
#define	bwMCI_CSD_FILE_FORMAT		 2		/*file format*/
#define	bsMCI_CSD_CAN_ERASE			 5		/*card supports	erase commands (bit	within MCI_CCC)*/	 
#define	bwMCI_CSD_CAN_ERASE			 1		/*card supports	erase commands*/
#define	bsMCI_CSD_ERASE_SINGLE_BLOCK_ENABLE	46
#define	bwMCI_CSD_ERASE_SINGLE_BLOCK_ENABLE	1
#define	bsMCI_CSD_C_SIZE_MULT 47
#define	bwMCI_CSD_C_SIZE_MULT 2
#define	bsMCI_CSD_VDD_W_CURR_MAX 50
#define	bwMCI_CSD_VDD_W_CURR_MAX 3
#define	bsMCI_CSD_VDD_W_CURR_MIN 53
#define	bwMCI_CSD_VDD_W_CURR_MIN 3
#define	bsMCI_CSD_VDD_R_CURR_MAX 56
#define	bwMCI_CSD_VDD_R_CURR_MAX 3
#define	bsMCI_CSD_VDD_R_CURR_MIN 59
#define	bwMCI_CSD_VDD_R_CURR_MIN 3
#define	bsMCI_CSD_CRC 1
#define	bwMCI_CSD_CRC 7
/*
 * Description:
 * Decoded fields for card-specific	data
 */
typedef	struct apMCI_xDecodedCSD
{
	unsigned char csd_structure;						  /* version number	of CSD structure (should always	be 1) */
	unsigned long data_read_access_time_1_tns			 /*	first part of read access time,	in tenths-of-nanoseconds (e.g. 500 means 50ns) */;
	unsigned long data_read_access_time_2_in_clk_cycles; /*	second part	of read	access time, in	card bus clock cycles */
	unsigned long max_data_transfer_rate_khz;			 /*	maximum	frequency of card's	data line(s) in	kHz	*/
	unsigned long card_command_classes;					 /*	bit	pattern	of the command classes that	this card supports */
	unsigned long max_read_data_block_length;			 /*	in bytes */
	BOOL partial_blocks_for_read_allowed;
	BOOL write_block_misalignment;
	BOOL read_block_misalignment;
	BOOL dsr_implemented;
	unsigned long device_size;							 /*	not	very meaningful	on its own... */
	unsigned char max_read_current_min;					  /* encoded as	per	Physical Layer Spec	*/
	unsigned char max_read_current_max;					  /* encoded as	per	Physical Layer Spec	*/
	unsigned char max_write_current_min;				  /* encoded as	per	Physical Layer Spec	*/
	unsigned char max_write_current_max;				  /* encoded as	per	Physical Layer Spec	*/
	unsigned long device_size_multiplier;				 /*	not	very meaningful	on its own... */
	BOOL erase_single_block_enable;
	unsigned long erase_sector_size;					 /*	in blocks (of max_write_data_block_length) */
	unsigned long write_protect_group_size;				 /*	in erase sectors */
	BOOL write_protect_group_enable;
	unsigned long write_speed_factor;					 /*	how	many times slower is write,	compared to	read? */
	unsigned long max_write_data_block_length;			 /*	in bytes */
	BOOL partial_blocks_for_write_allowed;
	unsigned char file_format_group;					  /* encoded as	per	Physical Layer Spec	*/
	BOOL copy_flag;
	BOOL permanent_write_protection;
	BOOL temporary_write_protection;
	unsigned char file_format;							  /* encoded as	per	Physical Layer Spec	*/
	unsigned char crc;									  /* not checked */
	/* Calculated field	*/
	unsigned long CardSize;								   /*card size in bytes*/
} apMCI_sDecodedCSD;
/*
 * Description:
 * Decoded fields for card identification data
 */
typedef	struct apMCI_xDecodedCID
{
	unsigned long MID;				  /*Manufacturer ID*/
	unsigned long OID;				  /*Application	ID*/
	unsigned char PNM[7];			  /*Product	Name*/
	unsigned long PRV;				  /*Product	Revision*/
	unsigned long PSN;				  /*Product	serial number*/
	unsigned long MDT;				  /*Product	manufacturing date*/ 
}  apMCI_sDecodedCID;

#define	bsMCI_CLOCK_CLKDIV	   ( (unsigned long) 0)
#define	bwMCI_CLOCK_CLKDIV	   ( (unsigned long) 8)
#define	bsMCI_CLOCK_MODE	   ( (unsigned long) 8)
#define	bwMCI_CLOCK_MODE	   ( (unsigned long) 2)
#define	bsMCI_CLOCK_PWRSAVE	   ( (unsigned long) 9)
#define	bwMCI_CLOCK_PWRSAVE	   ( (unsigned long) 1)	
#define	bsMCI_CLOCK_BYPASS	   ( (unsigned long) 10)
#define	bwMCI_CLOCK_BYPASS	   ( (unsigned long) 1)
#define	bsMCI_CLOCK_WIDE	   ( (unsigned long) 11)
#define	bwMCI_CLOCK_WIDE	   ( (unsigned long) 1)

// In test mode, we	get	these data
#define	MCI_CLOCK_DIV_FASTEST  7			/*fastest speed	allowed	(ref clock /7)*/
#define	MCI_CLOCK_DIV_SLOWEST  511			/*slowest speed	allowed	(ref clock /511)*/

#pragma	pack()

#endif

⌨️ 快捷键说明

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