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

📄 main.c

📁 TI公司DSP开发板DSK6711针对Flash的完整犊写功能
💻 C
字号:
/* Example Code for Flash Write (One Sector) */

#define		TIMEOUT		0x1000000

unsigned short	*Flash555 ; 
unsigned short	*Flash2AA ;

int FlashErase( unsigned short *page )
{
	int	i;
	/* Flash Sector(page) Erase Sequence */
	*Flash555 = 0x0F0;
	*Flash555 = 0x0AA;
	*Flash2AA = 0x055;
	*Flash555 = 0x080;
	*Flash555 = 0x0AA;
	*Flash2AA = 0x055;
	*page = 0x30;
	for (i=0;i<TIMEOUT;i++) if ( *page & 0x080 ) break;
	if (i<TIMEOUT) return 1;
	return 0;
}

int FlashWrite(unsigned short *src, unsigned short *dst )
{	
	int	i;
	/* Half Word Write Sequence */
	*Flash555 = 0xAA;
	*Flash2AA = 0x55;
	*Flash555 = 0xA0;
	*dst = *src ; 
	while ((*dst ^ *src) & 0x80);
	for (i=0;i<TIMEOUT;i++) if ( !((*dst ^ *src) & 0x80) ) break;
	if (i<TIMEOUT) return 1;
	return 0;
}

void main( void )
{
	int 			i,page,*tmp;
	unsigned short	*FlashBase,*MemoryBase;

	Flash555 = ( unsigned short * )( 0x90000aaa ) ;
	Flash2AA = ( unsigned short * )( 0x90000554 ) ;

	tmp = (int *) 0x1800004;
	*tmp = 0xFFFFFF13 ; 						/* CE1: 16bit Space */
	
	/* Select Flash Sector(page) where you want to write on */
	page = 4 ; 									/* 0 <= page <= 14 */
	FlashBase = (unsigned short *) (0x90000000 | (page<<16));

	/* Set Memory Address whrer you want to read from */
	MemoryBase = (unsigned short *) 0x00000000;
	
	if(!FlashErase(FlashBase)) 
		while(1) 								/* Flash Erase Error */;
	 
	for (i=0;i<0x08000;i++) {
		if (*MemoryBase == 0x0ffff) continue;
		if (!FlashWrite(MemoryBase++,FlashBase++)) break;
	}
	
	if (i<0x08000)
		while(1); 								/* Flash Write Error */
	else
		while(1); 								/* Flash Write Complete */
}







⌨️ 快捷键说明

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