forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-14 ec1ec68ba7d175f39f5d4e066663cf29fa7c262a
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
 
/******************************************************************************
 * 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_6
 
#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_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       do{GPIO_ResetBits(EEPROM_CS1_PORT,EEPROM_CS1_PIN);GPIO_SetBits(EEPROM_CS2_PORT,EEPROM_CS2_PIN);}while(0)
#define  EEPROM_CS_HIGH      do{GPIO_SetBits(EEPROM_CS1_PORT,EEPROM_CS1_PIN);GPIO_SetBits(EEPROM_CS2_PORT,EEPROM_CS2_PIN);}while(0)
 
///×¢Ò⣬ǧÍò²»ÒªÔÙÖжÏÖжÁд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