#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
|