at24cxxx_defines.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 Otto-von-Guericke-Universität Magdeburg
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
26 #include "kernel_defines.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
35 #define AT24CXXX_POLL_DELAY_US (1000UL)
39 #define AT24CXXX_CLEAR_BYTE (0x00)
50 #define AT24CXXX_DEF_DEV_ADDR (0x50)
51 
59 #define AT24C01A_EEPROM_SIZE (128U)
63 #define AT24C01A_PAGE_SIZE (8U)
67 #define AT24C01A_PAGE_WRITE_DELAY_US (5000U)
71 #define AT24C01A_MAX_POLLS (1 + (AT24C01A_PAGE_WRITE_DELAY_US \
72  / AT24CXXX_POLL_DELAY_US))
82 #define AT24C02_EEPROM_SIZE (256U)
86 #define AT24C02_PAGE_SIZE (8U)
90 #define AT24C02_PAGE_WRITE_DELAY_US (5000U)
94 #define AT24C02_MAX_POLLS (1 + (AT24C02_PAGE_WRITE_DELAY_US \
95  / AT24CXXX_POLL_DELAY_US))
105 #define AT24C04_EEPROM_SIZE (512U)
109 #define AT24C04_PAGE_SIZE (16U)
113 #define AT24C04_PAGE_WRITE_DELAY_US (5000U)
117 #define AT24C04_MAX_POLLS (1 + (AT24C04_PAGE_WRITE_DELAY_US \
118  / AT24CXXX_POLL_DELAY_US))
128 #define AT24C08A_EEPROM_SIZE (1024U)
132 #define AT24C08A_PAGE_SIZE (16U)
136 #define AT24C08A_PAGE_WRITE_DELAY_US (5000U)
140 #define AT24C08A_MAX_POLLS (1 + (AT24C08A_PAGE_WRITE_DELAY_US \
141  / AT24CXXX_POLL_DELAY_US))
151 #define AT24C16A_EEPROM_SIZE (2048U)
155 #define AT24C16A_PAGE_SIZE (16U)
159 #define AT24C16A_PAGE_WRITE_DELAY_US (5000U)
163 #define AT24C16A_MAX_POLLS (1 + (AT24C16A_PAGE_WRITE_DELAY_US \
164  / AT24CXXX_POLL_DELAY_US))
174 #define AT24C32_EEPROM_SIZE (4096U)
178 #define AT24C32_PAGE_SIZE (32U)
182 #define AT24C32_PAGE_WRITE_DELAY_US (10000U)
186 #define AT24C32_MAX_POLLS (1 + (AT24C32_PAGE_WRITE_DELAY_US \
187  / AT24CXXX_POLL_DELAY_US))
197 #define AT24C64_EEPROM_SIZE (8192U)
201 #define AT24C64_PAGE_SIZE (32U)
205 #define AT24C64_PAGE_WRITE_DELAY_US (10000U)
209 #define AT24C64_MAX_POLLS (1 + (AT24C64_PAGE_WRITE_DELAY_US \
210  / AT24CXXX_POLL_DELAY_US))
220 #define AT24C128_EEPROM_SIZE (16384U)
224 #define AT24C128_PAGE_SIZE (64U)
228 #define AT24C128_PAGE_WRITE_DELAY_US (5000U)
232 #define AT24C128_MAX_POLLS (1 + (AT24C128_PAGE_WRITE_DELAY_US \
233  / AT24CXXX_POLL_DELAY_US))
243 #define AT24C256_EEPROM_SIZE (32768U)
247 #define AT24C256_PAGE_SIZE (64U)
251 #define AT24C256_PAGE_WRITE_DELAY_US (5000U)
255 #define AT24C256_MAX_POLLS (1 + (AT24C256_PAGE_WRITE_DELAY_US \
256  / AT24CXXX_POLL_DELAY_US))
266 #define AT24C512_EEPROM_SIZE (65536U)
270 #define AT24C512_PAGE_SIZE (128U)
274 #define AT24C512_PAGE_WRITE_DELAY_US (5000U)
278 #define AT24C512_MAX_POLLS (1 + (AT24C512_PAGE_WRITE_DELAY_US \
279  / AT24CXXX_POLL_DELAY_US))
289 #define AT24CS04_EEPROM_SIZE (512U)
293 #define AT24CS04_PAGE_SIZE (16U)
297 #define AT24CS04_PAGE_WRITE_DELAY_US (5000U)
301 #define AT24CS04_MAX_POLLS (1 + (AT24CS04_PAGE_WRITE_DELAY_US \
302  / AT24CXXX_POLL_DELAY_US))
312 #define AT24CS08_EEPROM_SIZE (1024U)
316 #define AT24CS08_PAGE_SIZE (16U)
320 #define AT24CS08_PAGE_WRITE_DELAY_US (5000U)
324 #define AT24CS08_MAX_POLLS (1 + (AT24CS08_PAGE_WRITE_DELAY_US \
325  / AT24CXXX_POLL_DELAY_US))
335 #define AT24C1024_EEPROM_SIZE (131072U)
339 #define AT24C1024_PAGE_SIZE (256U)
343 #define AT24C1024_PAGE_WRITE_DELAY_US (5000U)
347 #define AT24C1024_MAX_POLLS (1 + (AT24C1024_PAGE_WRITE_DELAY_US \
348  / AT24CXXX_POLL_DELAY_US))
358 #define AT24MAC_EEPROM_SIZE (256U)
362 #define AT24MAC_PAGE_SIZE (16U)
366 #define AT24MAC_PAGE_WRITE_DELAY_US (5000U)
370 #define AT24MAC_MAX_POLLS (1 + (AT24MAC_PAGE_WRITE_DELAY_US \
371  / AT24CXXX_POLL_DELAY_US))
381 #define M24C01_EEPROM_SIZE (128U)
385 #define M24C01_PAGE_SIZE (16U)
389 #define M24C01_PAGE_WRITE_DELAY_US (5000U)
393 #define M24C01_MAX_POLLS (1 + (M24C01_PAGE_WRITE_DELAY_US \
394  / AT24CXXX_POLL_DELAY_US))
401 #if IS_USED(MODULE_AT24C1024)
402 #define AT24CXXX_EEPROM_SIZE (AT24C1024_EEPROM_SIZE)
403 #define AT24CXXX_PAGE_SIZE (AT24C1024_PAGE_SIZE)
404 #define AT24CXXX_MAX_POLLS (AT24C1024_MAX_POLLS)
405 #elif IS_USED(MODULE_AT24C512)
406 #define AT24CXXX_EEPROM_SIZE (AT24C512_EEPROM_SIZE)
407 #define AT24CXXX_PAGE_SIZE (AT24C512_PAGE_SIZE)
408 #define AT24CXXX_MAX_POLLS (AT24C512_MAX_POLLS)
409 #elif IS_USED(MODULE_AT24C256)
410 #define AT24CXXX_EEPROM_SIZE (AT24C256_EEPROM_SIZE)
411 #define AT24CXXX_PAGE_SIZE (AT24C256_PAGE_SIZE)
412 #define AT24CXXX_MAX_POLLS (AT24C256_MAX_POLLS)
413 #elif IS_USED(MODULE_AT24C128)
414 #define AT24CXXX_EEPROM_SIZE (AT24C128_EEPROM_SIZE)
415 #define AT24CXXX_PAGE_SIZE (AT24C128_PAGE_SIZE)
416 #define AT24CXXX_MAX_POLLS (AT24C128_MAX_POLLS)
417 #elif IS_USED(MODULE_AT24C64)
418 #define AT24CXXX_EEPROM_SIZE (AT24C64_EEPROM_SIZE)
419 #define AT24CXXX_PAGE_SIZE (AT24C64_PAGE_SIZE)
420 #define AT24CXXX_MAX_POLLS (AT24C64_MAX_POLLS)
421 #elif IS_USED(MODULE_AT24C32)
422 #define AT24CXXX_EEPROM_SIZE (AT24C32_EEPROM_SIZE)
423 #define AT24CXXX_PAGE_SIZE (AT24C32_PAGE_SIZE)
424 #define AT24CXXX_MAX_POLLS (AT24C32_MAX_POLLS)
425 #elif IS_USED(MODULE_AT24C16A)
426 #define AT24CXXX_EEPROM_SIZE (AT24C16A_EEPROM_SIZE)
427 #define AT24CXXX_PAGE_SIZE (AT24C16A_PAGE_SIZE)
428 #define AT24CXXX_MAX_POLLS (AT24C16A_MAX_POLLS)
429 #elif IS_USED(MODULE_AT24C08A)
430 #define AT24CXXX_EEPROM_SIZE (AT24C08A_EEPROM_SIZE)
431 #define AT24CXXX_PAGE_SIZE (AT24C08A_PAGE_SIZE)
432 #define AT24CXXX_MAX_POLLS (AT24C08A_MAX_POLLS)
433 #elif IS_USED(MODULE_AT24C04)
434 #define AT24CXXX_EEPROM_SIZE (AT24C04_EEPROM_SIZE)
435 #define AT24CXXX_PAGE_SIZE (AT24C04_PAGE_SIZE)
436 #define AT24CXXX_MAX_POLLS (AT24C04_MAX_POLLS)
437 #elif IS_USED(MODULE_AT24C02)
438 #define AT24CXXX_EEPROM_SIZE (AT24C02_EEPROM_SIZE)
439 #define AT24CXXX_PAGE_SIZE (AT24C02_PAGE_SIZE)
440 #define AT24CXXX_MAX_POLLS (AT24C02_MAX_POLLS)
441 #elif IS_USED(MODULE_AT24C01A)
442 #define AT24CXXX_EEPROM_SIZE (AT24C01A_EEPROM_SIZE)
443 #define AT24CXXX_PAGE_SIZE (AT24C01A_PAGE_SIZE)
444 #define AT24CXXX_MAX_POLLS (AT24C01A_MAX_POLLS)
445 #elif IS_USED(MODULE_AT24CS04)
446 #define AT24CXXX_EEPROM_SIZE (AT24CS04_EEPROM_SIZE)
447 #define AT24CXXX_PAGE_SIZE (AT24CS04_PAGE_SIZE)
448 #define AT24CXXX_MAX_POLLS (AT24CS04_MAX_POLLS)
449 #elif IS_USED(MODULE_AT24CS08)
450 #define AT24CXXX_EEPROM_SIZE (AT24CS08_EEPROM_SIZE)
451 #define AT24CXXX_PAGE_SIZE (AT24CS08_PAGE_SIZE)
452 #define AT24CXXX_MAX_POLLS (AT24CS08_MAX_POLLS)
453 #elif IS_USED(MODULE_AT24MAC)
454 #define AT24CXXX_EEPROM_SIZE (AT24MAC_EEPROM_SIZE)
455 #define AT24CXXX_PAGE_SIZE (AT24MAC_PAGE_SIZE)
456 #define AT24CXXX_MAX_POLLS (AT24MAC_MAX_POLLS)
457 #elif IS_USED(MODULE_M24C01)
458 #define AT24CXXX_EEPROM_SIZE (M24C01_EEPROM_SIZE)
459 #define AT24CXXX_PAGE_SIZE (M24C01_PAGE_SIZE)
460 #define AT24CXXX_MAX_POLLS (M24C01_MAX_POLLS)
461 #else /* minimal */
462 #define AT24CXXX_EEPROM_SIZE (128U)
463 #define AT24CXXX_PAGE_SIZE (4U)
464 #define AT24CXXX_MAX_POLLS (6U)
465 #endif
468 #ifdef __cplusplus
469 }
470 #endif
471 
Common macros and compiler attributes/pragmas configuration.