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

📄 smi.h.svn-base

📁 Spearhead2000 的 USB驱动程序
💻 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 + -