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

📄 msdef.h

📁 uclinux下memory stick的驱动
💻 H
字号:
/************************************************************
*	Moudle Name		:msdef.h
*	Author			:ZhangJianjun
*	Create Date		:2002-06-06
*	Version			:1.0
*	Description		:Definitions of Sony Memory stick funcition and macro for S1C33209
*	Revision Hostory:
*	Remark			:
************************************************************/

#ifndef	__MSDEF_H__
#define	__MSDEF_H__


#define _SWAP(x)	(((x>>8) & 0x00FF) | ((x<<8) & 0xFF00))

#define CRC16_CODE 0x8005


//Memory stick pins 

/*******************
 Memory stick			209
 	VSS(1)	-------		GND
	BS(2)	-------		P00		//Serial protocol bus state signal
	VCC(3)	-------		VCC
	SDIO(4)	-------		P01		//Serial protocol data signal
	RESERVE(5)
	INS(6)						//Stick insertion/extraction detect-terminal
	RESERVE(7)
	SCLK(8)	-------		P02		//Serial protocol clock signal
	VCC(9)	-------		VCC
	VSS(10)	-------		GND
************************************/

#define	MEMSTICK_BS	0x01
#define	MEMSTICK_SDIO	0x02
#define	MEMSTICK_SCLK	0x04

#define	UMEMSTICK_BS	0xfe
#define	UMEMSTICK_SDIO	0xfd
#define	UMEMSTICK_SCLK	0xfb

//#define INIT_R9			asm("xld %r9,0x402d1")	//0x402d1 is address of P0 I/O port data reg
//#define SET_BS			asm("bset [%r9],0")
//#define CLR_BS			asm("bclr [%r9],0")

#define SET_BS		( SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR)|MEMSTICK_BS) )
#define CLR_BS		( SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR)&UMEMSTICK_BS) )



#define SET_SDIO		( SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR)|MEMSTICK_SDIO) )
#define CLR_SDIO		( SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR)&UMEMSTICK_SDIO) )
//#define SET_SDIO		asm("bset [%r9],1")
//#define CLR_SDIO		asm("bclr [%r9],1")
#define SDIO_OUT		( SetReg8(IO_IOC0_ADDR,GetReg8(IO_IOC0_ADDR)|MEMSTICK_SDIO) )
#define SDIO_IN			( SetReg8(IO_IOC0_ADDR,GetReg8(IO_IOC0_ADDR)&UMEMSTICK_SDIO) )

#define GET_SDIO		( GetReg8(IO_P0D_ADDR)&MEMSTICK_SDIO )

#define SET_SCLK		( SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR)|MEMSTICK_SCLK) )
#define CLR_SCLK		( SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR)&UMEMSTICK_SCLK) )
//#define SET_SCLK		asm("bset [%r9],2")
//#define CLR_SCLK		asm("bclr [%r9],2")

//Memory stick Transfer Protocol Command (TPC)

#define READ_PAGE_DATA		0x2d	//Transfer from PageBuffer
#define READ_REG		0x4b	//Read register
#define GET_INT			0x78	//Read INT Register
#define WRITE_PAGE_DATA		0xd2	//Transfer to Pagebuffer
#define WRITE_REG		0xb4	//Write register
#define SET_RW_REG_ADRS		0x87	//Address setting of RAED_REG WRITE_REG
#define SET_CMD			0xe1	//Set CMD

//CMD
#define RESET_CMD		0x3c
#define RESET_CMD_CRC		0x0088

#define CLEAR_BUF_CMD		0xc3

#define BLOCK_READ_CMD		0xaa
#define BLOCK_WRITE_CMD		0x55
#define BLOCK_ERASE_CMD		0x99
#define BLOCK_END			0x33


#define ResetMemStick() 	SendCMD(RESET_CMD)
#define ClearMemStickBuf()	SendCMD(CLEAR_BUF_CMD)

#define MEMSTICK_INS	0x08		// zjj add 2002-7-18 19:18
#define UMEMSTICK_INS	0xF7		// zjj add 2002-7-18 19:18
#define GET_INS			( GetReg8(IN_K6D_ADDR)&MEMSTICK_INS )	// zjj add 2002-7-18 19:18
//#define SET_LED		SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR) & 0xef)
//#define CLR_LED		SetReg8(IO_P0D_ADDR,GetReg8(IO_P0D_ADDR) | 0x10)

#define SET_LED		SetReg8(IO_P2D_ADDR,GetReg8(IO_P2D_ADDR) & 0xFE)
#define CLR_LED		SetReg8(IO_P2D_ADDR,GetReg8(IO_P2D_ADDR) | 0x01)

#define MS_POWER_ON 	SetReg8(IO_P1D_ADDR,GetReg8(IO_P1D_ADDR) & 0xBF)
#define MS_POWER_OFF	SetReg8(IO_P1D_ADDR,GetReg8(IO_P1D_ADDR) | 0x40)

extern int InitMemStick(void);
int M_ReadSectors(unsigned char* Buffer, unsigned long StartSec, unsigned long Sectors);
int M_WriteSectors(unsigned char* Buffer, unsigned long StartSec, unsigned long Sectors);
void SleepMS(void);
void WakeupMS(void);
extern void SleepMSAll();
#endif

//End of moudle

⌨️ 快捷键说明

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