📄 flash16x4.h
字号:
//*----------------------------------------------------------------------------
//* ATMEL Microcontroller Software Support - ROUSSET -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name : FLASH16x4.h
//* Object : Basic functions to read and write from/to a FLASH
//*
//* 1.0 Jul 15 2002 : ODi Creation
//*----------------------------------------------------------------------------
#ifndef AT91_FLASH16x4_H
#define AT91_FLASH16x4_H
#define CFG_MAX_FLASH_SECT 40
#define FLASH_BANK_SIZE 0x200000 //* 2 MB
#define MAIN_SECT_SIZE 0x10000 //* 64 KB
#define AT91C_FLASH_TIMEOUT 800 //* Erase sector Timeout
#define AT91C_FLASH_WRITETIME 2 //* Write timeout
#define AT91C_FLASH_BUSY 0
#define AT91C_FLASH_READY 1
#define AT91C_FLASH_ERR_TIMEOUT 2
#define AT91C_FLASH_ERR_PROGRAM 3
#define AT91C_FLASH_ERR_SECTOR 4
#define AT91C_FLASH_ERR_ADDRESS 5
#define AT91C_BIT_RDY_MASK 0x0080
#define AT91C_BIT_PROGRAM_ERROR 0x0020
typedef struct _AT91S_FLASH_INFO{
unsigned int (*InitFlashInfo) (struct _AT91S_FLASH_INFO *, unsigned int);
unsigned int size; //* total bank size in bytes
unsigned int sector_count; //* number of erase units
unsigned int flash_id; //* combined device & manufacturer code
unsigned int start[CFG_MAX_FLASH_SECT]; //* physical sector start addresses
}AT91S_FLASH_INFO, *AT91PS_FLASH_INFO;
typedef struct _AT91S_FLASH16x4
{
AT91PS_FLASH_INFO pFlashInfo;
unsigned short *baseAddress;
unsigned int (*ProductId) (struct _AT91S_FLASH16x4 *);
unsigned int (*SectorErase)(struct _AT91S_FLASH16x4 *, unsigned int, unsigned int, void *);
int (*IsSectorErased) (struct _AT91S_FLASH16x4 *, void *);
void (*ChipErase) (struct _AT91S_FLASH16x4 *);
void (*EraseSuspend) (struct _AT91S_FLASH16x4 *);
void (*EraseResume) (struct _AT91S_FLASH16x4 *, void *);
unsigned int (*Program) (struct _AT91S_FLASH16x4 *, void *, unsigned short);
int (*IsProgramed) (struct _AT91S_FLASH16x4 *, void *, unsigned short);
void (*BypassUnlock) (struct _AT91S_FLASH16x4 *);
void (*SectorLockout) (struct _AT91S_FLASH16x4 *, void *address);
}AT91S_FLASH16x4, *AT91PS_FLASH16x4;
typedef unsigned int AT91PF_FLASH16x4ProductId(AT91PS_FLASH16x4);
typedef unsigned int AT91PF_FLASH16x4SectorErase(AT91PS_FLASH16x4, void *);
typedef int AT91PF_FLASH16x4IsSectorErased(AT91PS_FLASH16x4, void *);
typedef void AT91PF_FLASH16x4ChipErase(AT91PS_FLASH16x4);
typedef void AT91PF_FLASH16x4EraseSuspend(AT91PS_FLASH16x4);
typedef void AT91PF_FLASH16x4EraseResume(AT91PS_FLASH16x4, void *);
typedef unsigned int AT91PF_FLASH16x4Program(AT91PS_FLASH16x4, void *, unsigned short);
typedef int AT91PF_FLASH16x4IsProgramed(AT91PS_FLASH16x4, void *, unsigned short );
typedef void AT91PF_FLASH16x4BypassUnlock(AT91PS_FLASH16x4);
typedef void AT91PF_FLASH16x4SectorLockout(AT91PS_FLASH16x4, void *address);
//* ====================================================================================
extern AT91PS_FLASH16x4 AT91F_FLASH16x4Open(
AT91PS_FLASH16x4 , // \arg Pointer to the FLASH service
AT91PS_FLASH_INFO,
unsigned short *);
// This function is called by the application.
// Open FLASH16x4 service. Call with a buffer area pre-allocated to store data being written
extern unsigned int AT91F_FLASH16x4ProductId(AT91PS_FLASH16x4);
extern unsigned int AT91F_FLASH16x4SectorErase(AT91PS_FLASH16x4, unsigned int, unsigned int, void *);
extern int AT91F_FLASH16x4IsSectorErased(AT91PS_FLASH16x4, void *);
extern void AT91F_FLASH16x4ChipErase(AT91PS_FLASH16x4);
extern void AT91F_FLASH16x4EraseSuspend(AT91PS_FLASH16x4);
extern void AT91F_FLASH16x4EraseResume(AT91PS_FLASH16x4, void *);
extern unsigned int AT91F_FLASH16x4Program(AT91PS_FLASH16x4, void *, unsigned short);
extern int AT91F_FLASH16x4IsProgramed(AT91PS_FLASH16x4, void *, unsigned short );
extern void AT91F_FLASH16x4BypassUnlock(AT91PS_FLASH16x4);
extern void AT91F_FLASH16x4SectorLockout(AT91PS_FLASH16x4, void *);
extern unsigned int AT91F_Init16x4Flash(AT91PS_FLASH_INFO, unsigned int );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -