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

📄 flash16x4.h

📁 这是ATMEL公司
💻 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 + -