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

📄 mstick.h

📁 三星s3c2460开发板完整功能测试代码
💻 H
字号:
/*
 * File : MStick.h
 */
#ifndef	__MSTICK_H__
#define	__MSTICK_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "def.h"

void Init_Mstick_Host(unsigned int Mstick_Freq);
void Init_IrDA_Mstick_Irq(void);
void Irq_Mstick_Dma(void);
void Init_Mstick_Txdma(void);
void Init_Mstick_Rxdma(void);
void __irq Dma_P_Irq(void);


void Ms_GPIO_Initial(void);

void Ch29_MEMORY_STICK(void);
void Test_Ms_Rw(void);
void Test_Ms_Block_Read(void);
void Test_Ms_Block_Write(void);
void Test_Ms_Block_Erase(void);
void Test_Ms_Page_Read(void);
void Test_Ms_Page_Write(void);
void Test_Ms_Status_Read(void);
void Test_Ms_Status_Write(void);
void Test_Ms_Extra_Read(void);
void Test_Ms_Extra_Write(void);

void Test_Ms_Dma_Rw(void);
void Test_Ms_Page_Dma_Write(void);
void Test_Ms_Page_Dma_Read(void);
void Test_R_W_Hard(void);


void Ms_Reset(void);
void Ms_Attr_Read(void);
int Ms_Page_Write(unsigned int Block_Addr, unsigned int Page_Addr, unsigned char *Write_Buffer);
void Ms_Page_Read(unsigned int Block_Addr, unsigned int Page_Addr, unsigned char *Status_Buffer, unsigned char *Read_Buffer);
void Ms_Extra_Read(unsigned int Block_Addr, unsigned char Page_Addr, unsigned char *Buffer);
void Ms_Extra_Write(unsigned int Block_Addr, unsigned char Page_Addr, unsigned char *Buffer);
void Ms_Block_Erase(unsigned int Block_Addr);
int Ms_Page_Write_Dma(unsigned int Block_Addr, unsigned int Page_Addr, unsigned char *Write_Buffer);
void Ms_Page_Read_Dma(unsigned int Block_Addr, unsigned int Page_Addr, unsigned char *Status_Buffer, unsigned char *Read_Buffer);
void Write_Mstick_Format_Data(void);
int Ms_Fmt_Page_Write(unsigned int Block_Addr, unsigned int Page_Addr, unsigned char *Write_Buffer, unsigned char *Extra_Buffer);


int Mstpc_Write_Extra_Reg(unsigned char *Buffer);
int Mstpc_Set_Command(unsigned char Command);
unsigned short Mstpc_Get_Int(int num, unsigned char End_Command);
int Mstpc_Write_Rw_Reg_Addr(unsigned char Read_Addr, unsigned char Read_Size, unsigned char Write_Addr, unsigned char Write_Size);
int Mstpc_Write_Param_Reg(unsigned int Block_Addr, unsigned char Sys_Param, unsigned char Page_Addr, unsigned char Cmd_Param);
int Mstpc_Write_Status_Reg(unsigned char Status_Addr, unsigned char Status_Size, unsigned char *Buffer);
int Mstpc_Read_Status_Reg(unsigned char Status_Addr, unsigned char Status_Size, unsigned char *Buffer);
int Check_Wp(void);


// Irq functions.
void __irq IrDA_Mstick_Irq(void);
void Mstick_Sub_Irq(void);
void IrDA_Sub_Irq(void);
void Tr_Irq(void);
void Stick_Ins_Irq(void);

void PrintSubMessage(void);


// System Parameter value.
#define	PARAM_BAMD	(1<<7)		// Block Address MoDe
#define	PARAM_ATEN	(1<<6)		// ATtribute rom ENable

 // MSPRECON Register Bit(0x167B_0000)
#define	CLK_EN	(0x1<<2)

//Status0[0] is WP bit 
 #define	STATUS_WP		(1<<0)
 
// INT_ENCON Register Bit(0x167B_0004)
#define	DISABLE	(0x0)
#define	ENABLE	(0x1)

#define	ONEPAGE_SIZE	(512)		// 1 page = 256 Bytes
#define	STATUS_SIZE		9		// 1 page = 10 Bytes
#define	ATTR_SIZE		512		// cis data = 256 Bytes

#define	EXTRA_SIZE		(9)	// 9bytes
#define	EXTRA_REG_START		(0x16)

#define	CHKSUM_SIZE				(2)	// 9bytes
#define	CHKSUM_REG_START		(EXTRA_REG_START+4)		// Extra register5,4: reserved area.

// TPC(Transfer Protocol Command)
#define	READ_PAGE_DATA		(0x2<<12)
#define	READ_REG			(0x4<<12)
#define	GET_INT				(0x7<<12)
#define	WRITE_PAGE_DATA		(0xD<<12)
#define	WRITE_REG			(0xB<<12)
#define	SET_RW_REG_ADDRS	(0x8<<12)
#define	SET_CMD				(0xE<<12)

// INT signal desription
#define	INT_CED		(1<<7)
#define	INT_ERR		(1<<6)
#define	INT_BREQ	(1<<5)
#define	INT_CMDNK	(1<<0)

#define	B_AREA		(0)
#define	DE_AREA		(0x1<<5)
#define	E_AREA		(0x2<<5)
#define	OVE_AREA	(0x4<<5)

// INT_TPC timeout count
#define	TIME_OUT	10000

// CTRL_STATUS Register Bit(0x167B_8004)
#define	INTSTATUS		(rCTRL_STA & 0x80)
#define	DRQSTATUS		(rCTRL_STA & 0x40)
#define	RBE				(rCTRL_STA & 0x8)
#define	RBF				(rCTRL_STA & 0x4)
#define	TBE				(rCTRL_STA & 0x2)
#define	TBF				(rCTRL_STA & 0x1)

#define	INT_STA		(1<<7)
#define	DRQ_STA		(1<<6)
#define	RBE_STA		(1<<3)
#define	RBF_STA		(1<<2)
#define	TBE_STA		(1<<1)
#define	TBF_STA		(1<<0)

//#define	INT_P_END			(0x80)
#define	INT_P_END			(rINTCTRL_STA & 0x80)
#define	INT_SIF			(0x40)
#define	INT_DRQ			(0x20)
#define	INT_PIN			(0x10)
#define	INT_CRC			(0x2)
#define	INT_TOE			(0x1)



// Error code
#define	NO_ERROR			0
#define	DATA_READ_ERROR		1
#define	DATA_WRITE_ERROR	2
#define	PAGE_ERASE_ERROR	3
#define	REG_READ_ERROR		4
#define	REG_WRITE_ERROR		5

// Memory stick command definition
// Memory stick Function CMD
#define	MS_RESET		0x3c
#define	MS_SLEEP		0x5a
#define	MS_CLEAR_BUF	0xc3
// Memory stick Flash CMD
#define	BLOCK_READ		0xaa
#define	BLOCK_WRITE		0x55
#define	BLOCK_END		0x33
#define	BLOCK_ERASE		0x99
#define	FLASH_STOP		0xcc

#ifdef __cplusplus
}
#endif

#endif /* __MSTICK_H__ */

⌨️ 快捷键说明

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