Dana
2025-11-30 5a5240e9db90474d8da4e20d241246d3f1fa2950
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
#ifndef __SFDATE_H__
#define __SFDATE_H__
#include "util.h"
 
#define SF_OPT_NA        0x00
#define SF_OPT_SE        0x01
#define SF_OPT_BIGSZ    0x02        //Big size  > 64KB
 
 
#define SF_UNKNOW        0
#define SF_MXIC            1
#define SF_ST            2
#define SF_SST            3
#define SF_ATMEL_AT25F        4
#define SF_ATMEL_AT25FS        5
#define SF_ATMEL_AT2DBF        6
#define SF_WINBOND        7
#define SF_PMC            8
#define SF_MXIC_LIKE        9
#define SF_AMIC            10
#define SF_EON            11
#define SF_ESMT            12
#define SF_GIGA            13
#define SF_FENTECH        14
 
#define SFCMD_WREN_MXIC                0x06
#define SFCMD_WRDI_MXIC                0x04
#define SFCMD_RDID_MXIC                0x9f
#define SFCMD_RDSR_MXIC                0x05
#define SFCMD_WRSR_MXIC                0x01
#define SFCMD_READ_MXIC                0x03
#define SFCMD_SE_MXIC                0x20
#define SFCMD_BE_MXIC                0x52
#define SFCMD_CE_MXIC                0x60
#define SFCMD_PP_MXIC                0x02
#define SFCMD_DP_MXIC                0xb9
#define SFCMD_RDP_MXIC                0xab
#define SFCMD_RES_MXIC                0xab
#define SFCMD_REMS_MXIC                0x90
 
#define SFCMD_WREN_ST                0x06
#define SFCMD_WRDI_ST                0x04
#define SFCMD_RDID_ST                0x9f
#define SFCMD_RDSR_ST                0x05
#define SFCMD_WRSR_ST                0x01
#define SFCMD_READ_ST                0x03
#define SFCMD_PP_ST                0x02
#define SFCMD_SE_ST                0xd8                    //different with MXIC
#define SFCMD_BE_ST                0xc7                    //different with MXIC
#define SFCMD_DP_ST                0xb9
#define SFCMD_RES_ST                0xab
 
#define SFCMD_WREN_SST                0x06
#define SFCMD_WRDI_SST                0x04
#define SFCMD_RDSR_SST                0x05
#define SFCMD_WRSR_SST                0x01
#define SFCMD_EWSR_SST                0x50
#define SFCMD_READ_SST                0x03
#define SFCMD_SE_SST                0x20
#define SFCMD_BE_SST                0x52
#define SFCMD_CE_SST                0x60
#define SFCMD_BP_SST                0x02                    //byte program
#define SFCMD_AAIP_SST                0xaf                    //not support in MXIC
#define SFCMD_REMS_SST                0x90
 
#define SFCMD_WREN_AT25F            0x06
#define SFCMD_WRDI_AT25F            0x04
#define SFCMD_RDSR_AT25F            0x05
#define SFCMD_WRSR_AT25F            0x01
#define SFCMD_READ_AT25F            0x03
#define SFCMD_PP_AT25F                0x02
#define SFCMD_SE_AT25F                0x52                    //different with MXIC
#define SFCMD_CE_AT25F                0x62                    //different with MXIC
#define SFCMD_RDID_AT25F            0x15                    //different with MXIC
 
#define SFCMD_WREN_AT25FS            0x06
#define SFCMD_WRDI_AT25FS            0x04
#define SFCMD_RDSR_AT25FS            0x05
#define SFCMD_WRSR_AT25FS            0x01
#define SFCMD_READ_AT25FS            0x03
#define SFCMD_PP_AT25FS                0x02
#define SFCMD_SE_AT25FS                0x20
#define SFCMD_BE_AT25FS                0x52
#define SFCMD_CE_AT25FS                0x60
#define SFCMD_RDID_AT25FS            0x9f
 
#define SFCMD_WREN_WINBOND            0x06
#define SFCMD_WRDI_WINBOND            0x04
#define SFCMD_RDSR_WINBOND            0x05
#define SFCMD_WRSR_WINBOND            0x01
#define SFCMD_READ_WINBOND            0x03
#define SFCMD_PP_WINBOND            0x02
#define SFCMD_BE_WINBOND            0xd8                    //different with MXIC
#define SFCMD_CE_WINBOND            0xc7                    //different with MXIC
#define SFCMD_SE_WINBOND            0x20
#define SFCMD_RES_WINBOND            0xab
#define SFCMD_REMS_WINBOND            0x90
#define SFCMD_RDID_WINBOND            0x9f                    //W25P80, W25P16, W25P32
 
#define SFCMD_WREN_PMC                0x06
#define SFCMD_WRDI_PMC                0x04
#define SFCMD_RDSR_PMC                0x05
#define SFCMD_WRSR_PMC                0x01
#define SFCMD_READ_PMC                0x03
#define SFCMD_PP_PMC                0x02
#define SFCMD_SE_PMC                0xd7                    //different with MXIC
#define SFCMD_BE_PMC                0xd8                    //different with MXIC
#define SFCMD_CE_PMC                0xc7                    //different with MXIC
#define SFCMD_RES_PMC                0xab
#define SFCMD_RDID_PMC                0x9f                    //Pm25LV010, Pm25LV020, Pm25LV040
 
#define SFCMD_WREN_AMIC                0x06
#define SFCMD_WRDI_AMIC                0x04
#define SFCMD_RDSR_AMIC                0x05
#define SFCMD_WRSR_AMIC                0x01
#define SFCMD_READ_AMIC                0x03
#define SFCMD_PP_AMIC                0x02
#define SFCMD_SE_AMIC                0xd8                    //different with MXIC
#define SFCMD_BE_AMIC                0xc7                    //different with MXIC
#define SFCMD_CE_AMIC                0xc7                    //different with MXIC
#define SFCMD_RES_AMIC                0xab
#define SFCMD_RDID_AMIC                0x9f                    //Pm25LV010, Pm25LV020, Pm25LV040
 
#define SFCMD_WREN_EON                0x06
#define SFCMD_WRDI_EON                0x04
#define SFCMD_RDSR_EON                0x05
#define SFCMD_WRSR_EON                0x01
#define SFCMD_READ_EON                0x03
#define SFCMD_PP_EON                0x02
#define SFCMD_SE_EON                0x20
#define SFCMD_BE_EON                0x52
#define SFCMD_CE_EON                0x60
#define SFCMD_DP_EON                0xB9
#define SFCMD_RDP_EON                0xAB
#define SFCMD_REMS_EON                0x90
#define SFCMD_RDID_EON                0x9F
 
// special type
#define SFCMD_RDSR_AT45DB            0xd7
#define SFCMD_READ_AT45DB            0xe8
 
// manufacturer ID
#define SF_MFRID_CONT                0x7f
#define SF_MFRID_MXIC                0xc2
#define SF_MFRID_ST                    0x20
#define SF_MFRID_SST                0xbf
#define SF_MFRID_ATMEL                0x1f
#define SF_MFRID_WINBOND            0xef
#define SF_MFRID_PMC                0x9d
#define SF_MFRID_AMIC                0x37
#define SF_MFRID_EON                0x1C
#define SF_MFRID_ESMT                0x8C
#define SF_MFRID_GIGA                0xC8
//special manufacturer id 
#define SF_MFRID_FENTECH            0x5E
// product type
//#define SF_UNKNOWN                0x00
 
#define MX25L512                    0x01
#define MX25L1005                    0x02
#define MX25L2005                    0x03
#define MX25L4005                    0x04
#define MX25L8005                    0x05
#define MX25L1605                    0x06
#define MX25L3205                    0x07
#define MX25L6405                    0x08
 
#define STM25P05                    0x10
#define STM25P10                    0x11
 
#define AT25F512                    0x20
#define AT25F1024                    0x21
#define AT25F2048                    0x22
#define AT25F4096                    0x23
#define AT25FS040                    0x30
#define AT45DB011                    0x40
#define AT45DB041                    0x41
 
#define SST25VF512                    0x50
#define SST25VF010                    0x51
 
#define W25P10                        0x70
#define W25P20                        0x71
#define W25P40                        0x72
#define W25P80                        0x73
#define W25P16                        0x74
#define W25P32                        0x75
#define W25B40_BB                    0x76
#define W25B40_TB                    0x77
#define W25X10                        0x78
#define W25X20                        0x79
#define W25X40                        0x7a
#define W25X80                        0x7b
 
#define PM25LV512                    0x80
#define PM25LV010                    0x81
#define PM25LV020                    0x82
#define PM25LV040                    0x83
 
#define A25L05PT                    0x90
#define A25L05PU                    0x91
#define A25L10PT                    0x92
#define A25L10PU                    0x93
#define A25L20PT                    0x94
#define A25L20PU                    0x95
 
#define EN25F05                        0xA0
 
#define SF_OPT_NA                    0x00
#define SF_OPT_SE                    0x01
#define SF_OPT_BIGSZ                    0x02        //Big size  > 64KB
 
 
 
enum
{
    SFCMD_IDX_READ = 0,
    SFCMD_IDX_WREN,
    SFCMD_IDX_PP,
    SFCMD_IDX_WRSR,
    SFCMD_IDX_CE,
    SFCMD_IDX_SE,
    SFCMD_IDX_WRDI
};
 
enum
{
    SFCMD_INFO_MFR = 0,
    SFCMD_INFO_DEVID1,
    SFCMD_INFO_DEVID2,
    SFCMD_INFO_TYPE,
    SFCMD_INFO_CMD_ID,
    SFCMD_INFO_SF_OPT,
};
 
 
extern  BYTE cbSFLib_Cmd[][7];
extern  BYTE cbSFLib_ID[][6];
extern  BYTE cbSFLib_Ver[];
 
extern BYTE ubSFLib_CmdID;
 
extern LONG ubSFLib_GetIDSize();
 
extern BYTE sfManufactureID;
extern BYTE sfDeviceID1;
extern BYTE sfDeviceID2;
 
#endif