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

📄 64m_ese.c

📁 SLICION7的Flash驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	0x090000L,						/* Block  18:090000 - 097FFF(32kword) */
	0x098000L,						/* Block  19:098000 - 09FFFF(32kword) */
	0x0A0000L,						/* Block  20:0A0000 - 0A7FFF(32kword) */
	0x0A8000L,						/* Block  21:0A8000 - 0AFFFF(32kword) */
	0x0B0000L,						/* Block  22:0B0000 - 0B7FFF(32kword) */
	0x0B8000L,						/* Block  23:0B8000 - 0BFFFF(32kword) */
	0x0C0000L,						/* Block  24:0C0000 - 0C7FFF(32kword) */
	0x0C8000L,						/* Block  25:0C8000 - 0CFFFF(32kword) */
	0x0D0000L,						/* Block  26:0D0000 - 0D7FFF(32kword) */
	0x0D8000L,						/* Block  27:0D8000 - 0DFFFF(32kword) */
	0x0E0000L,						/* Block  28:0E0000 - 0E7FFF(32kword) */
	0x0E8000L,						/* Block  29:0E8000 - 0EFFFF(32kword) */
	0x0F0000L,						/* Block  30:0F0000 - 0F7FFF(32kword) */
	0x0F8000L,						/* Block  31:0F8000 - 0FFFFF(32kword) */
	0x100000L,						/* Block  32:100000 - 107FFF(32kword) */
	0x108000L,						/* Block  33:108000 - 10FFFF(32kword) */
	0x110000L,						/* Block  34:110000 - 117FFF(32kword) */
	0x118000L,						/* Block  35:118000 - 11FFFF(32kword) */
	0x120000L,						/* Block  36:120000 - 127FFF(32kword) */
	0x128000L,						/* Block  37:128000 - 12FFFF(32kword) */
	0x130000L,						/* Block  38:130000 - 137FFF(32kword) */
	0x138000L,						/* Block  39:138000 - 13FFFF(32kword) */
	0x140000L,						/* Block  40:140000 - 147FFF(32kword) */
	0x148000L,						/* Block  41:148000 - 14FFFF(32kword) */
	0x150000L,						/* Block  42:150000 - 157FFF(32kword) */
	0x158000L,						/* Block  43:158000 - 15FFFF(32kword) */
	0x160000L,						/* Block  44:160000 - 167FFF(32kword) */
	0x168000L,						/* Block  45:168000 - 16FFFF(32kword) */
	0x170000L,						/* Block  46:170000 - 177FFF(32kword) */
	0x178000L,						/* Block  47:178000 - 17FFFF(32kword) */
	0x180000L,						/* Block  48:180000 - 187FFF(32kword) */
	0x188000L,						/* Block  49:188000 - 18FFFF(32kword) */
	0x190000L,						/* Block  50:190000 - 197FFF(32kword) */
	0x198000L,						/* Block  51:198000 - 19FFFF(32kword) */
	0x1A0000L,						/* Block  52:1A0000 - 1A7FFF(32kword) */
	0x1A8000L,						/* Block  53:1A8000 - 1AFFFF(32kword) */
	0x1B0000L,						/* Block  54:1B0000 - 1B7FFF(32kword) */
	0x1B8000L,						/* Block  55:1B8000 - 1BFFFF(32kword) */
	0x1C0000L,						/* Block  56:1C0000 - 1C7FFF(32kword) */
	0x1C8000L,						/* Block  57:1C8000 - 1CFFFF(32kword) */
	0x1D0000L,						/* Block  58:1D0000 - 1D7FFF(32kword) */
	0x1D8000L,						/* Block  59:1D8000 - 1DFFFF(32kword) */
	0x1E0000L,						/* Block  60:1E0000 - 1E7FFF(32kword) */
	0x1E8000L,						/* Block  61:1E8000 - 1EFFFF(32kword) */
	0x1F0000L,						/* Block  62:1F0000 - 1F7FFF(32kword) */
	0x1F8000L,						/* Block  63:1F8000 - 1FFFFF(32kword) */
	0x200000L,						/* Block  64:200000 - 207FFF(32kword) */
	0x208000L,						/* Block  65:208000 - 20FFFF(32kword) */
	0x210000L,						/* Block  66:210000 - 217FFF(32kword) */
	0x218000L,						/* Block  67:218000 - 21FFFF(32kword) */
	0x220000L,						/* Block  68:220000 - 227FFF(32kword) */
	0x228000L,						/* Block  69:228000 - 22FFFF(32kword) */
	0x230000L,						/* Block  70:230000 - 237FFF(32kword) */
	0x238000L,						/* Block  71:238000 - 23FFFF(32kword) */
	0x240000L,						/* Block  72:240000 - 247FFF(32kword) */
	0x248000L,						/* Block  73:248000 - 24FFFF(32kword) */
	0x250000L,						/* Block  74:250000 - 257FFF(32kword) */
	0x258000L,						/* Block  75:258000 - 25FFFF(32kword) */
	0x260000L,						/* Block  76:260000 - 267FFF(32kword) */
	0x268000L,						/* Block  77:268000 - 26FFFF(32kword) */
	0x270000L,						/* Block  78:270000 - 277FFF(32kword) */
	0x278000L,						/* Block  79:278000 - 27FFFF(32kword) */
	0x280000L,						/* Block  80:280000 - 287FFF(32kword) */
	0x288000L,						/* Block  81:288000 - 28FFFF(32kword) */
	0x290000L,						/* Block  82:290000 - 297FFF(32kword) */
	0x298000L,						/* Block  83:298000 - 29FFFF(32kword) */
	0x2A0000L,						/* Block  84:2A0000 - 2A7FFF(32kword) */
	0x2A8000L,						/* Block  85:2A8000 - 2AFFFF(32kword) */
	0x2B0000L,						/* Block  86:2B0000 - 2B7FFF(32kword) */
	0x2B8000L,						/* Block  87:2B8000 - 2BFFFF(32kword) */
	0x2C0000L,						/* Block  88:2C0000 - 2C7FFF(32kword) */
	0x2C8000L,						/* Block  89:2C8000 - 2CFFFF(32kword) */
	0x2D0000L,						/* Block  90:2D0000 - 2D7FFF(32kword) */
	0x2D8000L,						/* Block  91:2D8000 - 2DFFFF(32kword) */
	0x2E0000L,						/* Block  92:2E0000 - 2E7FFF(32kword) */
	0x2E8000L,						/* Block  93:2E8000 - 2EFFFF(32kword) */
	0x2F0000L,						/* Block  94:2F0000 - 2F7FFF(32kword) */
	0x2F8000L,						/* Block  95:2F8000 - 2FFFFF(32kword) */
	0x300000L,						/* Block  96:300000 - 307FFF(32kword) */
	0x308000L,						/* Block  97:308000 - 30FFFF(32kword) */
	0x310000L,						/* Block  98:310000 - 317FFF(32kword) */
	0x318000L,						/* Block  99:318000 - 31FFFF(32kword) */
	0x320000L,						/* Block 100:320000 - 327FFF(32kword) */
	0x328000L,						/* Block 101:328000 - 32FFFF(32kword) */
	0x330000L,						/* Block 102:330000 - 337FFF(32kword) */
	0x338000L,						/* Block 103:338000 - 33FFFF(32kword) */
	0x340000L,						/* Block 104:340000 - 347FFF(32kword) */
	0x348000L,						/* Block 105:348000 - 34FFFF(32kword) */
	0x350000L,						/* Block 106:350000 - 357FFF(32kword) */
	0x358000L,						/* Block 107:358000 - 35FFFF(32kword) */
	0x360000L,						/* Block 108:360000 - 367FFF(32kword) */
	0x368000L,						/* Block 109:368000 - 36FFFF(32kword) */
	0x370000L,						/* Block 110:370000 - 377FFF(32kword) */
	0x378000L,						/* Block 111:378000 - 37FFFF(32kword) */
	0x380000L,						/* Block 112:380000 - 387FFF(32kword) */
	0x388000L,						/* Block 113:388000 - 38FFFF(32kword) */
	0x390000L,						/* Block 114:390000 - 397FFF(32kword) */
	0x398000L,						/* Block 115:398000 - 39FFFF(32kword) */
	0x3A0000L,						/* Block 116:3A0000 - 3A7FFF(32kword) */
	0x3A8000L,						/* Block 117:3A8000 - 3AFFFF(32kword) */
	0x3B0000L,						/* Block 118:3B0000 - 3B7FFF(32kword) */
	0x3B8000L,						/* Block 119:3B8000 - 3BFFFF(32kword) */
	0x3C0000L,						/* Block 120:3C0000 - 3C7FFF(32kword) */
	0x3C8000L,						/* Block 121:3C8000 - 3CFFFF(32kword) */
	0x3D0000L,						/* Block 122:3D0000 - 3D7FFF(32kword) */
	0x3D8000L,						/* Block 123:3D8000 - 3DFFFF(32kword) */
	0x3E0000L,						/* Block 124:3E0000 - 3E7FFF(32kword) */
	0x3E8000L,						/* Block 125:3E8000 - 3EFFFF(32kword) */
	0x3F0000L,						/* Block 126:3F0000 - 3F7FFF(32kword) */
	0x3F8000L,						/* Block 127:3F8000 - 3F8FFF( 4kword) */
	0x3F9000L,						/* Block 128:3F9000 - 3F9FFF( 4kword) */
	0x3FA000L,						/* Block 129:3FA000 - 3FAFFF( 4kword) */
	0x3FB000L,						/* Block 130:3FB000 - 3FBFFF( 4kword) */
	0x3FC000L,						/* Block 131:3FC000 - 3FCFFF( 4kword) */
	0x3FD000L,						/* Block 132:3FD000 - 3FDFFF( 4kword) */
	0x3FE000L,						/* Block 133:3FE000 - 3FEFFF( 4kword) */
	0x3FF000L						/* Block 134:3FF000 - 3FFFFF( 4kword) */
};
#endif

/* Specify Erase Block Number */
static const unsigned short nBlocks = sizeof( BlockOfs)/sizeof( BlockOfs[0]);

int EraseStop;									/* Request of Suspend Erase */

/******************************************************************************
*  FmEraseSuspendResume()  Erase Suspend/Resume operation
*  ---------------------------------------------------------------------------
*  Declaration  int FmEraseSuspendResume(unsigned short *pEraseStart,
*                                        unsigned char BlockNum)
*  ---------------------------------------------------------------------------
*  Description  This function is a sample program in the case of reading data
*               from the same bank during erase.
*               In this sample program, when an EraseStop flag is set to TRUE
*               during erase function, function is interrupted and it waits to
*               set an EraseStop flag to FALSE.
*               If an EraseStop flag is set to FALSE, it will consider that
*               read the data in other tasks was completed, and function will
*               be resumed.
*               Please initialize the EraseStop flag by FALSE.
*  ---------------------------------------------------------------------------
*  Parameter    unsigned short *pEraseStart; Erase address
*               unsigned char BlockNum;      Erase block number
*  ---------------------------------------------------------------------------
*  Return Value int Errflg;
*                TRUE : Erase normal stop
*                FALSE: Erase abnormal stop
*  ---------------------------------------------------------------------------
*  No Related Function	
*  ---------------------------------------------------------------------------
*  Version      Ver. 0.10.00 '03/03/07 First release
*******************************************************************************/
int FmEraseSuspendResume(unsigned short *pEraseStart,unsigned char BlockNum)
{

	int Errflg = TRUE;							/* Error Flag */
	unsigned short *pCopyEraseStart;			/* Erase Start Address */

	pCopyEraseStart = pEraseStart;
	
	if(BlockNum >= nBlocks) return FALSE;		/* Check of Block Number */
	
	/***** Specified Erase Address *****/
	pEraseStart = pEraseStart + BlockOfs[BlockNum];
	
	/***** Output of Block Erase Command *****/
	*pEraseStart = 0x20;						/* 1st Bus Cycle */
	*pEraseStart = 0xd0;						/* 2nd Bus Cycle */

	/***** Status Polling *****/
	while((*pEraseStart & 0x80) != 0x80) {		/* Check of Status Data */
		if( EraseStop == TRUE) {				/* Check of Request Suspend Erase */
			/***** Suspend Erase *****/
			if ((*pEraseStart & 0xC0) == 0x00) {	
			
				*pEraseStart = 0xB0;			/* Output of Suspend Command */
	
				/*==== Supend Status Polling ====*/
				while((*pEraseStart & 0x40) != 0x40);/* Status Data Confirmation */
			}else{
				Errflg = FALSE;					/* Set of Error Flag */
				break;
			}
			*pEraseStart = 0xFF;				/* Output of Read Array Command */

			/***** Waiting for Data Reference *****/
			while( EraseStop == TRUE);
			
			/***** Resume Erase *****/
			*pEraseStart = 0x70;				/* Read Status Register */

			if ((*pEraseStart & 0xC0) == 0xC0) {/* Suspend Continue丠 */
				*pEraseStart = 0xD0;			/* Output of Resume Command */
			}else{
				Errflg = FALSE;					/* Set of Error Flag */
				break;
			}
		}
	}
	if ((*pEraseStart & 0x38) != 0x00) {		/* Check of Error */
		Errflg = FALSE;							/* Set of Error Flag */
		*pEraseStart = 0x50;					/* Clear Status */
	}
	
	*pCopyEraseStart = 0xff;					/* Output of Read Array Command */
	
	return Errflg;
}

⌨️ 快捷键说明

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