📄 sst39flash.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 + -