|
/******************************************************************************
|
* Copyright (C) 2024-2025 HangZhou SiZhu Co.,LTD.
|
*
|
*-----------------------------------------------------------------------------
|
* File: eeprom.h
|
* Description:
|
* Author:
|
* Date: 2024-04
|
*****************************************************************************/
|
|
/* ----------------------- Platform includes --------------------------------*/
|
|
#ifndef __EEPROM_H
|
#define __EEPROM_H
|
#include "define_all.h"
|
#include "spi.h"
|
|
/******************************************************************************
|
* EEPÐͺŠGT25C256
|
* EEP´óС 256Kb
|
*****************************************************************************/
|
|
/***********************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
|
/***********************op cmd***********************************************/
|
|
|
/***********************EEP ״̬¼Ä´æÆ÷ д±£»¤ÅäÖÃ***************************/
|
#define WP_EN 0x80
|
#define SP_AREA_NONE 0x00
|
#define SP_AREA_QUARTER 0x02
|
#define SP_AREA_HALF 0x04
|
#define SP_AREA_ALL 0x0C
|
/***********************EEP ״̬¼Ä´æÆ÷ д±£»¤ÅäÖÃ***************************/
|
|
|
/***********************EEP »ù±¾ÐÅÏ¢ÅäÖÃ*************************************/
|
|
#define EEPROM_PHYS_SIZE (32*1024) //EEP´óС
|
#define EEPROM_ADDR_BYTES2 //СÄÚ´æEEPÊý¾ÝµØÖ·Îª2×Ö½ÚÐ趨Òå
|
#define EEPROM_CFG_BLOCK_SIZE 4096 //EEP×Ô¶¨Òå¿é´óС
|
#define EEPROM_CFG_BLOCK_CNT (EEPROM_PHYS_SIZE/EEPROM_CFG_BLOCK_SIZE)//EEP×Ô¶¨Òå¿éÊýÁ¿
|
#define EEPROM_PAGE_SIZE 64 //EEPÒ³´óС
|
#define EEPROM_PHYS_START_ADDR 0 //EEPÆðʼµØÖ·
|
#define EEPROM_PHYS_END_ADDR (EEPROM_PHYS_SIZE - 1) //EEP½áÊøµØÖ·
|
|
/***********************EEP »ù±¾ÐÅÏ¢ÅäÖÃ**************************************/
|
|
|
|
|
#define EEPROM_CS_1 0
|
#define EEPROM_CS_2 1
|
|
#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 EEPROM_CS_LOW // {if(Fram_cs_flag!=1){GPIO_ResetBits(FRAM_CS_GROUP,FRAM_CS_NUM);GPIO_SetBits(FRAM_CS2_GROUP,FRAM_CS2_NUM);}else{EEPROM_CS_2_LOW}}//CS = 0
|
#define EEPROM_CS_HIGH // {GPIO_SetBits(FRAM_CS_GROUP,FRAM_CS_NUM);GPIO_SetBits(FRAM_CS2_GROUP,FRAM_CS2_NUM);}//CS = 1
|
|
///×¢Ò⣬ǧÍò²»ÒªÔÙÖжÏÖжÁдEEPROM£¬Èç¹ûÖжÏ֮ǰÊÇÔÚ²Ù×÷EEPROM£¬ÓÖÔÚÖжÏÖжÁдEEPROM£¬Ôò¿ÉÄܳöÎÊÌâ
|
#define EEPROM_CS_2_LOW {GPIO_ResetBits(FRAM_CS2_GROUP,FRAM_CS2_NUM);GPIO_SetBits(FRAM_CS_GROUP,FRAM_CS_NUM);}//CS_2 = 0
|
#define EEPROM_CS_2_HIGH GPIO_SetBits(FRAM_CS2_GROUP,FRAM_CS2_NUM) //CS_2 = 1
|
|
#define FM_ReadWriteByte(dat) SpiWriteAndRead(dat)
|
#define EEPROM_ioconfig() SPI3_ioconfig()
|
|
uint8_t EEPROM_MultipleWrite(uint8_t *data,u32 addr,u16 bytes);
|
void EEPROM_MultipleRead(uint8_t *data, u32 addr, u16 bytes);
|
|
void EEPROM_data_write(uint8 data,u32 addr16);
|
uint8 EEPROM_data_read(uint32 addr16);
|
void EEPROM_stat_write(uint8 stat);
|
uint8 EEPROM_stat_read(void);
|
void EEPROM_sleep(void);
|
void EEPROM_ID_read(uint8 *dst);
|
float EEPROM_data_read_float(uint32 addr16);
|
void EEPROM_data_write_float(uint32 addr16, float data);
|
double EEPROM_data_read_double(uint32 addr16);
|
void EEPROM_data_write_double(uint32 addr16, double data);
|
u32 EEPROM_data_read_uint32(uint32 addr16);
|
void EEPROM_data_write_uint32(uint32 addr16, uint32 data);
|
u16 EEPROM_data_read_uint16(uint32 addr16);
|
void EEPROM_data_write_uint16(uint32 addr16, uint16 data);
|
void EEPROM_WP_enable(void);
|
void EEPROM_WP_disable(void);
|
|
|
extern volatile uint8_t Fram_cs_flag ;
|
//uint8_t EEPROM_MultipleWrite_CS_2(uint8_t *data,u32 addr,u16 bytes);
|
|
//uint8_t EEPROM_MultipleRead_CS_2(uint8_t *data,u32 addr,u16 bytes);
|
|
void EEPROM_CS_2_test(void);
|
|
#endif
|