📄 smi.h.svn-base
字号:
/*****************************************************************************//* *//* -- File: SMI.h *//* -- Author: Maurizio Costagliola *//* -- Description: Header SMI *//* *//* -- Modification History: - 1.0 *//*****************************************************************************/#ifdef __cplusplusextern "C" { /* C declarations in C++ */#endif#define SMI_BASE 0x1000F000#define FLASH_START_ADDRESS 0x96000000#define SMIBANK0_BASE (FLASH_START_ADDRESS + 0x00000000)#define SMIBANK1_BASE (FLASH_START_ADDRESS + 0x01000000)#define SMIBANK2_BASE (FLASH_START_ADDRESS + 0x02000000)#define SMIBANK3_BASE (FLASH_START_ADDRESS + 0x03000000)#define FLASH_BANK_SIZE 0x00800000#define CHECK_TFF 0x00000100#define CHECK_WCF 0x00000200#define BANK0 0#define BANK1 1#define BANK2 2#define BANK3 3typedef struct SMIController{ unsigned int SMI_CR1; /* 1000F000 */ unsigned int SMI_CR2; /* 1000F004 */ unsigned int SMI_SR; /* 1000F008 */ unsigned int SMI_TR; /* 1000F00C */ unsigned int SMI_RR; /* 1000F010 */} SMIController;#define WM0 0x00001000 /* WM Bank 0 */#define WM1 0x00002000 /* WM Bank 1 */#define WM2 0x00004000 /* WM Bank 2 */#define WM3 0x00008000 /* WM Bank 3 */#define SMICntl ((volatile struct SMIController*) (SMI_BASE))/* Fields position *//* Control values *//* FLASH MEMORIES */#define ST_M25P64 0x00172020/* STATUS_REG */#define INT_WCF_CLR 0xFFFFFDFF /* clear: WCF clear */#define INT_TFF_CLR 0xFFFFFEFF /* clear: TFF clear */#define WIP_BIT 0x00000001 /* WIP Bit of SPI SR on SMI SR */#define WEL_BIT 0x00000002 /* WEL Bit of SPI SR on SMI SR */#define RSR 0x00000005 /* Read Status regiser */#define TFF 0x00000100 /* Transfer Finished FLag */#define WCF 0x00000200 /* Transfer Finished FLag */#define ERF1 0x00000400 /* Error Flag 1 */#define ERF2 0x00000800 /* Error Flag 2 *//* CONTROL REG 1 */#define BANK_EN 0x0000000F /* enables all banks */#define DSEL_TIME 0x00000050 /* Deselect time 5+1 SMI_CK periods */#define PRESCAL5 0x00000500 /* AHB_CK prescaling value */#define PRESCALA 0x00000A00 /* AHB_CK prescaling value */#define SW_MODE 0x10000000 /* enables SW Mode */#define WB_MODE 0x20000000 /* Write Burst Mode */#define FAST_MODE 0x00008000 /* Fast Mode *//* CONTROL REG 2 */#define RD_STATUS_REG 0x00000400 /* reads status reg */#define WE 0x00000800 /* Write Enable */#define BANK0_SEL 0x00000000 /* Select Banck0 */#define BANK1_SEL 0x00001000 /* Select Banck1 */#define BANK2_SEL 0x00002000 /* Select Banck2 */#define BANK3_SEL 0x00003000 /* Select Banck3 */#define SEND 0x00000080 /* Send data */#define TX_LEN_1 0x00000001 /* data length = 1 byte */#define TX_LEN_2 0x00000002 /* data length = 2 byte */#define TX_LEN_3 0x00000003 /* data length = 3 byte */#define TX_LEN_4 0x00000004 /* data length = 4 byte */#define RX_LEN_1 0x00000010 /* data length = 1 byte */#define RX_LEN_2 0x00000020 /* data length = 2 byte */#define RX_LEN_3 0x00000030 /* data length = 3 byte */#define RX_LEN_4 0x00000040 /* data length = 4 byte */#define TFIE 0x00000100 /* Transmission Flag Interrupt Enable */#define WCIE 0x00000200 /* Write Complete Interrupt Enable *//* TR REG */#define READ_ID 0x0000009F /* Read Identification */#define BULK_ERASE 0x000000C7 /* BULK erase */#define SECTOR_ERASE 0x000000D8 /* SECTOR erase */#define BANK_SIZE 64 * 1024 /* Specific Bank Size = 64KBytes */#define WRITE_ENABLE 0x00000006 /* Wenable command to FLASH */extern void smi_init(void);extern void smi_prog(void);extern void smi_read(unsigned int*, unsigned int*, unsigned int, unsigned int);extern int smi_write(unsigned int*, unsigned int*, unsigned int, unsigned int);extern int smi_bank_erase(unsigned int);extern int smi_sector_erase(unsigned int, unsigned int);extern void smi_test(void);extern unsigned int smi_read_id(unsigned int bank);extern unsigned int smi_read_sr(unsigned int bank);#ifdef __cplusplus} /* C declarations in C++ */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -