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

📄 hwcfg.h

📁 ertfs文件系统里面既有完整ucos程序
💻 H
字号:
//< hwcfg.h >
/***************************************************************************
SmartMedia Controller Definition
***************************************************************************/
/* I/O Mode Address */
#define DATA (HostAddrStart+0x00) /* R/W Data Reg */
#define STATUS (HostAddrStart+0x02) /* R/- Status Reg */
#define MODE (HostAddrStart+0x02) /* -/W Mode Reg */
/* Controller Status Reg (Read Only) */
#define STS_BUSY 0x80
#define STS_MODEL 0x40
#define STS_VCC 0x10
#define STS_SCHG 0x08
#define STS_CENB 0x04
#define STS_WP 0x01
/* Controller Mode Reg (Write Only) */
/*=======================================*/
#define STANDBY 0x00 /* ---0 --00 */
#define WR_DATA 0x10 /* ---1 --00 */
#define WR_CMD 0x11 /* ---1 --01 */
#define WR_ADR 0x12 /* ---1 --10 */
/*=======================================*/
#define ENB_WP 0x00 /* 0--- ---- */
#define DIS_WP 0x80 /* 1--- ---- */
/*=======================================*/
#define LED_OFF 0x00 /* ---- x0-- */
#define LED_ON 0x04 /* ---- x1-- */
/*=======================================*/
#define PW_OFF 0x08 /* ---- 10-- */
#define PW_ON 0x0C /* ---- 11-- */
/*=======================================*/
#define ECC_RESET 0x70 /* -111 ---- */
#define ECC_START 0x30 /* -011 ---- */
#define ECC_STOP 0x10 /* -001 ---- */
#define ECC_READ 0x50 /* -101 ---- */
/*=======================================*/
/***************************************************************************
Hardware Controll Macro
***************************************************************************/
static unsigned char _inpb(unsigned short);
static void _outpb(unsigned short, unsigned char);
/***************************************************************************/
static unsigned char _inpb(unsigned short addr)
{
unsigned char data;
 return(data);
}
static void _outpb(unsigned short addr, unsigned char data)
{

}

#if 1

#define RB	(0x01)
#define CE	(0x02)
#define CLE	(0x04)
#define ALE	(0x08)	
#define rKM29UXDATA	   (*(volatile unsigned char *)0x02000000)	//bank1
#define rPDATC		(*(volatile unsigned *)0x1d20014)              
/*KM29U128操作宏定义*/
#define FC_CMD		
#define FC_ADDR		
#define FC_DATA        {rPDATC &= ~(ALE|CLE|CE);               }
#define FC_INACTIVE	 
#define WAITRB		while(!(rPDATC & RB))  //wait tWB and check R/B pin.


/***************************************************************************/
static unsigned char LED=LED_OFF;
/***************************************************************************/
#define _Hw$InData() rKM29UXDATA
#define _Hw$OutData(a) rKM29UXDATA = a;
/*****/
#define _Hw$SetRdData() {rPDATC &= ~(ALE|CLE|CE);}
#define _Hw$SetRdCmd() {rPDATC |= CLE; rPDATC &= ~(ALE|CE);}
#define _Hw$SetRdAddr() {rPDATC |= ALE;	rPDATC&=~(CLE|CE);}
#define _Hw$SetRdStandby() {rPDATC |= CE; rPDATC&=~(ALE|CLE);}
/*---*/
#define _Hw$SetWrData() {rPDATC &= ~(ALE|CLE|CE);}
#define _Hw$SetWrCmd() {rPDATC |= CLE; rPDATC &= ~(ALE|CE);}
#define _Hw$SetWrAddr() {rPDATC |= ALE;	rPDATC&=~(CLE|CE);}
#define _Hw$SetWrStandby() {rPDATC |= CE; rPDATC&=~(ALE|CLE);}
/*****/
#define _Hw$VccOn() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|PW_ON ))
#define _Hw$VccOff() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|PW_OFF))
/*****/
#define _Hw$LedOn() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|(LED=LED_ON )))
#define _Hw$LedOff() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|(LED=LED_OFF)))
/*****/
#define _Hw$EccRdReset() _outpb(MODE,(unsigned char)(ECC_RESET|ENB_WP|LED))
#define _Hw$EccRdStart() _outpb(MODE,(unsigned char)(ECC_START|ENB_WP|LED))
#define _Hw$EccRdStop() _outpb(MODE,(unsigned char)(ECC_STOP |ENB_WP|LED))
#define _Hw$EccRdRead() _outpb(MODE,(unsigned char)(ECC_READ |ENB_WP|LED))
/*---*/
#define _Hw$EccWrReset() _outpb(MODE,(unsigned char)(ECC_RESET|DIS_WP|LED))
#define _Hw$EccWrStart() _outpb(MODE,(unsigned char)(ECC_START|DIS_WP|LED))
#define _Hw$EccWrStop() _outpb(MODE,(unsigned char)(ECC_STOP |DIS_WP|LED))
#define _Hw$EccWrRead() _outpb(MODE,(unsigned char)(ECC_READ |DIS_WP|LED))
/*****/
#define _Hw$ChkCardIn() (1)//(_inpb(STATUS)&(STS_CENB))
#define _Hw$ChkStatus() (0)//(_inpb(STATUS)&(STS_SCHG))
#define _Hw$ChkWP() (_inpb(STATUS)&(STS_WP))
#define _Hw$ChkPower() (1)//(_inpb(STATUS)&(STS_VCC))
#define _Hw$ChkBusy() (rPDATC & RB)
/***************************************************************************/
#define HostAddrStart 0x300 /* Base IO Port Address */

#else

#define RB	(0x01)
#define CE	(0x02)
#define CLE	(0x04)
#define ALE	(0x08)	
#define rKM29UXDATA	   (*(volatile unsigned char *)0x04400000)	//bank2  

#define IOPDATA 	(*(volatile unsigned int *)(0x3ff0000+0x5008))
           
/*KM29U128操作宏定义*/
#define FC_CMD		{IOPDATA |= CLE;	IOPDATA &= ~(ALE|CE);}
#define FC_ADDR		{IOPDATA |= ALE;	IOPDATA&=~(CLE|CE);}
#define FC_DATA        {IOPDATA &= ~(ALE|CLE|CE);               }
#define FC_INACTIVE	{IOPDATA |= CE;	IOPDATA&=~(ALE|CLE);}       
#define WAITRB		while(!(IOPDATA & RB))  //wait tWB and check R/B pin.


/***************************************************************************/
static unsigned char LED=LED_OFF;
/***************************************************************************/
#define _Hw$InData() rKM29UXDATA
#define _Hw$OutData(a) rKM29UXDATA = a;
/*****/
#define _Hw$SetRdData() {IOPDATA &= ~(ALE|CLE|CE);}
#define _Hw$SetRdCmd() {IOPDATA |= CLE; IOPDATA &= ~(ALE|CE);}
#define _Hw$SetRdAddr() {IOPDATA |= ALE;	IOPDATA&=~(CLE|CE);}
#define _Hw$SetRdStandby() {IOPDATA |= CE; IOPDATA&=~(ALE|CLE);}
/*---*/
#define _Hw$SetWrData() {IOPDATA &= ~(ALE|CLE|CE);}
#define _Hw$SetWrCmd() {IOPDATA |= CLE; IOPDATA &= ~(ALE|CE);}
#define _Hw$SetWrAddr() {IOPDATA |= ALE;	IOPDATA&=~(CLE|CE);}
#define _Hw$SetWrStandby() {IOPDATA |= CE; IOPDATA&=~(ALE|CLE);}
/*****/
#define _Hw$VccOn() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|PW_ON ))
#define _Hw$VccOff() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|PW_OFF))
/*****/
#define _Hw$LedOn() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|(LED=LED_ON )))
#define _Hw$LedOff() //_outpb(MODE,(unsigned char)(STANDBY|ENB_WP|(LED=LED_OFF)))
/*****/
#define _Hw$EccRdReset() _outpb(MODE,(unsigned char)(ECC_RESET|ENB_WP|LED))
#define _Hw$EccRdStart() _outpb(MODE,(unsigned char)(ECC_START|ENB_WP|LED))
#define _Hw$EccRdStop() _outpb(MODE,(unsigned char)(ECC_STOP |ENB_WP|LED))
#define _Hw$EccRdRead() _outpb(MODE,(unsigned char)(ECC_READ |ENB_WP|LED))
/*---*/
#define _Hw$EccWrReset() _outpb(MODE,(unsigned char)(ECC_RESET|DIS_WP|LED))
#define _Hw$EccWrStart() _outpb(MODE,(unsigned char)(ECC_START|DIS_WP|LED))
#define _Hw$EccWrStop() _outpb(MODE,(unsigned char)(ECC_STOP |DIS_WP|LED))
#define _Hw$EccWrRead() _outpb(MODE,(unsigned char)(ECC_READ |DIS_WP|LED))
/*****/
#define _Hw$ChkCardIn() (1)//(_inpb(STATUS)&(STS_CENB))
#define _Hw$ChkStatus() (0)//(_inpb(STATUS)&(STS_SCHG))
#define _Hw$ChkWP() (_inpb(STATUS)&(STS_WP))
#define _Hw$ChkPower() (1)//(_inpb(STATUS)&(STS_VCC))
#define _Hw$ChkBusy() (IOPDATA & RB)
/***************************************************************************/
#define HostAddrStart 0x300 /* Base IO Port Address */

#endif

⌨️ 快捷键说明

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