#ifndef _E2P_H_ #define _E2P_H_ #include "define_all.h" #include "spi.h" // E2P´óС #define EEPROM_PHYS_SIZE (256 * 1024) // E2P×Ô¶¨ÒåµÄ¿é´óС #define EEPROM_CFG_BLOCK_SIZE 4096 // E2P×Ô¶¨ÒåµÄ¿éÊýÁ¿ #define EEPROM_CFG_BLOCK_CNT (EEPROM_PHYS_SIZE / EEPROM_CFG_BLOCK_SIZE) // E2PÆðʼµØÖ· #define EEPROM_PHYS_START_ADDR 0 //op cmd #define FM_WREN 0x06 //write enable #define FM_WRDI 0x04 //write disable #define FM_RDSR 0x05 //read status register #define FM_WRSR 0x01 //write status register #define FM_READ 0x03 //read fram memory data #define FM_FSTRD 0x0b //fast read fram memory data #define FM_WRITE 0x02 //write fram memory data #define FM_SLEEP 0xb9 //go to sleep mode #define FM_RDID 0x9f //read fram ID:9 bytes //PWR #define E2P_PWR_PORT GPIOF #define E2P_PWR_PIN GPIO_Pin_15 // E2PƬѡ1 #define E2P_CS1_PORT SPI0_CS_PORT #define E2P_CS1_PIN SPI0_CS1_PIN // E2PƬѡ2 #define E2P_CS2_PORT SPI0_CS_PORT #define E2P_CS2_PIN SPI0_CS2_PIN #define E2P_PWR_ON GPIO_ResetBits(E2P_PWR_PORT,E2P_PWR_PIN) #define E2P_PWR_OFF GPIO_SetBits(E2P_PWR_PORT,E2P_PWR_PIN) #define E2P_CS1_L GPIO_ResetBits(E2P_CS1_PORT,E2P_CS1_PIN)//ƬѡÀ­µÍ #define E2P_CS1_H GPIO_SetBits(E2P_CS1_PORT,E2P_CS1_PIN)//ƬѡÀ­¸ß #define E2P_CS2_L GPIO_ResetBits(E2P_CS2_PORT,E2P_CS2_PIN)//ƬѡÀ­µÍ #define E2P_CS2_H GPIO_SetBits(E2P_CS2_PORT,E2P_CS2_PIN)//ƬѡÀ­¸ß //typedef enum //{ // CS_1 = 0U, // CS_2, //}CS_TYPED_T; //#define FM25V02_CS_LOW(__CS_TYPE__) do{if(__CS_TYPE__ == CS_1){E2P_CS1_L;E2P_CS2_H;}else{E2P_CS2_L;E2P_CS1_H;}}while(0) //#define FM25V02_CS_HIGH do{E2P_CS1_H;E2P_CS2_H;}while(0) #define FM_ReadWriteByte(dat) SpiWriteAndRead(dat) #pragma pack(1) typedef union { double dou; uint8_t data[8]; }double_un; typedef union { float flo; uint8_t data[4]; }float_un; typedef union { uint32_t uio; uint8_t data[4]; }u32_un; typedef union { uint16_t uso; uint8_t data[2]; }u16_un; typedef struct { uint8_t test_u8; uint16_t test_u16; uint32_t test_u32; float test_f; double test_d; }E2P_TEST_DATA_T; #pragma pack() extern E2P_TEST_DATA_T e2p_test_data_g; void E2p_IO_Init(void); u8 EEPROM_MultipleWrite(u8 *data,u32 addr,u16 bytes); void EEPROM_MultipleRead(u8 *data, u32 addr, u16 bytes); void EEPROM_MultipleRead_Continue(u8 *data, u32 addr, u16 bytes); void FM25V02_data_write(uint8_t data,uint32_t addr16); uint8_t FM25V02_data_read(uint32_t addr16); void FM25V02_stat_write(uint8_t stat); uint8_t FM25V02_stat_read(void); void FM25V02_sleep(void); void FM25V02_ID_read(uint8_t *dst); float FM25V02_data_read_float(uint32_t addr16); void FM25V02_data_write_float(uint32_t addr16, float data); double FM25V02_data_read_double(uint32_t addr16); void FM25V02_data_write_double(uint32_t addr16, double data); u32 FM25V02_data_read_uint32(uint32_t addr16); void FM25V02_data_write_uint32(uint32_t addr16, uint32_t data); u32 FM25V02_data_read_uint32_Check(uint32 addr16) ; void FM25V02_data_write_uint32_WRCheck(uint32 addr16, uint32 data); u16 FM25V02_data_read_uint16(uint32_t addr16); void FM25V02_data_write_uint16(uint32_t addr16, uint16_t data); void E2p_Write_Test(uint8_t data_8,uint16_t data_16,uint32_t data_32,float data_f,double data_d); void E2p_Read_Test(void); #endif