forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-29 6c7e61a54ef9b96f79704f0b965664e89f57dd52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
 
/******************************************************************************
 * 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_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)     ///jlc  µçÔ´ÊÇ·ñ¿É¿Ø»¹Ã»¸ÄÍê
#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_CS_2_test(void);
 
void E2P_Ctrl_Gpio_Init(void);
 
#endif