-
Notifications
You must be signed in to change notification settings - Fork 2k
/
at24cxxx_defines.h
474 lines (451 loc) · 12.4 KB
/
at24cxxx_defines.h
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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
/*
* Copyright (C) 2019 Otto-von-Guericke-Universität Magdeburg
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup drivers_at24cxxx
* @{
*
* @file
* @brief Constants for various I2C EEPROM devices.
*
* All the devices listed below are accessible as pseudomodules.
*
* @note Even though the library is called "AT24CXXX", the support for
* I2C EEPROMs is not limited to Atmel/Microchip devices.
*
* @author Fabian Hüßler <fabian.huessler@ovgu.de>
*/
#ifndef AT24CXXX_DEFINES_H
#define AT24CXXX_DEFINES_H
#include "kernel_defines.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Delay between two poll attempts
*/
#define AT24CXXX_POLL_DELAY_US (1000UL)
/**
* @brief Clear byte
*/
#define AT24CXXX_CLEAR_BYTE (0x00)
/**
* @brief AT24CXXX default device address
*
* Different AT24CXXX types may have a different address byte
* format. Some may include a portion of the data word address.
* Some may have a 0, 1, 2 or 3 bit wide address space.
* But all types have a 7 bit I2C address which starts with
* 1010. [1, 0, 1, 0, ?, ?, ?, r/w]
* \__7 bit address__/
*/
#define AT24CXXX_DEF_DEV_ADDR (0x50)
/**
* @name AT24C01A constants
* @{
*/
/**
* @brief 128 byte memory
*/
#define AT24C01A_EEPROM_SIZE (128U)
/**
* @brief 16 pages of 8 bytes each
*/
#define AT24C01A_PAGE_SIZE (8U)
/**
* @brief Delay to complete write operation
*/
#define AT24C01A_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C01A_MAX_POLLS (1 + (AT24C01A_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C02 constants
* @{
*/
/**
* @brief 256 byte memory
*/
#define AT24C02_EEPROM_SIZE (256U)
/**
* @brief 32 pages of 8 bytes
*/
#define AT24C02_PAGE_SIZE (8U)
/**
* @brief Delay to complete write operation
*/
#define AT24C02_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C02_MAX_POLLS (1 + (AT24C02_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C04 constants
* @{
*/
/**
* @brief 512 byte memory
*/
#define AT24C04_EEPROM_SIZE (512U)
/**
* @brief 32 pages of 16 bytes each
*/
#define AT24C04_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define AT24C04_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C04_MAX_POLLS (1 + (AT24C04_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C08A constants
* @{
*/
/**
* @brief 1 kiB memory
*/
#define AT24C08A_EEPROM_SIZE (1024U)
/**
* @brief 64 pages of 16 bytes each
*/
#define AT24C08A_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define AT24C08A_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C08A_MAX_POLLS (1 + (AT24C08A_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C16A constants
* @{
*/
/**
* @brief 2 kiB memory
*/
#define AT24C16A_EEPROM_SIZE (2048U)
/**
* @brief 128 pages of 16 bytes each
*/
#define AT24C16A_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define AT24C16A_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C16A_MAX_POLLS (1 + (AT24C16A_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C32 constants
* @{
*/
/**
* @brief 4 kiB memory
*/
#define AT24C32_EEPROM_SIZE (4096U)
/**
* @brief 256 pages of 32 bytes each
*/
#define AT24C32_PAGE_SIZE (32U)
/**
* @brief Delay to complete write operation
*/
#define AT24C32_PAGE_WRITE_DELAY_US (10000U)
/**
* @brief Number of poll attempts
*/
#define AT24C32_MAX_POLLS (1 + (AT24C32_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C64 constants
* @{
*/
/**
* @brief 8 kiB memory
*/
#define AT24C64_EEPROM_SIZE (8192U)
/**
* @brief 256 pages of 32 bytes each
*/
#define AT24C64_PAGE_SIZE (32U)
/**
* @brief Delay to complete write operation
*/
#define AT24C64_PAGE_WRITE_DELAY_US (10000U)
/**
* @brief Number of poll attempts
*/
#define AT24C64_MAX_POLLS (1 + (AT24C64_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C128 constants
* @{
*/
/**
* @brief 16 kiB memory
*/
#define AT24C128_EEPROM_SIZE (16384U)
/**
* @brief 256 pages of 64 bytes each
*/
#define AT24C128_PAGE_SIZE (64U)
/**
* @brief Delay to complete write operation
*/
#define AT24C128_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C128_MAX_POLLS (1 + (AT24C128_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C256 constants
* @{
*/
/**
* @brief 32 kiB memory
*/
#define AT24C256_EEPROM_SIZE (32768U)
/**
* @brief 512 pages of 64 bytes each
*/
#define AT24C256_PAGE_SIZE (64U)
/**
* @brief Delay to complete write operation
*/
#define AT24C256_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C256_MAX_POLLS (1 + (AT24C256_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C512 constants
* @{
*/
/**
* @brief 64 kiB memory
*/
#define AT24C512_EEPROM_SIZE (65536U)
/**
* @brief 512 pages of 128 bytes each
*/
#define AT24C512_PAGE_SIZE (128U)
/**
* @brief Delay to complete write operation
*/
#define AT24C512_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C512_MAX_POLLS (1 + (AT24C512_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24CS04 constants
* @{
*/
/**
* @brief 512 Byte memory
*/
#define AT24CS04_EEPROM_SIZE (512U)
/**
* @brief 32 pages of 16 bytes each
*/
#define AT24CS04_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define AT24CS04_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24CS04_MAX_POLLS (1 + (AT24CS04_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24CS08 constants
* @{
*/
/**
* @brief 1 kiB memory
*/
#define AT24CS08_EEPROM_SIZE (1024U)
/**
* @brief 64 pages of 16 bytes each
*/
#define AT24CS08_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define AT24CS08_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24CS08_MAX_POLLS (1 + (AT24CS08_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24C1024 constants
* @{
*/
/**
* @brief 128 kiB memory
*/
#define AT24C1024_EEPROM_SIZE (131072U)
/**
* @brief 512 pages of 256 bytes each
*/
#define AT24C1024_PAGE_SIZE (256U)
/**
* @brief Delay to complete write operation
*/
#define AT24C1024_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24C1024_MAX_POLLS (1 + (AT24C1024_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name AT24MAC402/602 constants
* @{
*/
/**
* @brief 256 byte memory
*/
#define AT24MAC_EEPROM_SIZE (256U)
/**
* @brief 16 pages of 16 bytes each
*/
#define AT24MAC_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define AT24MAC_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define AT24MAC_MAX_POLLS (1 + (AT24MAC_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name M24C01 constants
* @{
*/
/**
* @brief 128 byte memory
*/
#define M24C01_EEPROM_SIZE (128U)
/**
* @brief 16 pages of 16 bytes each
*/
#define M24C01_PAGE_SIZE (16U)
/**
* @brief Delay to complete write operation
*/
#define M24C01_PAGE_WRITE_DELAY_US (5000U)
/**
* @brief Number of poll attempts
*/
#define M24C01_MAX_POLLS (1 + (M24C01_PAGE_WRITE_DELAY_US \
/ AT24CXXX_POLL_DELAY_US))
/** @} */
/**
* @name Set constants depending on module
* @{
*/
#if IS_USED(MODULE_AT24C1024)
#define AT24CXXX_EEPROM_SIZE (AT24C1024_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C1024_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C1024_MAX_POLLS)
#elif IS_USED(MODULE_AT24C512)
#define AT24CXXX_EEPROM_SIZE (AT24C512_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C512_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C512_MAX_POLLS)
#elif IS_USED(MODULE_AT24C256)
#define AT24CXXX_EEPROM_SIZE (AT24C256_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C256_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C256_MAX_POLLS)
#elif IS_USED(MODULE_AT24C128)
#define AT24CXXX_EEPROM_SIZE (AT24C128_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C128_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C128_MAX_POLLS)
#elif IS_USED(MODULE_AT24C64)
#define AT24CXXX_EEPROM_SIZE (AT24C64_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C64_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C64_MAX_POLLS)
#elif IS_USED(MODULE_AT24C32)
#define AT24CXXX_EEPROM_SIZE (AT24C32_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C32_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C32_MAX_POLLS)
#elif IS_USED(MODULE_AT24C16A)
#define AT24CXXX_EEPROM_SIZE (AT24C16A_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C16A_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C16A_MAX_POLLS)
#elif IS_USED(MODULE_AT24C08A)
#define AT24CXXX_EEPROM_SIZE (AT24C08A_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C08A_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C08A_MAX_POLLS)
#elif IS_USED(MODULE_AT24C04)
#define AT24CXXX_EEPROM_SIZE (AT24C04_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C04_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C04_MAX_POLLS)
#elif IS_USED(MODULE_AT24C02)
#define AT24CXXX_EEPROM_SIZE (AT24C02_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C02_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C02_MAX_POLLS)
#elif IS_USED(MODULE_AT24C01A)
#define AT24CXXX_EEPROM_SIZE (AT24C01A_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24C01A_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24C01A_MAX_POLLS)
#elif IS_USED(MODULE_AT24CS04)
#define AT24CXXX_EEPROM_SIZE (AT24CS04_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24CS04_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24CS04_MAX_POLLS)
#elif IS_USED(MODULE_AT24CS08)
#define AT24CXXX_EEPROM_SIZE (AT24CS08_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24CS08_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24CS08_MAX_POLLS)
#elif IS_USED(MODULE_AT24MAC)
#define AT24CXXX_EEPROM_SIZE (AT24MAC_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (AT24MAC_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (AT24MAC_MAX_POLLS)
#elif IS_USED(MODULE_M24C01)
#define AT24CXXX_EEPROM_SIZE (M24C01_EEPROM_SIZE)
#define AT24CXXX_PAGE_SIZE (M24C01_PAGE_SIZE)
#define AT24CXXX_MAX_POLLS (M24C01_MAX_POLLS)
#else /* minimal */
#define AT24CXXX_EEPROM_SIZE (128U) /**< EEPROM size */
#define AT24CXXX_PAGE_SIZE (4U) /**< page size */
#define AT24CXXX_MAX_POLLS (6U) /**< maximum poll attempts */
#endif
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* AT24CXXX_DEFINES_H */
/** @} */