forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-07 d0cca79a4aa7efce979c6aed275fe1bb75af4cc4
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
132
133
134
135
136
#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