/****************************************************************************** * 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 (256*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_PWR_PORT GPIOC #define EEPROM_PWR_PIN GPIO_Pin_11 #define EEPROM_CS1_PORT GPIOC #define EEPROM_CS1_PIN GPIO_Pin_6 #define EEPROM_CS2_PORT GPIOC #define EEPROM_CS2_PIN GPIO_Pin_14 #define EEPROM_WP_PORT GPIOC #define EEPROM_WP_PIN GPIO_Pin_10 #define EEPROM_CS_1 0 #define EEPROM_CS_2 1 #define E2P_PWR_ON GPIO_ResetBits(EEPROM_PWR_PORT,EEPROM_PWR_PIN) //³¤¸ß£¬µÍÓÐЧ #define E2P_PWR_OFF GPIO_SetBits(EEPROM_PWR_PORT,EEPROM_PWR_PIN) #define EEPROM_CS_LOW GPIO_ResetBits(EEPROM_CS1_PORT,EEPROM_CS1_PIN) #define EEPROM_CS_HIGH GPIO_SetBits(EEPROM_CS1_PORT,EEPROM_CS1_PIN) #define EEPROM_CS_ENABLE do{EEPROM_CS_LOW;EEPROM_CS_2_HIGH;}while(0) #define EEPROM_CS_DISABLE do{EEPROM_CS_HIGH;EEPROM_CS_2_HIGH;}while(0) #define EEPROM_CS_2_LOW GPIO_ResetBits(EEPROM_CS2_PORT,EEPROM_CS2_PIN) #define EEPROM_CS_2_HIGH GPIO_SetBits(EEPROM_CS2_PORT,EEPROM_CS2_PIN) #define EEPROM_CS_2_ENABLE do{EEPROM_CS_2_LOW;EEPROM_CS_HIGH;}while(0) #define EEPROM_CS_2_DISABLE do{EEPROM_CS_HIGH;EEPROM_CS_2_HIGH;}while(0) //¿ØÖÆÊ¹ÄÜ£¬E2P²Ù×÷ǰºóµ÷Óà #define EEPROM_CTRL_ENABLE do{E2P_Ctrl_Gpio_Init();E2P_PWR_ON;EEPROM_CS_ENABLE;}while(0) #define EEPROM_CTRL_DISABLE do{E2P_Ctrl_Gpio_Init();}while(0) #define EEPROM_2_CTRL_ENABLE do{E2P_Ctrl_Gpio_Init();E2P_PWR_ON;EEPROM_CS_2_ENABLE;}while(0) #define EEPROM_2_CTRL_DISABLE do{E2P_Ctrl_Gpio_Init();}while(0) #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_test(void); void E2P_Ctrl_Gpio_Init(void); #endif