Loading...
Searching...
No Matches
at24cxxx_defines.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Otto-von-Guericke-Universität Magdeburg
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
22
23#include "kernel_defines.h"
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
32#define AT24CXXX_POLL_DELAY_US (1000UL)
36#define AT24CXXX_CLEAR_BYTE (0x00)
47#define AT24CXXX_DEF_DEV_ADDR (0x50)
48
56#define AT24C01A_EEPROM_SIZE (128U)
60#define AT24C01A_PAGE_SIZE (8U)
64#define AT24C01A_PAGE_WRITE_DELAY_US (5000U)
68#define AT24C01A_MAX_POLLS (1 + (AT24C01A_PAGE_WRITE_DELAY_US \
69 / AT24CXXX_POLL_DELAY_US))
70
71
79#define AT24C02_EEPROM_SIZE (256U)
83#define AT24C02_PAGE_SIZE (8U)
87#define AT24C02_PAGE_WRITE_DELAY_US (5000U)
91#define AT24C02_MAX_POLLS (1 + (AT24C02_PAGE_WRITE_DELAY_US \
92 / AT24CXXX_POLL_DELAY_US))
93
94
102#define AT24C04_EEPROM_SIZE (512U)
106#define AT24C04_PAGE_SIZE (16U)
110#define AT24C04_PAGE_WRITE_DELAY_US (5000U)
114#define AT24C04_MAX_POLLS (1 + (AT24C04_PAGE_WRITE_DELAY_US \
115 / AT24CXXX_POLL_DELAY_US))
116
117
125#define AT24C08A_EEPROM_SIZE (1024U)
129#define AT24C08A_PAGE_SIZE (16U)
133#define AT24C08A_PAGE_WRITE_DELAY_US (5000U)
137#define AT24C08A_MAX_POLLS (1 + (AT24C08A_PAGE_WRITE_DELAY_US \
138 / AT24CXXX_POLL_DELAY_US))
139
140
148#define AT24C16A_EEPROM_SIZE (2048U)
152#define AT24C16A_PAGE_SIZE (16U)
156#define AT24C16A_PAGE_WRITE_DELAY_US (5000U)
160#define AT24C16A_MAX_POLLS (1 + (AT24C16A_PAGE_WRITE_DELAY_US \
161 / AT24CXXX_POLL_DELAY_US))
162
163
171#define AT24C32_EEPROM_SIZE (4096U)
175#define AT24C32_PAGE_SIZE (32U)
179#define AT24C32_PAGE_WRITE_DELAY_US (10000U)
183#define AT24C32_MAX_POLLS (1 + (AT24C32_PAGE_WRITE_DELAY_US \
184 / AT24CXXX_POLL_DELAY_US))
185
186
194#define AT24C64_EEPROM_SIZE (8192U)
198#define AT24C64_PAGE_SIZE (32U)
202#define AT24C64_PAGE_WRITE_DELAY_US (10000U)
206#define AT24C64_MAX_POLLS (1 + (AT24C64_PAGE_WRITE_DELAY_US \
207 / AT24CXXX_POLL_DELAY_US))
208
209
217#define AT24C128_EEPROM_SIZE (16384U)
221#define AT24C128_PAGE_SIZE (64U)
225#define AT24C128_PAGE_WRITE_DELAY_US (5000U)
229#define AT24C128_MAX_POLLS (1 + (AT24C128_PAGE_WRITE_DELAY_US \
230 / AT24CXXX_POLL_DELAY_US))
231
232
240#define AT24C256_EEPROM_SIZE (32768U)
244#define AT24C256_PAGE_SIZE (64U)
248#define AT24C256_PAGE_WRITE_DELAY_US (5000U)
252#define AT24C256_MAX_POLLS (1 + (AT24C256_PAGE_WRITE_DELAY_US \
253 / AT24CXXX_POLL_DELAY_US))
254
255
263#define AT24C512_EEPROM_SIZE (65536U)
267#define AT24C512_PAGE_SIZE (128U)
271#define AT24C512_PAGE_WRITE_DELAY_US (5000U)
275#define AT24C512_MAX_POLLS (1 + (AT24C512_PAGE_WRITE_DELAY_US \
276 / AT24CXXX_POLL_DELAY_US))
277
278
286#define AT24CS04_EEPROM_SIZE (512U)
290#define AT24CS04_PAGE_SIZE (16U)
294#define AT24CS04_PAGE_WRITE_DELAY_US (5000U)
298#define AT24CS04_MAX_POLLS (1 + (AT24CS04_PAGE_WRITE_DELAY_US \
299 / AT24CXXX_POLL_DELAY_US))
300
301
309#define AT24CS08_EEPROM_SIZE (1024U)
313#define AT24CS08_PAGE_SIZE (16U)
317#define AT24CS08_PAGE_WRITE_DELAY_US (5000U)
321#define AT24CS08_MAX_POLLS (1 + (AT24CS08_PAGE_WRITE_DELAY_US \
322 / AT24CXXX_POLL_DELAY_US))
323
324
332#define AT24C1024_EEPROM_SIZE (131072U)
336#define AT24C1024_PAGE_SIZE (256U)
340#define AT24C1024_PAGE_WRITE_DELAY_US (5000U)
344#define AT24C1024_MAX_POLLS (1 + (AT24C1024_PAGE_WRITE_DELAY_US \
345 / AT24CXXX_POLL_DELAY_US))
346
347
355#define AT24MAC_EEPROM_SIZE (256U)
359#define AT24MAC_PAGE_SIZE (16U)
363#define AT24MAC_PAGE_WRITE_DELAY_US (5000U)
367#define AT24MAC_MAX_POLLS (1 + (AT24MAC_PAGE_WRITE_DELAY_US \
368 / AT24CXXX_POLL_DELAY_US))
369
370
378#define M24C01_EEPROM_SIZE (128U)
382#define M24C01_PAGE_SIZE (16U)
386#define M24C01_PAGE_WRITE_DELAY_US (5000U)
390#define M24C01_MAX_POLLS (1 + (M24C01_PAGE_WRITE_DELAY_US \
391 / AT24CXXX_POLL_DELAY_US))
392
393
398#if IS_USED(MODULE_AT24C1024)
399#define AT24CXXX_EEPROM_SIZE (AT24C1024_EEPROM_SIZE)
400#define AT24CXXX_PAGE_SIZE (AT24C1024_PAGE_SIZE)
401#define AT24CXXX_MAX_POLLS (AT24C1024_MAX_POLLS)
402#elif IS_USED(MODULE_AT24C512)
403#define AT24CXXX_EEPROM_SIZE (AT24C512_EEPROM_SIZE)
404#define AT24CXXX_PAGE_SIZE (AT24C512_PAGE_SIZE)
405#define AT24CXXX_MAX_POLLS (AT24C512_MAX_POLLS)
406#elif IS_USED(MODULE_AT24C256)
407#define AT24CXXX_EEPROM_SIZE (AT24C256_EEPROM_SIZE)
408#define AT24CXXX_PAGE_SIZE (AT24C256_PAGE_SIZE)
409#define AT24CXXX_MAX_POLLS (AT24C256_MAX_POLLS)
410#elif IS_USED(MODULE_AT24C128)
411#define AT24CXXX_EEPROM_SIZE (AT24C128_EEPROM_SIZE)
412#define AT24CXXX_PAGE_SIZE (AT24C128_PAGE_SIZE)
413#define AT24CXXX_MAX_POLLS (AT24C128_MAX_POLLS)
414#elif IS_USED(MODULE_AT24C64)
415#define AT24CXXX_EEPROM_SIZE (AT24C64_EEPROM_SIZE)
416#define AT24CXXX_PAGE_SIZE (AT24C64_PAGE_SIZE)
417#define AT24CXXX_MAX_POLLS (AT24C64_MAX_POLLS)
418#elif IS_USED(MODULE_AT24C32)
419#define AT24CXXX_EEPROM_SIZE (AT24C32_EEPROM_SIZE)
420#define AT24CXXX_PAGE_SIZE (AT24C32_PAGE_SIZE)
421#define AT24CXXX_MAX_POLLS (AT24C32_MAX_POLLS)
422#elif IS_USED(MODULE_AT24C16A)
423#define AT24CXXX_EEPROM_SIZE (AT24C16A_EEPROM_SIZE)
424#define AT24CXXX_PAGE_SIZE (AT24C16A_PAGE_SIZE)
425#define AT24CXXX_MAX_POLLS (AT24C16A_MAX_POLLS)
426#elif IS_USED(MODULE_AT24C08A)
427#define AT24CXXX_EEPROM_SIZE (AT24C08A_EEPROM_SIZE)
428#define AT24CXXX_PAGE_SIZE (AT24C08A_PAGE_SIZE)
429#define AT24CXXX_MAX_POLLS (AT24C08A_MAX_POLLS)
430#elif IS_USED(MODULE_AT24C04)
431#define AT24CXXX_EEPROM_SIZE (AT24C04_EEPROM_SIZE)
432#define AT24CXXX_PAGE_SIZE (AT24C04_PAGE_SIZE)
433#define AT24CXXX_MAX_POLLS (AT24C04_MAX_POLLS)
434#elif IS_USED(MODULE_AT24C02)
435#define AT24CXXX_EEPROM_SIZE (AT24C02_EEPROM_SIZE)
436#define AT24CXXX_PAGE_SIZE (AT24C02_PAGE_SIZE)
437#define AT24CXXX_MAX_POLLS (AT24C02_MAX_POLLS)
438#elif IS_USED(MODULE_AT24C01A)
439#define AT24CXXX_EEPROM_SIZE (AT24C01A_EEPROM_SIZE)
440#define AT24CXXX_PAGE_SIZE (AT24C01A_PAGE_SIZE)
441#define AT24CXXX_MAX_POLLS (AT24C01A_MAX_POLLS)
442#elif IS_USED(MODULE_AT24CS04)
443#define AT24CXXX_EEPROM_SIZE (AT24CS04_EEPROM_SIZE)
444#define AT24CXXX_PAGE_SIZE (AT24CS04_PAGE_SIZE)
445#define AT24CXXX_MAX_POLLS (AT24CS04_MAX_POLLS)
446#elif IS_USED(MODULE_AT24CS08)
447#define AT24CXXX_EEPROM_SIZE (AT24CS08_EEPROM_SIZE)
448#define AT24CXXX_PAGE_SIZE (AT24CS08_PAGE_SIZE)
449#define AT24CXXX_MAX_POLLS (AT24CS08_MAX_POLLS)
450#elif IS_USED(MODULE_AT24MAC)
451#define AT24CXXX_EEPROM_SIZE (AT24MAC_EEPROM_SIZE)
452#define AT24CXXX_PAGE_SIZE (AT24MAC_PAGE_SIZE)
453#define AT24CXXX_MAX_POLLS (AT24MAC_MAX_POLLS)
454#elif IS_USED(MODULE_M24C01)
455#define AT24CXXX_EEPROM_SIZE (M24C01_EEPROM_SIZE)
456#define AT24CXXX_PAGE_SIZE (M24C01_PAGE_SIZE)
457#define AT24CXXX_MAX_POLLS (M24C01_MAX_POLLS)
458#else /* minimal */
459#define AT24CXXX_EEPROM_SIZE (128U)
460#define AT24CXXX_PAGE_SIZE (4U)
461#define AT24CXXX_MAX_POLLS (6U)
462#endif
464
465#ifdef __cplusplus
466}
467#endif
468
Common macros and compiler attributes/pragmas configuration.