Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
Loading...
Searching...
No Matches
max313xx_internal.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2026 Technische Universität Hamburg
3
* SPDX-License-Identifier: LGPL-2.1-only
4
*/
5
6
#pragma once
7
15
16
#ifdef __cplusplus
17
extern
"C"
{
18
#endif
19
20
#include <stdint.h>
21
22
#include "
kernel_defines.h
"
23
24
#if IS_USED(MODULE_MAX31331) && IS_USED(MODULE_MAX31343)
25
# error "Only one driver variant can be used at a time!"
26
#endif
27
32
#if IS_USED(MODULE_MAX31331) || IS_USED(MODULE_MAX31343) || DOXYGEN
33
# define MAX313XX_I2C_ADDR (0x68U)
34
35
/* Status/Config registers */
36
# define MAX313XX_REG_STATUS (0x00U)
37
# define MAX313XX_REG_INT_EN (0x01U)
38
# define MAX313XX_REG_RTC_RESET (0x02U)
39
# define MAX313XX_REG_RTC_CFG1 (0x03U)
40
# define MAX313XX_REG_RTC_CFG2 (0x04U)
41
42
# define MAX313XX_TIME_LEN (7U)
43
44
# define MAX313XX_MONTH_CENTURY (1U << 7)
45
46
# define MAX313XX_ALM1_LEN (6U)
47
48
# define MAX313XX_ALM_MASK_BIT (1U << 7)
49
# define MAX313XX_ALM_DY_DT (1U << 6)
50
51
# define MAX313XX_STATUS_A1F (1U << 0)
52
# define MAX313XX_STATUS_A2F (1U << 1)
53
# define MAX313XX_STATUS_OSF (1U << 6)
55
56
# define MAX313XX_INTEN_A1IE (1U << 0)
57
# define MAX313XX_INTEN_A2IE (1U << 1)
58
#endif
59
60
#if IS_USED(MODULE_MAX31331)
61
# define MAX313XX_REG_TIMER_CFG (0x06U)
62
# define MAX313XX_REG_TIME0 (0x08U)
63
64
# define MAX313XX_RTC_CFG1_ENOSC (1U << 0)
65
66
# define MAX313XX_RTC_CFG2_ENCLKO (1U << 2)
67
# define MAX313XX_RTC_CFG2_CLKO_MASK (0x03U)
68
69
# define MAX313XX_REG_ALM1_SEC (0x0FU)
70
# define MAX313XX_REG_ALM1_MIN (0x10U)
71
# define MAX313XX_REG_ALM1_HRS (0x11U)
72
# define MAX313XX_REG_ALM1_DAY_DATE (0x12U)
73
# define MAX313XX_REG_ALM1_MON (0x13U)
74
# define MAX313XX_REG_ALM1_YEAR (0x14U)
75
76
# define MAX313XX_REG_TRICKLE (0x1BU)
77
78
# define MAX313XX_TRICKLE_D_MASK (0x08U)
79
# define MAX313XX_TRICKLE_D_DIODE (1U << 4)
80
# define MAX313XX_TRICKLE_D_RES_MASK (0x06U)
81
82
#elif IS_USED(MODULE_MAX31343)
83
# define MAX313XX_REG_TIMER_CFG (0x05U)
84
85
# define MAX313XX_REG_TIME0 (0x06U)
86
87
# define MAX313XX_RTC_CFG1_ENOSC (1U << 1)
88
89
# define MAX313XX_RTC_CFG2_ENCLKO (1U << 7)
90
# define MAX313XX_RTC_CFG2_CLKO_MASK (0x78U)
91
92
# define MAX313XX_REG_ALM1_SEC (0x0DU)
93
# define MAX313XX_REG_ALM1_MIN (0x0EU)
94
# define MAX313XX_REG_ALM1_HRS (0x0FU)
95
# define MAX313XX_REG_ALM1_DAY_DATE (0x10U)
96
# define MAX313XX_REG_ALM1_MON (0x11U)
97
# define MAX313XX_REG_ALM1_YEAR (0x12U)
98
99
# define MAX313XX_REG_TRICKLE (0x19U)
100
101
# define MAX313XX_TRICKLE_D_MASK (0x0FU)
102
# define MAX313XX_TRICKLE_D_CHARGER_OFF (1U << 3)
103
# define MAX313XX_TRICKLE_D_DIODE (1U << 2)
104
# define MAX313XX_TRICKLE_D_RES_MASK (0x03U)
105
106
#elif DOXYGEN
107
# define MAX313XX_REG_TIMER_CFG
114
# define MAX313XX_REG_TIME0
115
116
# define MAX313XX_RTC_CFG1_ENOSC
117
118
# define MAX313XX_RTC_CFG2_ENCLKO
119
# define MAX313XX_RTC_CFG2_CLKO_MASK
120
121
# define MAX313XX_REG_ALM1_SEC
122
# define MAX313Xx_REG_ALM1_MIN
123
# define MAX313XX_REG_ALM1_HRS
124
# define MAX313XX_REG_ALM1_DAY_DATE
125
# define MAX313XX_REG_ALM1_MON
126
# define MAX313XX_REG_ALM1_YEAR
127
128
# define MAX313XX_REG_TRICKLE
129
130
# define MAX313XX_TRICKLE_D_MASK
131
# define MAX313XX_TRICKLE_D_DIODE
132
# define MAX313XX_TRICKLE_D_RES_MASK
133
#endif
135
136
/* The device specific registers are defined unconditionally to allow using
137
* `IS_USED(MODULE_MAX313..)` in the code instead of preprocessor conditions. */
142
#define MAX31331_REG_TS_CFG (0x05U)
143
144
#define MAX31331_TRICKLE_ENABLE (1U << 0)
145
#define MAX31331_TRICKLE_RES_SHIFT (1U << 0)
147
152
#define MAX31343_RTC_CFG2_SQW_HZ_MASK (0x07U)
153
154
#define MAX31343_REG_TEMP_MSB (0x1AU)
155
#define MAX31343_REG_TEMP_LSB (0x1BU)
156
#define MAX31343_REG_TS_CONFIG (0x1CU)
157
158
#define MAX31343_TS_AUTOMODE (1U << 7)
159
#define MAX31343_TS_TTSINT_MASK (0x38U)
160
#define MAX31343_TS_TTSINT_SHIFT (3U)
161
162
#define MAX31343_TRICKLE_TCHE_SHIFT (4U)
163
#define MAX31343_TRICKLE_TCHE_MASK (0xF0U)
164
#define MAX31343_TRICKLE_TCHE_ENABLE (0x5U)
167
168
#ifdef __cplusplus
169
}
170
#endif
kernel_defines.h
Common macros and compiler attributes/pragmas configuration.
Generated on Wed Aug 19 2026 12:27:13 by
1.13.2