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

📄 29lvflash.c

📁 关于s3c44b0的flash编程的样例涉及到flash中数据读取、检验等
💻 C
字号:
#include "..\inc\44b.h"
#include "..\inc\29lvflash.h"
#include "..\inc\44blib.h"

/* attention!! Cache must be closed first */

/* word addr must be converted to byte addr */
#define FLASH_WR(addr, data)	*(volatile unsigned short *)(addr<<1) = (unsigned short)(data)

#define FLASH_WRITE			0xA0A0
#define FLASH_ERASE_CHIP	0x1010
#define FLASH_ERASE_SECTOR	0x3030
#define FLASH_RESET			0xF0F0

void Flash_Reset(void)
{
	FLASH_WR(0, FLASH_RESET);
}

void Flash_Erase_Chip(void)
{
	Flash_Reset();
	/* 6 write cycles */
	FLASH_WR(0x555, 0xaaaa);
	//Delay(10);
	FLASH_WR(0x2aa, 0x5555);
	//Delay(10);
	FLASH_WR(0x555, 0x8080);
	//Delay(10);
	FLASH_WR(0x555, 0xaaaa);
	//Delay(10);
	FLASH_WR(0x2aa, 0x5555);
	//Delay(10);
	FLASH_WR(0x555, FLASH_ERASE_CHIP);
	
	/* wait for finishing */
	while(!(rPDATC&0x04));	//gpc2 = r/b
	Flash_Reset();
}

void Flash_Write(char *addr, char *data, int len)
{
	 int i;
	 
	 for(i=0; i<len/2; i++)
	 {
	 	Flash_Reset();
	 	/* first 3 cycles */
	 	FLASH_WR(0x555, 0xaaaa);
	 	//Delay(1);
	 	FLASH_WR(0x2aa, 0x5555);
		//Delay(1);
		FLASH_WR(0x555, 0xa0a0);
		//Delay(1);
		
		/* write begin */
	 	*((volatile short *)addr) = *((short *)data);
	 	addr += 2;
	 	data += 2;
	 	
	 	/* wait for finishing */
	 	while(!(rPDATC&0x04));	//gpc2 = r/b
	 	Flash_Reset();
	 }
}

int secaddr[] = {
	0,
	0x2000,
	0x3000,
	0x4000,
	0x8000,
	0x10000,
	0x18000,
	0x20000,
	0x28000,
	0x30000,
	0x38000,
	0x40000,
	0x48000,
	0x50000,
	0x58000,
	0x60000,
	0x68000,
	0x70000,
	0x78000
};

void Flash_Erase_Sector(int sec)
{
	Flash_Reset();
	FLASH_WR(0x555, 0xaaaa);
	//Delay(1);
	FLASH_WR(0x2aa, 0x5555);
	//Delay(1);
	FLASH_WR(0x555, 0x8080);
	//Delay(1);
	FLASH_WR(0x555, 0xaaaa);
	//Delay(1);
	FLASH_WR(0x2aa, 0x5555);
	//Delay(1);
	FLASH_WR(secaddr[sec], 0x3030);
	//Delay(1);
	
	/* wait for finishing */
	while(!(rPDATC&0x04));	//gpc2 = r/b
	Flash_Reset();
}
	 	

⌨️ 快捷键说明

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