📄 amd29f010.h
字号:
/*
* File: amd29f010.h
* Purpose: Header file containing data definitions for the
* AMD 29F010 Flash memory device. 128Kx8
*
* Notes:
*
* Author: Eric DeVolder
* Date: 7-8-96
*
* Modifications:
*
*/
#ifndef _AMD29F010_H
#define _AMD29F010_H
/*
* The AMD29F010 FLASH devices. These devices are 128K x 8 devices.
*/
#define AMD29F010_SECTOR_SIZE (16 * 1024)
#define AMD29F010_SECTORS (8)
#define AMD29F010_ADDR1 (0x5555)
#define AMD29F010_ADDR2 (0x2AAA)
#if (defined(AMD29F010_32BIT_WIDE))
typedef volatile uint32 AMD29F010_CELL;
#define AMD29F010_READ_CMD1 (0xAAAAAAAA)
#define AMD29F010_READ_CMD2 (0x55555555)
#define AMD29F010_READ_CMD3 (0xF0F0F0F0)
#define AMD29F010_AUTOSELECT_CMD1 (0xAAAAAAAA)
#define AMD29F010_AUTOSELECT_CMD2 (0x55555555)
#define AMD29F010_AUTOSELECT_CMD3 (0x90909090)
#define AMD29F010_BYTEPROG_CMD1 (0xAAAAAAAA)
#define AMD29F010_BYTEPROG_CMD2 (0x55555555)
#define AMD29F010_BYTEPROG_CMD3 (0xA0A0A0A0)
#define AMD29F010_CHIPERASE_CMD1 (0xAAAAAAAA)
#define AMD29F010_CHIPERASE_CMD2 (0x55555555)
#define AMD29F010_CHIPERASE_CMD3 (0x80808080)
#define AMD29F010_CHIPERASE_CMD4 (0xAAAAAAAA)
#define AMD29F010_CHIPERASE_CMD5 (0x55555555)
#define AMD29F010_CHIPERASE_CMD6 (0x10101010)
#define AMD29F010_SECTORERASE_CMD1 (0xAAAAAAAA)
#define AMD29F010_SECTORERASE_CMD2 (0x55555555)
#define AMD29F010_SECTORERASE_CMD3 (0x80808080)
#define AMD29F010_SECTORERASE_CMD4 (0xAAAAAAAA)
#define AMD29F010_SECTORERASE_CMD5 (0x55555555)
#define AMD29F010_SECTORERASE_CMD6 (0x30303030)
#define AMD29F010_AMD_CODE (0x01010101)
#define AMD29F010_DEVICE_CODE (0x20202020)
#define AMD29F010_SECTORERASE_DONE (0x80808080)
#define AMD29F010_DATA_POLL_MASK (0x80808080)
#define AMD29F010_TIME_EXCEEDED (0x20202020)
#endif
#if (defined(AMD29F010_16BIT_WIDE))
typedef volatile uint16 AMD29F010_CELL;
#define AMD29F010_READ_CMD1 (0xAAAA)
#define AMD29F010_READ_CMD2 (0x5555)
#define AMD29F010_READ_CMD3 (0xF0F0)
#define AMD29F010_AUTOSELECT_CMD1 (0xAAAA)
#define AMD29F010_AUTOSELECT_CMD2 (0x5555)
#define AMD29F010_AUTOSELECT_CMD3 (0x9090)
#define AMD29F010_BYTEPROG_CMD1 (0xAAAA)
#define AMD29F010_BYTEPROG_CMD2 (0x5555)
#define AMD29F010_BYTEPROG_CMD3 (0xA0A0)
#define AMD29F010_CHIPERASE_CMD1 (0xAAAA)
#define AMD29F010_CHIPERASE_CMD2 (0x5555)
#define AMD29F010_CHIPERASE_CMD3 (0x8080)
#define AMD29F010_CHIPERASE_CMD4 (0xAAAA)
#define AMD29F010_CHIPERASE_CMD5 (0x5555)
#define AMD29F010_CHIPERASE_CMD6 (0x1010)
#define AMD29F010_SECTORERASE_CMD1 (0xAAAA)
#define AMD29F010_SECTORERASE_CMD2 (0x5555)
#define AMD29F010_SECTORERASE_CMD3 (0x8080)
#define AMD29F010_SECTORERASE_CMD4 (0xAAAA)
#define AMD29F010_SECTORERASE_CMD5 (0x5555)
#define AMD29F010_SECTORERASE_CMD6 (0x3030)
#define AMD29F010_AMD_CODE (0x0101)
#define AMD29F010_DEVICE_CODE (0x2020)
#define AMD29F010_SECTORERASE_DONE (0x8080)
#define AMD29F010_DATA_POLL_MASK (0x8080)
#define AMD29F010_TIME_EXCEEDED (0x2020)
#endif
#if (defined(AMD29F010_8BIT_WIDE))
typedef volatile uint8 AMD29F010_CELL;
#define AMD29F010_READ_CMD1 (0xAA)
#define AMD29F010_READ_CMD2 (0x55)
#define AMD29F010_READ_CMD3 (0xF0)
#define AMD29F010_AUTOSELECT_CMD1 (0xAA)
#define AMD29F010_AUTOSELECT_CMD2 (0x55)
#define AMD29F010_AUTOSELECT_CMD3 (0x90)
#define AMD29F010_BYTEPROG_CMD1 (0xAA)
#define AMD29F010_BYTEPROG_CMD2 (0x55)
#define AMD29F010_BYTEPROG_CMD3 (0xA0)
#define AMD29F010_CHIPERASE_CMD1 (0xAA)
#define AMD29F010_CHIPERASE_CMD2 (0x55)
#define AMD29F010_CHIPERASE_CMD3 (0x80)
#define AMD29F010_CHIPERASE_CMD4 (0xAA)
#define AMD29F010_CHIPERASE_CMD5 (0x55)
#define AMD29F010_CHIPERASE_CMD6 (0x10)
#define AMD29F010_SECTORERASE_CMD1 (0xAA)
#define AMD29F010_SECTORERASE_CMD2 (0x55)
#define AMD29F010_SECTORERASE_CMD3 (0x80)
#define AMD29F010_SECTORERASE_CMD4 (0xAA)
#define AMD29F010_SECTORERASE_CMD5 (0x55)
#define AMD29F010_SECTORERASE_CMD6 (0x30)
#define AMD29F010_AMD_CODE (0x01)
#define AMD29F010_DEVICE_CODE (0x20)
#define AMD29F010_SECTORERASE_DONE (0x80)
#define AMD29F010_DATA_POLL_MASK (0x80)
#define AMD29F010_TIME_EXCEEDED (0x20)
#endif
typedef enum
{
AMD29F010_SECTOR_0 = 0,
AMD29F010_SECTOR_1 = 1,
AMD29F010_SECTOR_2 = 2,
AMD29F010_SECTOR_3 = 3,
AMD29F010_SECTOR_4 = 4,
AMD29F010_SECTOR_5 = 5,
AMD29F010_SECTOR_6 = 6,
AMD29F010_SECTOR_7 = 7
} AMD29F010_SECTOR;
/*****************************************************************/
typedef volatile struct
{
AMD29F010_CELL manuf;
AMD29F010_CELL id;
AMD29F010_CELL dataA[AMD29F010_ADDR2 - 2];
AMD29F010_CELL cmdreg2;
AMD29F010_CELL dataB[AMD29F010_ADDR1 - AMD29F010_ADDR2 - 1];
AMD29F010_CELL cmdreg1;
} AMD29F010_DEVICE;
typedef volatile struct
{
AMD29F010_CELL data[AMD29F010_SECTOR_SIZE];
} AMD29F010_SECTORDATA;
typedef volatile union
{
AMD29F010_DEVICE device;
AMD29F010_SECTORDATA sector[AMD29F010_SECTORS];
} AMD29F010;
/*****************************************************************/
int
amd29f010_id (AMD29F010 *);
int
amd29f010_sector_erase (AMD29F010 *, AMD29F010_SECTOR);
int
amd29f010_write (AMD29F010 *, void *, unsigned,
AMD29F010_SECTOR, void (*)(void));
/*****************************************************************/
#endif /* _AMD29F010_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -