Sample SPI drivers for a number of the Adesto Technologies flash devices.
cmd_defs.h
Go to the documentation of this file.
1 /*
2  * The Clear BSD License
3  * Copyright (c) 2018 Adesto Technologies Corporation, Inc
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without modification,
7  * are permitted (subject to the limitations in the disclaimer below) provided
8  * that the following conditions are met:
9  *
10  * o Redistributions of source code must retain the above copyright notice, this list
11  * of conditions and the following disclaimer.
12  *
13  * o Redistributions in binary form must reproduce the above copyright notice, this
14  * list of conditions and the following disclaimer in the documentation and/or
15  * other materials provided with the distribution.
16  *
17  * o Neither the name of the copyright holder nor the names of its
18  * contributors may be used to endorse or promote products derived from this
19  * software without specific prior written permission.
20  *
21  * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS LICENSE.
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24  * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
25  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
26  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
29  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
41 #ifndef CMD_DEFS_H_
42 #define CMD_DEFS_H_
43 
44 #include "user_config.h"
45 
46 #define MAXIMUM_TX_BYTES 500
47 #define MAXIMUM_RX_BYTES 500
48 #define MAXIMUM_BUFFER_SIZE 500
49 
50 #define RM331x 1
51 #define AT25XE512C 2
52 #define AT25XE011 3
53 #define AT25XE021A 4
54 #define AT25XE041B 5
55 #define AT25DN256 6
56 #define AT25DN512C 7
57 #define AT25DN011 8
58 #define AT25DF256 9
59 #define AT25DF512C 10
60 #define AT25DF011 11
61 #define AT25DF021A 12
62 #define AT25DF041B 13
63 #define AT25XV021A 14
64 #define AT25XV041B 15
65 #define AT45DB021E 16
66 #define AT45DB041E 17
67 #define AT45DB081E 18
68 #define AT45DB161E 19
69 #define AT45DB321E 20
70 #define AT45DB641E 21
71 #define AT45DQ161 22
72 #define AT45DQ321 23
73 #define AT25PE20 24
74 #define AT25PE40 25
75 #define AT25PE80 26
76 #define AT25PE16 27
77 #define AT25SF041 28
78 #define AT25SF081 29
79 #define AT25SF161 30
80 #define AT25SF321 31
81 #define AT25SF641 32
82 #define AT25SL321 33
83 #define AT25SL641 34
84 #define AT25SL128A 35
85 #define AT25DL081 36
86 #define AT25DL161 37
87 #define AT25DF081A 38
88 #define AT25DF321A 39
89 #define AT25DF641A 40
90 #define AT25QL321 41
91 #define AT25QL641 42
92 #define AT25QL128A 43
93 #define AT25QF641 44
94 
95 // Moneta commands
96 #if (PARTNO == RM331x)|| \
97  (ALL == 1)
98 #define CMD_MONETA_WRITE_ENABLE 0x06
99 #define CMD_MONETA_WRITE_DISABLE 0x04
100 #define CMD_MONETA_READ_SRB1 0x05
101 #define CMD_MONETA_WRITE_SRB1 0x01
102 #define CMD_MONETA_WRITE_SRB2 0x31
103 #define CMD_MONETA_READ_ARRAY 0x03
104 #define CMD_MONETA_WRITE_ARRAY 0x02
105 #define CMD_MONETA_READ_MID 0x9F
106 #define CMD_MONETA_UDPD_MODE1 0x79
107 #endif
108 
126 #if (PARTNO == AT25XE512C) || \
127  (PARTNO == AT25XE011) || \
128  (PARTNO == AT25XE021A) || \
129  (PARTNO == AT25XE041B) || \
130  (PARTNO == AT25DN256) || \
131  (PARTNO == AT25DN512C) || \
132  (PARTNO == AT25DN011) || \
133  (PARTNO == AT25DF256) || \
134  (PARTNO == AT25DF512C) || \
135  (PARTNO == AT25DF011) || \
136  (PARTNO == AT25DF021A) || \
137  (PARTNO == AT25DF041B) || \
138  (PARTNO == AT25XV021A) || \
139  (PARTNO == AT25XV041B) || \
140  (ALL == 1)
141 #define CMD_FUSION_RESET_CONFIRMATION 0xD0
142 #define CMD_FUSION_READ_ARRAY 0x0B
143 #define CMD_FUSION_READ_ARRAY_LF 0x03
144 #define CMD_FUSION_DUAL_OUTPUT_READ 0x3B
145 #define CMD_FUSION_PAGE_ERASE 0x81
146 #define CMD_FUSION_BLOCK_ERASE_4K 0x20
147 #define CMD_FUSION_BLOCK_ERASE_32K 0x52
148 #define CMD_FUSION_CHIP_ERASE 0x60
149 #define CMD_FUSION_PROGRAM_ARRAY 0x02
150 #define CMD_FUSION_WRITE_ENABLE 0x06
151 #define CMD_FUSION_WRITE_DISABLE 0x04
152 #define CMD_FUSION_PROGRAM_OTP_REGISTER 0x9B
153 #define CMD_FUSION_READ_OTP_REGISTER 0x77
154 #define CMD_FUSION_READ_SR 0x05
155 #define CMD_FUSION_WRITE_SRB1 0x01
156 #define CMD_FUSION_WRITE_SRB2 0x31
157 #define CMD_FUSION_RESET 0xF0
158 #define CMD_FUSION_READ_MID 0x9F
159 #define CMD_FUSION_DEEP_POWER_DOWN 0xB9
160 #define CMD_FUSION_RESUME_FROM_DPD 0xAB
161 #define CMD_FUSION_UDPD_MODE 0x79
162 #endif
163 #if (PARTNO == AT25XE021A) || \
164  (PARTNO == AT25XE041B) || \
165  (PARTNO == AT25DF021A) || \
166  (PARTNO == AT25DF041B) || \
167  (PARTNO == AT25XV021A) || \
168  (PARTNO == AT25XV041B) || \
169  (ALL == 1)
170 #define CMD_FUSION_SQNTL_PROGRAM_MODE 0xAD
171 #define CMD_FUSION_DUAL_INPUT_PROGRAM 0xA2
172 #define CMD_FUSION_PROTECT_SECTOR 0x36
173 #define CMD_FUSION_UNPROTECT_SECTOR 0x39
174 #define CMD_FUSION_PROTECTION_REGISTER 0x3C
175 #define CMD_FUSION_ACTIVE_STATUS_INTERRUPT 0x25
176 #endif
177 
178 
194 #if (PARTNO == AT45DB021E) || \
195  (PARTNO == AT45DB041E) || \
196  (PARTNO == AT45DB081E) || \
197  (PARTNO == AT45DB161E) || \
198  (PARTNO == AT45DB321E) || \
199  (PARTNO == AT45DB641E) || \
200  (PARTNO == AT45DQ161) || \
201  (PARTNO == AT45DQ321) || \
202  (PARTNO == AT25PE20) || \
203  (PARTNO == AT25PE40) || \
204  (PARTNO == AT25PE80) || \
205  (PARTNO == AT25PE16) || \
206  (ALL == 1)
207 #define CMD_DATAFLASH_MEM_PAGE_READ 0xD2
208 #define CMD_DATAFLASH_ARRAY_READ_LP 0x01
209 #define CMD_DATAFLASH_ARRAY_READ_LF 0x03
210 #define CMD_DATAFLASH_ARRAY_READ_HF0 0x0B
211 #define CMD_DATAFLASH_ARRAY_READ_HF1 0x1B
212 #define CMD_DATAFLASH_ARRAY_READ_LEG 0xE8
213 #define CMD_DATAFLASH_BUFFER1_READ_LF 0xD1
214 #define CMD_DATAFLASH_BUFFER1_READ_HF 0xD4
215 #define CMD_DATAFLASH_BUFFER1_WRITE 0x84
216 #define CMD_DATAFLASH_BUF1_2MEM_W_ERASE 0x83
217 #define CMD_DATAFLASH_BUF1_2MEM_WO_ERASE 0x88
218 #define CMD_DATAFLASH_MEM_PRGM_BUF1_W_ERASE 0x82
219 #define CMD_DATAFLASH_MEM_PRGM_BUF1_WO_ERASE 0x02
220 #define CMD_DATAFLASH_PAGE_ERASE 0x81
221 #define CMD_DATAFLASH_BLOCK_ERASE 0x50
222 #define CMD_DATAFLASH_SECTOR_ERASE 0x7C
223 #define CMD_DATAFLASH_CHIP_ERASE 0xC794809A
224 #define CMD_DATAFLASH_RD_MOD_WR_THRU_BUF1 0x58
225 #define CMD_DATAFLASH_ENABLE_SECT_PROTECTION 0x3D2A7FA9
226 #define CMD_DATAFLASH_DISABLE_SECT_PROTECTION 0x3D2A7F9A
227 #define CMD_DATAFLASH_ERASE_SECT_PROT_REG 0x3D2A7FCF
228 #define CMD_DATAFLASH_PROGRAM_SECT_PROT_REG 0x3D2A7FFC
229 #define CMD_DATAFLASH_READ_SECT_PROT_REG 0x32
230 #define CMD_DATAFLASH_READ_SECURITY_REG 0x77
231 #define CMD_DATAFLASH_MEM_BUF1_TRANSFER 0x53
232 #define CMD_DATAFLASH_MEM_BUF1_COMPARE 0x60
233 #define CMD_DATAFLASH_AUTO_PAGE_REWRITE1 0x58
234 #define CMD_DATAFLASH_DEEP_POWER_DOWN 0xB9
235 #define CMD_DATAFLASH_RESUME_FROM_DPD 0xAB
236 #define CMD_DATAFLASH_UDPD_MODE 0x79
237 #define CMD_DATAFLASH_READ_SR 0xD7
238 #define CMD_DATAFLASH_READ_MID 0x9F
239 #define CMD_DATAFLASH_CONFIGURE_P2_PG_SIZE 0x3D2A80A6
240 #define CMD_DATAFLASH_CONFIGURE_STD_PG_SIZE 0x3D2A80A7
241 #define CMD_DATAFLASH_SOFTWARE_RESET 0xF0000000
242 #define CMD_DATAFLASH_BUF1_READ_LEG 0x54
243 #define CMD_DATAFLASH_MEM_PAGE_READ_LEG 0x52
244 #define CMD_DATAFLASH_CONTINUOUS_ARRAY_READ_LEG 0x68
245 #define CMD_DATAFLASH_SR_READ_LEG 0x57
246 #endif
247 #if (PARTNO == AT45DQ161) || \
248  (PARTNO == AT45DQ321) || \
249  (ALL == 1)
250 #define CMD_DATAFLASH_DUAL_OUTPUT_READ_ARRAY 0x3B
251 #define CMD_DATAFLASH_QUAD_OUTPUT_READ_ARRAY 0x6B
252 #define CMD_DATAFLASH_DUAL_INPUT_BUFFER1_WRITE 0x24
253 #define CMD_DATAFLASH_DUAL_INPUT_BUFFER2_WRITE 0x27
254 #define CMD_DATAFLASH_QUAD_INPUT_BUFFER1_WRITE 0x44
255 #define CMD_DATAFLASH_QUAD_INPUT_BUFFER2_WRITE 0x47
256 #define CMD_DATAFLASH_READ_CONFIG_REGISTER 0x3F
257 #define CMD_DATAFLASH_QUAD_ENABLE 0x3D2A8166
258 #define CMD_DATAFLASH_QUAD_DISABLE 0x3D2A8167
259 #endif
260 #if (PARTNO == AT45DB021E) || \
261  (PARTNO == AT45DB041E) || \
262  (PARTNO == AT45DB081E) || \
263  (PARTNO == AT45DB161E) || \
264  (PARTNO == AT45DB321E) || \
265  (PARTNO == AT45DB641E) || \
266  (PARTNO == AT45DQ161) || \
267  (PARTNO == AT45DQ321) || \
268  (ALL == 1)
269 #define CMD_DATAFLASH_PROGRAM_ERASE_SUSPEND 0xB0
270 #define CMD_DATAFLASH_PROGRAM_ERASE_RESUME 0xD0
271 #define CMD_DATAFLASH_SECTOR_LOCKDOWN 0x3D2A7F30
272 #define CMD_DATAFLASH_READ_SECT_LOCK_REG 0x35
273 #define CMD_DATAFLASH_FREEZE_SECTOR_LOCKDOWN 0x3455AA40
274 #define CMD_DATAFLASH_PROGRAM_SECURITY_REG 0x9B000000
275 #endif
276 #if (PARTNO == AT45DB021E) || \
277  (PARTNO == AT45DB041E) || \
278  (PARTNO == AT45DB081E) || \
279  (PARTNO == AT45DB161E) || \
280  (PARTNO == AT45DB321E) || \
281  (PARTNO == AT45DB641E) || \
282  (PARTNO == AT45DQ161) || \
283  (PARTNO == AT45DQ321) || \
284  (PARTNO == AT25PE40) || \
285  (PARTNO == AT25PE80) || \
286  (PARTNO == AT25PE16) || \
287  (ALL == 1)
288 #define CMD_DATAFLASH_BUFFER2_READ_LF 0xD3
289 #define CMD_DATAFLASH_BUFFER2_READ_HF 0xD6
290 #define CMD_DATAFLASH_BUFFER2_WRITE 0x87
291 #define CMD_DATAFLASH_BUF2_2MEM_W_ERASE 0x86
292 #define CMD_DATAFLASH_BUF2_2MEM_WO_ERASE 0x89
293 #define CMD_DATAFLASH_MEM_PRGM_BUF2_W_ERASE 0x85
294 #define CMD_DATAFLASH_RD_MOD_WR_THRU_BUF2 0x59
295 #define CMD_DATAFLASH_MEM_BUF2_TRANSFER 0x55
296 #define CMD_DATAFLASH_MEM_BUF2_COMPARE 0x61
297 #define CMD_DATAFLASH_AUTO_PAGE_REWRITE2 0x59
298 #define CMD_DATAFLASH_BUF2_READ_LEG 0x56
299 #endif
300 
321 #if (PARTNO == AT25SF641) || \
322  (PARTNO == AT25SF321) || \
323  (PARTNO == AT25SF161) || \
324  (PARTNO == AT25SF081) || \
325  (PARTNO == AT25SF041) || \
326  (PARTNO == AT25SL128A) || \
327  (PARTNO == AT25SL641) || \
328  (PARTNO == AT25SL321) || \
329  (PARTNO == AT25DL081) || \
330  (PARTNO == AT25DL161) || \
331  (PARTNO == AT25DF081A) || \
332  (PARTNO == AT25DF321A) || \
333  (PARTNO == AT25DF641A) || \
334  (PARTNO == AT25QL128A) || \
335  (PARTNO == AT25QL641) || \
336  (PARTNO == AT25QL321) || \
337  (PARTNO == AT25QF641) || \
338  (ALL == 1)
339 #define CMD_STANDARDFLASH_WRITE_ENABLE 0x06
340 #define CMD_STANDARDFLASH_WRITE_DISABLE 0x04
341 #define CMD_STANDARDFLASH_READ_ARRAY_LF 0x03
342 #define CMD_STANDARDFLASH_READ_ARRAY_HF 0x0B
343 #define CMD_STANDARDFLASH_BYTE_PAGE_PROGRAM 0x02
344 #define CMD_STANDARDFLASH_BLOCK_ERASE_4K 0x20
345 #define CMD_STANDARDFLASH_BLOCK_ERASE_32K 0x52
346 #define CMD_STANDARDFLASH_BLOCK_ERASE_64K 0xD8
347 #define CMD_STANDARDFLASH_CHIP_ERASE1 0x60
348 #define CMD_STANDARDFLASH_CHIP_ERASE2 0xC7
349 #define CMD_STANDARDFLASH_DEEP_POWER_DOWN 0xB9
350 #define CMD_STANDARDFLASH_RESUME_FROM_DPD 0xAB
351 #define CMD_STANDARDFLASH_READ_ID 0x90
352 #define CMD_STANDARDFLASH_READ_MID 0x9F
353 #endif
354 #if (PARTNO == AT25SF321) || \
355  (PARTNO == AT25SF161) || \
356  (PARTNO == AT25SF081) || \
357  (PARTNO == AT25SF041) || \
358  (ALL == 1)
359 #define CMD_STANDARDFLASH_WRITE_SR 0x01
360 #endif
361 #if (PARTNO == AT25SF641) || \
362  (PARTNO == AT25SL128A) || \
363  (PARTNO == AT25SL641) || \
364  (PARTNO == AT25SL321) || \
365  (PARTNO == AT25DL081) || \
366  (PARTNO == AT25DL161) || \
367  (PARTNO == AT25DF081A) || \
368  (PARTNO == AT25DF321A) || \
369  (PARTNO == AT25DF641A) || \
370  (PARTNO == AT25QL128A) || \
371  (PARTNO == AT25QL641) || \
372  (PARTNO == AT25QL321) || \
373  (PARTNO == AT25QF641) || \
374  (ALL == 1)
375 #define CMD_STANDARDFLASH_WRITE_SRB1 0x01
376 #define CMD_STANDARDFLASH_WRITE_SRB2 0x31
377 #endif
378 #if (PARTNO == AT25SF641) || \
379  (PARTNO == AT25SF321) || \
380  (PARTNO == AT25SF161) || \
381  (PARTNO == AT25SF081) || \
382  (PARTNO == AT25SF041) || \
383  (PARTNO == AT25SL128A) || \
384  (PARTNO == AT25SL641) || \
385  (PARTNO == AT25SL321) || \
386  (PARTNO == AT25QL128A) || \
387  (PARTNO == AT25QL641) || \
388  (PARTNO == AT25QL321) || \
389  (PARTNO == AT25QF641) || \
390  (ALL == 1)
391 #define CMD_STANDARDFLASH_WE_FOR_VOLATILE_SR 0x50
392 #define CMD_STANDARDFLASH_WRITE_SR 0x01
393 #define CMD_STANDARDFLASH_READ_SRB1 0x05
394 #define CMD_STANDARDFLASH_READ_SRB2 0x35
395 #define CMD_STANDARDFLASH_DUAL_OUTPUT_READ 0x3B
396 #define CMD_STANDARDFLASH_DUAL_IO_READ 0xBB
397 #define CMD_STANDARDFLASH_QUAD_OUTPUT_READ 0x6B
398 #define CMD_STANDARDFLASH_QUAD_IO_READ 0xEB
399 #define CMD_STANDARDFLASH_CONT_READ_MODE_RST_DUAL 0xFFFF
400 #define CMD_STANDARDFLASH_CONT_READ_MODE_RST_QUAD 0xFF
401 #define CMD_STANDARDFLASH_ERASE_SECURTIY_REG_PAGE 0x44
402 #define CMD_STANDARDFLASH_PROGRAM_SECURITY_REG_PAGE 0x42
403 #define CMD_STANDARDFLASH_READ_SECURITY_REG_PAGE 0x48
404 #define CMD_STANDARDFLASH_RESUME_FROM_DPD_READ_ID 0xAB
405 #define CMD_STANDARDFLASH_QUAD_PAGE_PROGRAM 0x33
406 #endif
407 #if (PARTNO == AT25SF641) || \
408  (PARTNO == AT25SF321) || \
409  (PARTNO == AT25SF161) || \
410  (PARTNO == AT25SL128A) || \
411  (PARTNO == AT25SL641) || \
412  (PARTNO == AT25SL321) || \
413  (PARTNO == AT25QL128A) || \
414  (PARTNO == AT25QL641) || \
415  (PARTNO == AT25QL321) || \
416  (PARTNO == AT25QF641) || \
417  (ALL == 1)
418 #define CMD_STANDARDFLASH_ERASE_PROGRAM_SUSPEND 0x75
419 #define CMD_STANDARDFLASH_ERASE_PROGRAM_RESUME 0x7A
420 #endif
421 #if (PARTNO == AT25SF641) || \
422  (PARTNO == AT25SL128A) || \
423  (PARTNO == AT25SL641) || \
424  (PARTNO == AT25SL321) || \
425  (PARTNO == AT25QL128A) || \
426  (PARTNO == AT25QL641) || \
427  (PARTNO == AT25QL321) || \
428  (PARTNO == AT25QF641) || \
429  (ALL == 1)
430 #define CMD_STANDARDFLASH_ENABLE_QPI 0x38
431 #define CMD_STANDARDFLASH_DISABLE_QPI 0xFF
432 #define CMD_STANDARDFLASH_ENABLE_RESET 0x66
433 #define CMD_STANDARDFLASH_RESET 0x99
434 #define CMD_STANDARDFLASH_ENTER_SECURED_OTP 0xB1
435 #define CMD_STANDARDFLASH_EXIT_SECURED_OTP 0xC1
436 #endif
437 #if (PARTNO == AT25DL081) || \
438  (PARTNO == AT25DL161) || \
439  (PARTNO == AT25DF081A) || \
440  (PARTNO == AT25DF321A) || \
441  (PARTNO == AT25DF641A) || \
442  (ALL == 1)
443 #define CMD_STANDARDFLASH_READ_SR 0x05
444 #define CMD_STANDARDFLASH_DUAL_BYTE_PAGE_PROGRAM 0xA2
445 #define CMD_STANDARDFLASH_PROGRAM_ERASE_SUSPEND 0xB0
446 #define CMD_STANDARDFLASH_PROGRAM_ERASE_RESUME 0xD0
447 #define CMD_STANDARDFLASH_PROTECT_SECTOR 0x36
448 #define CMD_STANDARDFLASH_UNPROTECT_SECTOR 0x39
449 #define CMD_STANDARDFLASH_READ_SECT_PROT_REG 0x3C
450 #define CMD_STANDARDFLASH_FREEZE_LOCKDOWN_STATE 0x34
451 #define CMD_STANDARDFLASH_READ_LOCKDOWN_REG 0x35
452 #define CMD_STANDARDFLASH_PROGRAM_OTP_REG 0x9B
453 #endif
454 
455 #if (PARTNO < 1)
456 #error Invalid PARTNO.
457 #elif (PARTNO < 2)
458 #define MONETA_DEVICE
459 #elif (PARTNO < 16)
460 #define FUSION_DEVICE
461 #elif (PARTNO < 28)
462 #define DATAFLASH_DEVICE
463 #elif (PARTNO < 45)
464 #define STANDARDFLASH_DEVICE
465 #else
466 #error Part number not defined.
467 #endif
468 
469 #endif /* CMD_DEFS_H_ */
Project declarations exist here.