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

📄 sst39flash.c

📁 DownLoad_sst39sf010.zip--嵌入式系统中关于SST39SF010的FLASH的BOOTLOADER源程序(KC51)
💻 C
字号:
/*********************************************************************
 
  (c) copyright Extell Company 2001 
  ALL RIGHTS RESERVED
 
 *********************************************************************
        ESR-700 Demonstration Program for Voice Recognition Application
 *********************************************************************

  File:		SST39Flash.c
 
  Project:      ESR-700 demo program for Voice Recognition Application
 
  Description:  SST Flash memory Fuctions
 
  Date:         Sep. 2001
   
 ********************************************************************/
#include "main.h"
#include "extell51.h"


#define	UNLOCK1_OFFSET	0x5555
#define	UNLOCK2_OFFSET	0x2aaa
#define	COMMAND_OFFSET	0x5555

#define FLASH_CMD_UNLOCK1		0xAA
#define FLASH_CMD_UNLOCK2		0x55
#define FLASH_CMD_READ_RESET	0xF0
#define FLASH_CMD_AUTOSELECT	0x90
#define FLASH_CMD_BYTE_PROGRAM	0xA0
#define FLASH_CMD_ERASE_SETUP	0x80
#define FLASH_CMD_CHIP_ERASE	0x10
#define FLASH_CMD_SECTOR_ERASE	0x30
#define FLASH_CMD_ERASE_SUSPEND	0xB0
#define FLASH_CMD_ERASE_RESUME	0x30

#define DQ7						0x80
#define DQ6						0x40
#define DQ5						0x20
void FlashWrite(unsigned int addr, unsigned char fdata);
unsigned char FlashWriteConfirm(unsigned int addr, unsigned char fdata);
unsigned char ChipErase(void);
unsigned char SectorErase(unsigned int SectorAddr);


void FlashWrite(unsigned int addr, unsigned char fdata)
{
	write_XDATA(UNLOCK1_OFFSET,FLASH_CMD_UNLOCK1);
	write_XDATA(UNLOCK2_OFFSET,FLASH_CMD_UNLOCK2);
	write_XDATA(COMMAND_OFFSET,FLASH_CMD_BYTE_PROGRAM);
	write_XDATA(addr,fdata);
}


unsigned char SectorErase(unsigned int SectorAddr)
{
	unsigned char data prev,next;
	bit PollingCheck=0;
	write_XDATA(UNLOCK1_OFFSET,FLASH_CMD_UNLOCK1);
	write_XDATA(UNLOCK2_OFFSET,FLASH_CMD_UNLOCK2);
	write_XDATA(COMMAND_OFFSET,FLASH_CMD_ERASE_SETUP);
	write_XDATA(UNLOCK1_OFFSET,FLASH_CMD_UNLOCK1);
	write_XDATA(UNLOCK2_OFFSET,FLASH_CMD_UNLOCK2);
	write_XDATA(SectorAddr,FLASH_CMD_SECTOR_ERASE);
	prev = read_XDATA(0);
	next= read_XDATA(0);
	while((prev&DQ6)!= (next&DQ6))
	{
		prev = next;
		next= read_XDATA(0);
		if(next&DQ7) PollingCheck = 1;
	}
	if(!PollingCheck)
	{
		next= read_XDATA(0);
		if(next&DQ7) return(OK);
		else return(ERROR);
	}
	return(OK);
}

⌨️ 快捷键说明

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