foxBMS  1.6.0
The foxBMS Battery Management System API Documentation
mxm_register_map.h
Go to the documentation of this file.
1 /**
2  *
3  * @copyright © 2010 - 2023, Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V.
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright notice, this
12  * list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the documentation
16  * and/or other materials provided with the distribution.
17  *
18  * 3. Neither the name of the copyright holder nor the names of its
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  *
33  * We kindly request you to use one or more of the following phrases to refer to
34  * foxBMS in your hardware, software, documentation or advertising materials:
35  *
36  * - ″This product uses parts of foxBMS®″
37  * - ″This product includes parts of foxBMS®″
38  * - ″This product is derived from foxBMS®″
39  *
40  */
41 
42 /**
43  * @file mxm_register_map.h
44  * @author foxBMS Team
45  * @date 2019-03-05 (date of creation)
46  * @updated 2023-10-12 (date of last update)
47  * @version v1.6.0
48  * @ingroup DRIVERS
49  * @prefix MXM
50  *
51  * @brief Register map of the MAX1785x monitoring IC
52  *
53  * @details Register map with named registers of the monitoring ICs
54  * MAX17852 and MAX17853 by Maxim Integrated
55  *
56  */
57 
58 #ifndef FOXBMS__MXM_REGISTER_MAP_H_
59 #define FOXBMS__MXM_REGISTER_MAP_H_
60 
61 /*========== Includes =======================================================*/
62 
63 #include <stdint.h>
64 
65 /*========== Macros and Definitions =========================================*/
66 /**
67  * @brief MAX1785x register names
68  * @details Register names and addresses of the monitoring ICs MAX17852 and
69  * MAX17853. Please note that the MAX17853 only supports a subset
70  * of these register values.
71  */
72 typedef enum {
73  MXM_REG_VERSION = 0x00u, /*!< VERSION is a read only
74  * accessible register which returns information on the device */
75  MXM_REG_ADDRESS = 0x01u, /*!< ADDRESS is a read and write
76  * accessible register which sets the first, last, and device address
77  * used by a device in a UART chain (UARTSEL=1). This register has no
78  * effect on a device operating in SPI mode (UARTSEL=0). */
79  MXM_REG_STATUS1 = 0x02u, /*!< STATUS1 is a read and write
80  * accessible register which relates the current status of the device.
81  * STATUS1 also contains summary information on STATUS2, STATUS3, and
82  * FMEA registers, and other selected registers indicating if additional
83  * read back checks are required. */
84  MXM_REG_STATUS2 = 0x03u, /*!< STATUS2 is a read and write
85  * accessible register which contains summary information on alerts
86  * related to interface and communication faults. */
87  MXM_REG_STATUS3 = 0x04u, /*!< STATUS3 is a read and write
88  * accessible register which contains summary information on alerts
89  * related to automated cell balancing operations. */
90  MXM_REG_FMEA1 = 0x05u, /*!< FMEA1 is a read and write
91  * accessible register which relates current information on possible
92  * fault conditions. */
93  MXM_REG_FMEA2 = 0x06u, /*!< FMEA2 is a read and write
94  * accessible register which relates current information on possible
95  * fault conditions. */
96  MXM_REG_ALRTSUM = 0x07u, /*!< ALRTSUM is a read accessible
97  * register which relates added, detailed information on the current
98  * states of the device, breaking out several summary bits in STATUS1. */
99  MXM_REG_ALRTOVCELL = 0x08u, /*!< ALRTOVCELL is a read
100  * accessible register which relates current information on cell over
101  * voltage fault alerts based on ADC measurements. */
102  MXM_REG_ALRTUVCELL = 0x09u, /*!< ALRTUVCELL is a read
103  * accessible register which relates current information on cell under
104  * voltage fault alerts based on ADC measurements. */
105  MXM_REG_MINMAXCELL = 0x0Au, /*!< MINMAX is a read accessible
106  * register which relates the cell locations with the highest and lowest
107  * values measured. */
108  MXM_REG_ALRTAUXPRTCT = 0x0Bu, /*!< ALRTAUXPRTCT is a read
109  * accessible register which relates current information on auxiliary
110  * input protection fault alerts. */
111  MXM_REG_ALRTAUXOV = 0x0Cu, /*!< ALRTAUXOV is a read
112  * accessible register which relates current information on auxiliary
113  * over voltage (cold) fault alerts. */
114  MXM_REG_ALRTAUXUV = 0x0Du, /*!< ALRTAUXUV is a read accessible
115  * register which relates current information on auxiliary under voltage
116  * fault (hot) alerts. */
117  MXM_REG_ALRTCOMPOV = 0x0Eu, /*!< ALRTCOMPOV is a read accessible
118  * register which relates current information on cell over voltage fault
119  * alerts based on the redundant comparator. */
120  MXM_REG_ALRTCOMPUV = 0x0Fu, /*!< ALRTCOMPUV is a read accessible
121  * register which relates current information on cell under voltage fault
122  * alerts based on the redundant comparator. */
123  MXM_REG_ALRTCOMPAUXOV = 0x10u, /*!< ALRTCOMPAUXOV is a read
124  * accessible register which relates current information on auxiliary over
125  * voltage fault (cold) alerts based on the redundant comparator. */
126  MXM_REG_ALRTCOMPAUXUV = 0x11u, /*!< ALRTCOMPAUXUV is a read
127  * accessible register which relates current information on auxiliary under
128  * voltage fault (hot) alerts based on the redundant comparator. */
129  MXM_REG_ALRTBALSW = 0x12u, /*!< ALRTBALSW is a read accessible
130  * register which relates current summary information on balancing switch
131  * fault alerts. */
132  MXM_REG_SWACTION = 0x13u, /*!< SWACTION is a read and write
133  * accessible register which contains bits allowing software exit and
134  * reset requests. These requests are not recommended for general use,
135  * but may be of use in case of error. */
136  MXM_REG_DEVCFG1 = 0x14u, /*!< DEVCFG1 is a read and write
137  * accessible register which governs the configuration of the device
138  * interface operation. */
139  MXM_REG_DEVCFG2 = 0x15u, /*!< DEVCFG2 is a read and write
140  * accessible register which governs the configuration of the device
141  * filtering, several top level diagnostic modes, and timeout monitors. */
142  MXM_REG_AUXGPIOCFG = 0x16u, /*!< AUXGPIOCFG is a read and write
143  * accessible register which governs the configuration of the AUX/GPIO
144  * multifunction pins. */
145  MXM_REG_GPIOCFG = 0x17u, /*!< GPIOCFG is a read and write
146  * accessible register which governs the output state of GPIO outputs and
147  * reads back the input state of GPIO inputs. */
148  MXM_REG_PACKCFG = 0x18u, /*!< PACKCFG is a read and write
149  * accessible register which configures the part such that the top most
150  * cell and block used in the application is known. Details of Flex Pack
151  * applications are also configured within this register. */
152  MXM_REG_ALRTIRQEN = 0x19u, /*!< ALRTIRQEN is a read and write
153  * accessible register which selects which STATS1 alerts trigger interrupts
154  * via the ALERT interface port(s), and are included in the DCByte and
155  * Alert Packet (UART) or ALERT bit (SPI) notifications. Note the information
156  * in the STATUS1 register itself (or any component terms rolled up into
157  * STATUS1) is not masked/disabled by these settings, allowing the
158  * underlying data to always be available via STATUS1 readback. */
159  MXM_REG_ALRTOVEN = 0x1Au, /*!< ALRTOVEN is a read and write
160  * accessible register which enables over voltage fault checks on selected
161  * input channels during scans using either the ADC or Comparator. */
162  MXM_REG_ALRTUVEN = 0x1Bu, /*!< ALRTUVEN is a read and write
163  * accessible register which enables under voltage fault checks on selected
164  * input channels during scans using either the ADC or Comparator. */
165  MXM_REG_ALRTAUXOVEN = 0x1Cu, /*!< ALRTAUXOVEN is a read and write
166  * accessible register which enables auxiliary over voltage (cold) fault
167  * checks on selected Auxiliary channels during scans using either the
168  * ADC or Comparator. */
169  MXM_REG_ALRTAUXUVEN = 0x1Du, /*!< ALRTAUXUVEN is a read and write
170  * accessible register which enables auxiliary under voltage (hot) fault
171  * checks on selected Auxiliary channels using either the
172  * ADC or Comparator. */
173  MXM_REG_ALRTCALTST = 0x1Eu, /*!< ALRTCALTST is a read and write
174  * accessible register which allows the user to force Calibration alerts
175  * to test readback and interrupt logic. The forced alert(s) will remain
176  * forced until this register is written back to zeros (assuming the
177  * existing calibration data is within range) */
178  MXM_REG_OVTHCLR = 0x1Fu, /*!< OVTHCLR is a read and write
179  * accessible register which selects the cell over voltage alert
180  * clear threshold used with unipolar ADC measurements. */
181  MXM_REG_OVTHSET = 0x20u, /*!< OVTHSET is a read and write
182  * accessible register which selects the cell over voltage alert set
183  * threshold used with unipolar ADC measurements. */
184  MXM_REG_UVTHCLR = 0x21u, /*!< UVTHCLR is a read and write
185  * accessible register which selects the cell under voltage alert clear
186  * threshold used with unipolar ADC measurements. */
187  MXM_REG_UVTHSET = 0x22u, /*!< UVTHSET is a read and write
188  * accessible register which selects the cell under voltage alert set
189  * threshold used with unipolar ADC measurements. */
190  MXM_REG_MSMTCH = 0x23u, /*!< MSMTCH is a read and write
191  * accessible register which selects the cell voltage mismatch alert
192  * threshold used with ADC cell scan measurements. */
193  MXM_REG_BIPOVTHCLR = 0x24u, /*!< BIPOVTHCLR is a read and write
194  * accessible register which selects the cell over voltage alert clear
195  * threshold used with bipolar ADC measurements. */
196  MXM_REG_BIPOVTHSET = 0x25u, /*!< BIPOVTHSET is a read and write
197  * accessible register which selects the cell over voltage alert set
198  * threshold used with bipolar ADC measurements. */
199  MXM_REG_BIPUVTHCLR = 0x26u, /*!< BIPUVTHCLR is a read and write
200  * accessible register which selects the cell under voltage alert clear
201  * threshold used with bipolar ADC measurements. */
202  MXM_REG_BIPUVTHSET = 0x27u, /*!< BIPUVTHSET is a read and write
203  * accessible register which selects the cell under voltage alert set
204  * threshold used with bipolar ADC measurements. */
205  MXM_REG_BLKOVTHCLR = 0x28u, /*!< BLKOVTHCLR is a read and write
206  * accessible register which selects the block over voltage alert clear
207  * threshold used with ADC measurements. */
208  MXM_REG_BLKOVTHSET = 0x29u, /*!< BLKOVTHSET is a read and write
209  * accessible register which selects the block over voltage alert set
210  * threshold used with ADC measurements. */
211  MXM_REG_BLKUVTHCLR = 0x2Au, /*!< BLKUVTHCLR is a read and write
212  * accessible register which selects the block under voltage alert clear
213  * threshold used with ADC measurements. */
214  MXM_REG_BLKUVTHSET = 0x2Bu, /*!< BLKUVTHSET is a read and write
215  * accessible register which selects the block under voltage alert set
216  * threshold used with ADC measurements. */
217  MXM_REG_CSAOVTHCLR = 0x2Cu, /*!< MAX17852 only: CSAOVTHCLR is a
218  * read and write accessible register which selects the CSA over voltage
219  * alert clear threshold used with ADC measurements. */
220  MXM_REG_CSAOVTHSET = 0x2Du, /*!< MAX17852 only: CSAOVTHSET is a
221  * read and write accessible register which selects the CSA over voltage
222  * alert set threshold used with ADC measurements. */
223  MXM_REG_CSAUVTHCLR = 0x2Eu, /*!< MAX17852 only: CSAUVTHCLR is a
224  * read and write accessible register which selects the CSA under voltage
225  * alert clear threshold used with ADC measurements. */
226  MXM_REG_CSAUVTHSET = 0x2Fu, /*!< MAX17852 only: CSAUVTHSET is a
227  * read and write accessible register which selects the CSA under voltage
228  * alert set threshold used with ADC measurements. */
229  MXM_REG_AUXROVTHCLR = 0x30u, /*!< AUXROVTHCLR is a read and write
230  * accessible register which selects the over voltage (cold) alert
231  * clear threshold used with Ratiometric Auxiliary ADC measurements. */
232  MXM_REG_AUXROVTHSET = 0x31u, /*!< AUXROVTHSET is a read and write
233  * accessible register which selects the over voltage (cold) alert set
234  * threshold used with Ratiometric Auxiliary ADC measurements. */
235  MXM_REG_AUXRUVTHCLR = 0x32u, /*!< AUXRUVTHCLR is a read and write
236  * accessible register which selects the under voltage (hot) alert clear
237  * threshold used with Ratiometric Auxiliary ADC measurements. */
238  MXM_REG_AUXRUVTHSET = 0x33u, /*!< AUXRUVTHSET is a read and write
239  * accessible register which selects the under voltage (hot) alert set
240  * threshold used with Ratiometric Auxiliary ADC measurements. */
241  MXM_REG_AUXOVTHCLR = 0x34u, /*!< AUXOVTHCLR is a read and write
242  * accessible register which selects the over voltage alert clear
243  * threshold used with Absolute Auxiliary ADC measurements. */
244  MXM_REG_AUXAOVTHSET = 0x35u, /*!< AUXAOVTHSET is a read and write
245  * accessible register which selects the over voltage alert set
246  * threshold used with Absolute Auxiliary ADC measurements. */
247  MXM_REG_AUXAUVTHCLR = 0x36u, /*!< AUXAUVTHCLR is a read and write
248  * accessible register which selects the under voltage alert clear
249  * threshold used with Absolute Auxiliary ADC measurements. */
250  MXM_REG_AUXAUVTHSET = 0x37u, /*!< AUXAUVTHSET is a read and write
251  * accessible register which selects the under voltage alert set threshold
252  * used with Absolute Auxiliary ADC measurements. */
253  MXM_REG_COMPOVTH = 0x38u, /*!< COMPOVTH is a read and write
254  * accessible register which selects the cell over voltage alert threshold
255  * for the redundant comparator. */
256  MXM_REG_COMPUVTH = 0x39u, /*!< COMPUVTH is a read and write
257  * accessible register which selects the cell under voltage alert threshold
258  * for the redundant comparator. */
259  MXM_REG_COMPAUXROVTH = 0x3Au, /*!< COMPAUXROVTH is a read and write
260  * accessible register which selects the over voltage (cold) alert threshold
261  * applied during Ratiometric Auxiliary comparator measurements. */
262  MXM_REG_COMPAUXRUVTH = 0x3Bu, /*!< COMPAUXRUVTH is a read and write
263  * accessible register which selects the under voltage (hot) alert threshold
264  * applied during Ratiometric Auxiliary comparator measurements. */
265  MXM_REG_COMPAUXAOVTH = 0x3Cu, /*!< COMPAUXAOVTH is a read and write
266  * accessible register which selects the over voltage alert threshold
267  * applied during Absolute Auxiliary comparator measurements. */
268  MXM_REG_COMPAUXAUVTH = 0x3Du, /*!< COMPAUXAUVTH is a read and write
269  * accessible register which selects the under voltage alert threshold
270  * applied during Absolute Auxiliary comparator measurements. */
271  MXM_REG_COMPOPNTH = 0x3Eu, /*!< COMPOPNTH is a read and write
272  * accessible register which selects the under voltage alert threshold
273  * applied to Unipolar Cell inputs in Open Diagnostic Mode. */
274  MXM_REG_COMPAUXROPNTH = 0x3Fu, /*!< COMPAUXROPNTH is a read and write
275  * accessible register which selects the under voltage alert threshold
276  * applied to Ratiometric Auxiliary inputs in Open Diagnostic Mode. */
277  MXM_REG_COMPAUXAOPNTH = 0x40u, /*!< COMPAUXAOPNTH is a read and write
278  * accessible register which selects the under voltage alert threshold
279  * applied to Absolute Auxiliary inputs in Open Diagnostic Mode. */
280  MXM_REG_COMPACCOVTH = 0x41u, /*!< COMPACCOVTH is a read and write
281  * accessible register which selects the over voltage alert threshold
282  * applied during comparator accuracy diagnostics. */
283  MXM_REG_COMPACCUVTH = 0x42u, /*!< COMPACCUVTH is a read and write
284  * accessible register which selects the under voltage alert threshold
285  * applied during comparator accuracy diagnostics. */
286  MXM_REG_BALSHRTTHR = 0x43u, /*!< BALSHRTTHR is a read and write
287  * accessible register which selects alert threshold used during the
288  * Balance Switch Short Diagnostic mode. */
289  MXM_REG_BALLOWTHR = 0x44u, /*!< BALLOWTHR is a read and write
290  * accessible register which selects alert low threshold used during the
291  * Balance Switch Open Diagnostic Mode. */
292  MXM_REG_BALHIGHTHR = 0x45u, /*!< BALHIGHTHR is a read and write
293  * accessible register which selects alert High threshold used during the
294  * Balance Switch Open Diagnostic mode. */
295  MXM_REG_CSA = 0x46u, /*!< MAX17852 only: CSA is a read
296  * accessible register which holds the current value for each enabled
297  * individual auxiliary measurement result. */
298  MXM_REG_CELL1 = 0x47u, /*!< CELLn is a read accessible
299  * register which holds the current value for each individual cell
300  * measurement result. */
301  MXM_REG_CELL2 = 0x48u, /*!< CELLn is a read accessible
302  * register which holds the current value for each individual cell
303  * measurement result. */
304  MXM_REG_CELL3 = 0x49u, /*!< CELLn is a read accessible
305  * register which holds the current value for each individual cell
306  * measurement result. */
307  MXM_REG_CELL4 = 0x4Au, /*!< CELLn is a read accessible
308  * register which holds the current value for each individual cell
309  * measurement result. */
310  MXM_REG_CELL5 = 0x4Bu, /*!< CELLn is a read accessible
311  * register which holds the current value for each individual cell
312  * measurement result. */
313  MXM_REG_CELL6 = 0x4Cu, /*!< CELLn is a read accessible
314  * register which holds the current value for each individual cell
315  * measurement result. */
316  MXM_REG_CELL7 = 0x4Du, /*!< CELLn is a read accessible
317  * register which holds the current value for each individual cell
318  * measurement result. */
319  MXM_REG_CELL8 = 0x4Eu, /*!< CELLn is a read accessible
320  * register which holds the current value for each individual cell
321  * measurement result. */
322  MXM_REG_CELL9 = 0x4Fu, /*!< CELLn is a read accessible
323  * register which holds the current value for each individual cell
324  * measurement result. */
325  MXM_REG_CELL10 = 0x50u, /*!< CELLn is a read accessible
326  * register which holds the current value for each individual cell
327  * measurement result. */
328  MXM_REG_CELL11 = 0x51u, /*!< CELLn is a read accessible
329  * register which holds the current value for each individual cell
330  * measurement result. */
331  MXM_REG_CELL12 = 0x52u, /*!< CELLn is a read accessible
332  * register which holds the current value for each individual cell
333  * measurement result. */
334  MXM_REG_CELL13 = 0x53u, /*!< CELLn is a read accessible
335  * register which holds the current value for each individual cell
336  * measurement result. */
337  MXM_REG_CELL14 = 0x54u, /*!< CELLn is a read accessible
338  * register which holds the current value for each individual cell
339  * measurement result. */
340  MXM_REG_BLOCK = 0x55u, /*!< BLOCK is a read accessible
341  * register which holds the current value for the total block
342  * measurement result. */
343  MXM_REG_TOTAL = 0x56u, /*!< TOTAL is a read accessible
344  * register which holds the current value for the sum of all enabled
345  * measurement results within the stack. */
346  MXM_REG_DIAG1 = 0x57u, /*!< DIAG1 is a read-only
347  * register which contains the Diagnostic result requested by the
348  * DIAGCFG:DIAGSEL1 selection taken during the last ADC acquisition. */
349  MXM_REG_DIAG2 = 0x58u, /*!< DIAG2 is a read-only
350  * register which contains the Diagnostic result requested by the
351  * DIAGCFG:DIAGSEL2 selection taken during the last ADC acquisition. */
352  MXM_REG_AUX0 = 0x59u, /*!< AUXn is a read accessible
353  * register which holds the current value for each enabled individual
354  * auxiliary measurement result. */
355  MXM_REG_AUX1 = 0x5Au, /*!< AUXn is a read accessible
356  * register which holds the current value for each enabled individual
357  * auxiliary measurement result. */
358  MXM_REG_AUX2 = 0x5Bu, /*!< AUXn is a read accessible
359  * register which holds the current value for each enabled individual
360  * auxiliary measurement result. */
361  MXM_REG_AUX3 = 0x5Cu, /*!< AUXn is a read accessible
362  * register which holds the current value for each enabled individual
363  * auxiliary measurement result. */
364  MXM_REG_AUX4 = 0x5Du, /*!< MAX17853 only: AUXn is a
365  * read accessible register which holds the current value for each
366  * enabled individual auxiliary measurement result. */
367  MXM_REG_AUX5 = 0x5Eu, /*!< MAX17853 only: AUXn is a
368  * read accessible register which holds the current value for each
369  * enabled individual auxiliary measurement result. */
370  MXM_REG_POLARITYCTRL = 0x5Fu, /*!< POLARITYCTRL is a read and
371  * write accessible register which governs the measurement type
372  * used during scans. In general, Unipolar mode indicates a Cell and
373  * Bipolar mode indicates a Bus-Bar. */
374  MXM_REG_AUXREFCTRL = 0x60u, /*!< AUXREFCTRL is a read and
375  * write accessible register which governs the reference range used
376  * for enabled Auxiliary channels during ADC and COMP acquisition
377  * sequences. */
378  MXM_REG_AUXTIME = 0x61u, /*!< AUXTIME is a read
379  * and write accessible register which governs the setting time
380  * allowed for biasing AUX/GPIO pins prior to measurements. */
381  MXM_REG_ACQCFG = 0x62u, /*!< ACQCFG is a read and write
382  * accessible register which governs several aspects of the
383  * measurement and acquisition procedure. */
384  MXM_REG_BALSWDLY = 0x63u, /*!< BALSWDLY is a read and
385  * write accessible register which selects the delay intervals
386  * used within Manual and Automated Cell Balancing operations
387  * when ADC measurements are requested. */
388  MXM_REG_MEASUREEN1 = 0x64u, /*!< MEASUREEN1 is a read and write
389  * accessible register which governs the channels measured during
390  * ADC and COMP acquisition sequences. */
391  MXM_REG_MEASUREEN2 = 0x65u, /*!< MEASUREEN2 is a read and write
392  * accessible register which governs the auxiliary channels measured
393  * during ADC and COMP acquisition sequences, as well as
394  * IIR initialization. */
395  MXM_REG_SCANCTRL = 0x66u, /*!< SCANCTRL is a read and write
396  * accessible register which governs the internal measurement
397  * acquisitions (scan) requested of the device. The register also manages
398  * the handling of data generated as a result of any scan request.
399  *
400  * ADC Scans are used for precision measurements of cell and auxiliary
401  * voltages.
402  *
403  * COMP Scans are used for periodic safety/redundancy checking
404  * of ADC results, and in some cases, enhanced communication efficiency.
405  *
406  * On Demand Calibration will run an internal calibration of the ADC and
407  * update the Calibration Data Registers. All ADC measurements requested
408  * by Scan and Diagnostic Configuration and Control settings will be
409  * ignored.
410  *
411  * Balance Switch and Cell Sense Wire Open ADC Diagnostic Scans are a
412  * special class of ADC Scan. Use of these settings temporarily
413  * overrides other Scan and Diagnostic Configuration and Control settings.
414  * See BALSW and Cell Sense Wire Diagnostics for details. */
415  MXM_REG_ADCTEST1A = 0x67u, /*!< ADCTEST1A is a read and write
416  * accessible register which contains user specified arguments used in ALU
417  * Diagnostics. */
418  MXM_REG_ADCTEST1B = 0x68u, /*!< ADCTEST1B is a read and write
419  * accessible register which contains user specified arguments used in ALU
420  * Diagnostics. */
421  MXM_REG_ADCTEST2A = 0x69u, /*!< ADCTEST2A is a read and write
422  * accessible register which contains user specified arguments used in ALU
423  * Diagnostics. */
424  MXM_REG_ADCTEST2B = 0x6Au, /*!< ADCTEST2B is a read and write
425  * accessible register which contains user specified arguments used in ALU
426  * Diagnostics. */
427  MXM_REG_DIAGCFG = 0x6Bu, /*!< DIAGCFG is a read and write
428  * accessible register which governs diagnostic source and mode options
429  * applied to the internal measurement acquisitions (scans). */
430  MXM_REG_CTSTCFG = 0x6Cu, /*!< CTSTCFG is a read and write
431  * accessible register which controls the application of diagnostic
432  * current sources to selected cell input channels. */
433  MXM_REG_AUXSTCFG = 0x6Du, /*!< AUXSTCFG is a read and write
434  * accessible register which controls the application of diagnostic modes
435  * and current source to selected Auxiliary and/or CSA input channels. */
436  MXM_REG_DIAGGENCFG = 0x6Eu, /*!< DIAGGENCFG is a read and write
437  * accessible register which controls the application of general diagnostic
438  * modes to the selected Auxiliary and/or CSA input paths. */
439  MXM_REG_BALSWCTRL = 0x6Fu, /*!< BALSWCTRL is a read and write
440  * accessible register which governs the behavior of the Charge Balancing
441  * Switches in Manual and Auto Cell Balancing modes.
442  *
443  * Write access to this register is blocked during Automated Cell
444  * Balancing operations (CBMODE=001, 1xx). */
445  MXM_REG_BALEXP1 = 0x70u, /*!< BALEXPn is a read and write
446  * accessible register which holds the Cell Balancing Expiration Time
447  * for CELLn (using the switch across SWn and SWn-1).
448  *
449  * BALEXP1 sets the Expiration Time for all Group Auto Cell Balancing and
450  * Discharge modes and the Watchdog time out for Manual Cell Balancing mode.
451  *
452  * Write access to this register is blocked during all Cell Balancing
453  * operations (CBMODE!=000). */
454  MXM_REG_BALEXP2 = 0x71u, /*!< BALEXPn is a read and write
455  * accessible register which holds the Cell Balancing Expiration Time
456  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
457  * Auto Cell Balancing modes only.
458  *
459  * Write access to this register is blocked during Automatic Cell
460  * Balancing operations (CBMODE=1xx). */
461  MXM_REG_BALEXP3 = 0x72u, /*!< BALEXPn is a read and write
462  * accessible register which holds the Cell Balancing Expiration Time
463  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
464  * Auto Cell Balancing modes only.
465  *
466  * Write access to this register is blocked during Automatic Cell
467  * Balancing operations (CBMODE=1xx). */
468  MXM_REG_BALEXP4 = 0x73u, /*!< BALEXPn is a read and write
469  * accessible register which holds the Cell Balancing Expiration Time
470  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
471  * Auto Cell Balancing modes only.
472  *
473  * Write access to this register is blocked during Automatic Cell
474  * Balancing operations (CBMODE=1xx). */
475  MXM_REG_BALEXP5 = 0x74u, /*!< BALEXPn is a read and write
476  * accessible register which holds the Cell Balancing Expiration Time
477  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
478  * Auto Cell Balancing modes only.
479  *
480  * Write access to this register is blocked during Automatic Cell
481  * Balancing operations (CBMODE=1xx). */
482  MXM_REG_BALEXP6 = 0x75u, /*!< BALEXPn is a read and write
483  * accessible register which holds the Cell Balancing Expiration Time
484  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
485  * Auto Cell Balancing modes only.
486  *
487  * Write access to this register is blocked during Automatic Cell
488  * Balancing operations (CBMODE=1xx). */
489  MXM_REG_BALEXP7 = 0x76u, /*!< BALEXPn is a read and write
490  * accessible register which holds the Cell Balancing Expiration Time
491  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
492  * Auto Cell Balancing modes only.
493  *
494  * Write access to this register is blocked during Automatic Cell
495  * Balancing operations (CBMODE=1xx). */
496  MXM_REG_BALEXP8 = 0x77u, /*!< BALEXPn is a read and write
497  * accessible register which holds the Cell Balancing Expiration Time
498  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
499  * Auto Cell Balancing modes only.
500  *
501  * Write access to this register is blocked during Automatic Cell
502  * Balancing operations (CBMODE=1xx). */
503  MXM_REG_BALEXP9 = 0x78u, /*!< BALEXPn is a read and write
504  * accessible register which holds the Cell Balancing Expiration Time
505  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
506  * Auto Cell Balancing modes only.
507  *
508  * Write access to this register is blocked during Automatic Cell
509  * Balancing operations (CBMODE=1xx). */
510  MXM_REG_BALEXP10 = 0x79u, /*!< BALEXPn is a read and write
511  * accessible register which holds the Cell Balancing Expiration Time
512  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
513  * Auto Cell Balancing modes only.
514  *
515  * Write access to this register is blocked during Automatic Cell
516  * Balancing operations (CBMODE=1xx). */
517  MXM_REG_BALEXP11 = 0x7Au, /*!< BALEXPn is a read and write
518  * accessible register which holds the Cell Balancing Expiration Time
519  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
520  * Auto Cell Balancing modes only.
521  *
522  * Write access to this register is blocked during Automatic Cell
523  * Balancing operations (CBMODE=1xx). */
524  MXM_REG_BALEXP12 = 0x7Bu, /*!< BALEXPn is a read and write
525  * accessible register which holds the Cell Balancing Expiration Time
526  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
527  * Auto Cell Balancing modes only.
528  *
529  * Write access to this register is blocked during Automatic Cell
530  * Balancing operations (CBMODE=1xx). */
531  MXM_REG_BALEXP13 = 0x7Cu, /*!< BALEXPn is a read and write
532  * accessible register which holds the Cell Balancing Expiration Time
533  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
534  * Auto Cell Balancing modes only.
535  *
536  * Write access to this register is blocked during Automatic Cell
537  * Balancing operations (CBMODE=1xx). */
538  MXM_REG_BALEXP14 = 0x7Du, /*!< BALEXPn is a read and write
539  * accessible register which holds the Cell Balancing Expiration Time
540  * for CELLn (using the switch across SWn and SWn-1). Used in Individual
541  * Auto Cell Balancing modes only.
542  *
543  * Write access to this register is blocked during Automatic Cell
544  * Balancing operations (CBMODE=1xx). */
545  MXM_REG_BALAUTOUVTHR = 0x7Eu, /*!< BALAUTOUVTHR is a read and write
546  * accessible register which selects the cell under voltage exit threshold
547  * for the ADC when used in Automated Cell Balancing operations.
548  *
549  * A write to this register allows direct setting or automatic selection
550  * of this threshold.
551  *
552  * Write access to this register is blocked during Automatic Cell
553  * Balancing operations (CBMODE=1xx). Also, during active measurement scans,
554  * all writes with CBUVMINCELL=1 will be blocked and will result in ALRTRJCT
555  * being issued (since the MINCELL data may be altered as a result of the
556  * scan in progress).
557  *
558  * A read from this register will display the current value of the threshold
559  * and the method used for its selection. */
560  MXM_REG_BALDLYCTRL = 0x7Fu, /*!< BALDLYCTRL is a read and write
561  * accessible register which selects the delay/timing intervals used within
562  * Automated Cell Balancing operations.
563  *
564  * Write access to this register is blocked during Automated Cell Balancing
565  * operations (CBMODE=001, 1xx). */
566  MXM_REG_BALCTRL = 0x80u, /*!< BALCTRL is a read and write
567  * accessible register which initiates and controls all internal Cell
568  * Balancing modes and operations.
569  *
570  * Any write to this register to a mode other than CBMODE=000 (Disable)
571  * will restart the CBTIMER at zero and launch the requested mode of
572  * operation. */
573  MXM_REG_BALSTAT = 0x81u, /*!< BALSTAT is a read accessible
574  * register which allows the monitoring of any Automated Cell Balancing
575  * operations currently in progress.
576  *
577  * Once a CBMODE is initiated, all status bits persist and are cleared
578  * only when CBMODE is written to 000 (Disabled) or when a new CBMODE
579  * operation is initiated via CBSTART. */
580  MXM_REG_BALUVSTAT = 0x82u, /*!< BALUVSTAT is a read accessible
581  * register which relates current summary information on the Cell
582  * voltages vs. the CBUVTHR undervoltage threshold. */
583  MXM_REG_BALDATA = 0x83u, /*!< BALDATA is a read accessible
584  * register which relates current summary information on the Cell voltage
585  * vs. the CBUVTHR undervoltage threshold. */
586  MXM_REG_I2CPNTR = 0x84u, /*!< MAX17852 only: I2CPNTR is a
587  * read and write accessible register which contains two Pointer bytes
588  * (Register Addresses) available for I2C Master transactions.
589  *
590  * Once I2CSEND initiates a read or write transaction, attempts to write
591  * I2CPNTR during the transaction will be ignored and will case an
592  * I2CRJCT fault to be issued. */
593  MXM_REG_I2CWDATA1 = 0x85u, /*!< MAX17852 only: I2CWDATA1 is a
594  * read and write accessible register which contains the upper data bytes
595  * available for I2C Master Write Mode transactions.
596  *
597  * Once I2CSEND initiates an I2C read or write transaction, attempts to
598  * write I2CWDATA1 during the transaction will be ignored and will cause
599  * an I2CRJCT fault to be issued. */
600  MXM_REG_I2CWDATA2 = 0x86u, /*!< MAX17852 only: I2CWDATA2 is a
601  * read and write accessible register which contains the lower data bytes
602  * available for I2C Master Write Mode transactions.
603  *
604  * Once I2CSEND initiates an I2C read or write transaction, attempts to
605  * write I2CWDATA2 during the transaction will be ignored and will cause
606  * an I2CRJCT fault to be issued. */
607  MXM_REG_I2CRDATA1 = 0x87u, /*!< MAX17852 only: I2CRDATA1 is a
608  * read accessible register which contains the upper data bytes received
609  * for I2C Master Read Mode transactions.
610  *
611  * Note during I2C read transactions, data is updated as each byte is
612  * received/acknowledged, so reading back this register during active
613  * I2C read transactions will cause an I2CRJCT fault to be issued. */
614  MXM_REG_I2CRDATA2 = 0x88u, /*!< MAX17852 only: I2CRDATA2 is a
615  * read accessible register which contains the lower data bytes received
616  * for I2C Master Read Mode transactions.
617  *
618  * Note during I2C read transactions, data is updated as each byte is
619  * received/acknowledged, so reading back this register during active
620  * I2C read transactions will cause an I2CRJCT fault to be issued. */
621  MXM_REG_I2CCFG = 0x89u, /*!< MAX17852 only: I2CCFG is a
622  * read and write accessible register which configures I2C Master
623  * modes and transaction formats.
624  *
625  * Once I2CSEND initiates a read or write transaction, attempts to
626  * write I2CCFG during the transaction will be ignored and will cause
627  * and I2CRJCT fault to be issued. */
628  MXM_REG_I2CSTAT = 0x8Au, /*!< MAX17852 only: I2CSTAT is
629  * a read and write accessible register which shows the current status
630  * of the I2C Master.
631  *
632  * The I2CSTATUS bits are updated in real time, indicating the current
633  * state of the I2C Master and any requested transaction. This status
634  * can be cleared by write operations and modified by transaction progress
635  * or subsequent transaction requests.
636  *
637  * The second byte contains I2C Fault bits, indicating a fault was
638  * observed during an I2C transaction. These bits are updated as they
639  * occur and are only cleared by writing to zero. Several faults may
640  * occur during a corrupted transaction, so it is best to wait until
641  * I2CSTATUS reads 10 (Transaction Error) to ensure all errors have
642  * been reported.
643  *
644  * While not advisable, if further I2C transactions are requested before
645  * the I2C Fault bits from previous transactions are read back and cleared,
646  * a cumulative history of faults will be listed, even if subsequent
647  * transactions are successful. */
648  MXM_REG_I2CSEND = 0x8Bu, /*!< MAX17852 only: I2CSEND is a
649  * read and write accessible register which configures and initiates
650  * an I2C Master transaction.
651  *
652  * A write to this register will initiate an I2C Master transaction.
653  * Only one transaction is supported at any given time. If a write to
654  * I2CSEND occurs during an active I2C transaction already in progress,
655  * the latest transaction request will be ignored and the I2CSEND
656  * contents will not be updated. If this occurs, an I2CRJCT fault will
657  * be issued.
658  *
659  * A read from this register will readback the current contents. This
660  * will represent the last transaction request accepted by the I2C Master. */
661  MXM_REG_ID1 = 0x8Cu, /*!< ID1 is a read accessible register
662  * which contains the 2 LSBytes of the unique Device ID stored in ROM and
663  * subject to ROMCRC validation. */
664  MXM_REG_ID2 = 0x8Du, /*!< ID2 is a read accessible register
665  * which contains the 2 MSBytes of the unique Device ID stored in ROM and
666  * subject to ROMCRC validation. */
667  MXM_REG_OTP2 = 0x8Eu, /*!< Factory Calibration Data ROM
668  * and subject to ROMCRC validation. */
669  MXM_REG_OTP3 = 0x8Fu, /*!< Factory Calibration Data ROM
670  * and subject to ROMCRC validation. */
671  MXM_REG_OTP4 = 0x90u, /*!< Factory Calibration Data ROM
672  * and subject to ROMCRC validation. */
673  MXM_REG_OTP5 = 0x91u, /*!< Factory Calibration Data ROM
674  * and subject to ROMCRC validation. */
675  MXM_REG_OTP6 = 0x92u, /*!< Factory Calibration Data ROM
676  * and subject to ROMCRC validation. */
677  MXM_REG_OTP7 = 0x93u, /*!< Factory Calibration Data ROM
678  * and subject to ROMCRC validation. */
679  MXM_REG_OTP8 = 0x94u, /*!< Factory Calibration Data ROM
680  * and subject to ROMCRC validation. */
681  MXM_REG_OTP9 = 0x95u, /*!< Factory Calibration Data ROM
682  * and subject to ROMCRC validation. */
683  MXM_REG_OTP10 = 0x96u, /*!< Factory Calibration Data ROM
684  * and subject to ROMCRC validation. */
685  MXM_REG_OTP11 = 0x97u, /*!< Factory Calibration Data ROM
686  * and subject to ROMCRC validation. */
687  MXM_REG_OTP12 = 0x98u, /*!< Factory Calibration Data ROM
688  * and subject to ROMCRC validation. */
690 
691 /**
692  * @brief Type for register access for monitoring ICs.
693  */
694 typedef uint16_t MXM_REG_BM;
695 
696 /**
697  * @brief Define enumeration values for bitmasks
698  * @details Generates a bitmask from start to end.
699  * Examples:
700  * - 0000 0001b == MXM_REG_BIT_DEFN(0, 0)
701  * - 0000 1000b == MXM_REG_BIT_DEFN(3, 3)
702  * - 0011 1000b == MXM_REG_BIT_DEFN(3, 5)
703  */
704 #define MXM_REG_BIT_DEFN(start, end) ((MXM_REG_BM)(((MXM_REG_BM)1u << ((end) - (start) + 1u)) - 1u) << (start))
705 
706 /**
707  * @defgroup mxm_bm Bitmasks for register access of MAX1785x
708  * @{
709  */
710 /**
711  * @brief Monitoring Register Null byte
712  */
713 #define MXM_BM_NULL ((MXM_REG_BM)0x00u)
714 /**
715  * @brief Monitoring Register LSB
716  */
717 #define MXM_BM_LSB ((MXM_REG_BM)MXM_REG_BIT_DEFN(0u, 7u))
718 /**
719  * @brief Monitoring Register MSB
720  */
721 #define MXM_BM_MSB ((MXM_REG_BM)MXM_REG_BIT_DEFN(8u, 15u))
722 /**
723  * @brief All bits of monitoring register
724  */
725 #define MXM_BM_WHOLE_REG ((MXM_REG_BM)0xFFFFu)
726 /**
727  * @brief Monitoring Register Version/Model
728  */
729 #define MXM_REG_VERSION_MOD ((MXM_REG_BM)MXM_REG_BIT_DEFN(4u, 15u))
730 /**
731  * @brief Monitoring Register Version/Silicon Version
732  */
733 #define MXM_REG_VERSION_VER ((MXM_REG_BM)MXM_REG_BIT_DEFN(0u, 3u))
734 /**
735  * @brief Monitoring Register 14bit ADC value
736  */
737 #define MXM_REG_ADC_14BIT_VALUE ((MXM_REG_BM)MXM_REG_BIT_DEFN(2u, 15u))
738 /**
739  * @brief ALRTRST bit in STATUS1
740  */
741 #define MXM_REG_STATUS1_ALRTRST ((MXM_REG_BM)((MXM_REG_BM)(1u) << (14u)))
742 /**
743  * @brief ALRTINTRFC bit in STATUS1
744  */
745 #define MXM_REG_STATUS1_ALRTINTRFC ((MXM_REG_BM)((1u) << (4u)))
746 
747 /**
748  * @}
749  */
750 
751 /*========== Extern Constant and Variable Declarations ======================*/
752 
753 /*========== Extern Function Prototypes =====================================*/
754 
755 /*========== Externalized Static Functions Prototypes (Unit Test) ===========*/
756 #ifdef UNITY_UNIT_TEST
757 #endif
758 
759 #endif /* FOXBMS__MXM_REGISTER_MAP_H_ */
uint16_t MXM_REG_BM
Type for register access for monitoring ICs.
MXM_REG_NAME_e
MAX1785x register names.
@ MXM_REG_AUXREFCTRL
@ MXM_REG_CTSTCFG
@ MXM_REG_COMPOVTH
@ MXM_REG_ADCTEST2A
@ MXM_REG_MINMAXCELL
@ MXM_REG_PACKCFG
@ MXM_REG_ADCTEST1B
@ MXM_REG_CELL1
@ MXM_REG_CELL4
@ MXM_REG_AUXSTCFG
@ MXM_REG_BALSHRTTHR
@ MXM_REG_GPIOCFG
@ MXM_REG_BIPUVTHSET
@ MXM_REG_BALEXP11
@ MXM_REG_MSMTCH
@ MXM_REG_STATUS1
@ MXM_REG_ALRTAUXUV
@ MXM_REG_BALAUTOUVTHR
@ MXM_REG_BALEXP6
@ MXM_REG_AUX4
@ MXM_REG_STATUS3
@ MXM_REG_CSAUVTHSET
@ MXM_REG_STATUS2
@ MXM_REG_BALEXP2
@ MXM_REG_OTP4
@ MXM_REG_AUXROVTHSET
@ MXM_REG_OTP3
@ MXM_REG_I2CRDATA2
@ MXM_REG_SWACTION
@ MXM_REG_COMPACCOVTH
@ MXM_REG_AUX0
@ MXM_REG_CSA
@ MXM_REG_ALRTSUM
@ MXM_REG_CELL10
@ MXM_REG_OTP5
@ MXM_REG_BALEXP13
@ MXM_REG_BALLOWTHR
@ MXM_REG_ALRTUVCELL
@ MXM_REG_I2CCFG
@ MXM_REG_OVTHCLR
@ MXM_REG_BALEXP5
@ MXM_REG_ALRTAUXOVEN
@ MXM_REG_COMPACCUVTH
@ MXM_REG_I2CWDATA2
@ MXM_REG_UVTHSET
@ MXM_REG_BALEXP10
@ MXM_REG_OTP9
@ MXM_REG_AUX3
@ MXM_REG_BIPOVTHSET
@ MXM_REG_ALRTOVCELL
@ MXM_REG_BALEXP1
@ MXM_REG_COMPAUXAOPNTH
@ MXM_REG_UVTHCLR
@ MXM_REG_SCANCTRL
@ MXM_REG_BALSTAT
@ MXM_REG_BIPUVTHCLR
@ MXM_REG_CSAOVTHSET
@ MXM_REG_ALRTIRQEN
@ MXM_REG_OTP11
@ MXM_REG_VERSION
@ MXM_REG_MEASUREEN2
@ MXM_REG_ALRTCOMPAUXOV
@ MXM_REG_I2CSTAT
@ MXM_REG_COMPAUXAOVTH
@ MXM_REG_ID1
@ MXM_REG_AUX5
@ MXM_REG_BALEXP14
@ MXM_REG_I2CPNTR
@ MXM_REG_AUXAUVTHSET
@ MXM_REG_ALRTAUXUVEN
@ MXM_REG_CELL9
@ MXM_REG_AUXTIME
@ MXM_REG_BLOCK
@ MXM_REG_DEVCFG2
@ MXM_REG_ALRTAUXOV
@ MXM_REG_COMPOPNTH
@ MXM_REG_COMPAUXRUVTH
@ MXM_REG_OTP10
@ MXM_REG_AUXGPIOCFG
@ MXM_REG_I2CWDATA1
@ MXM_REG_BLKOVTHCLR
@ MXM_REG_AUXAOVTHSET
@ MXM_REG_OTP7
@ MXM_REG_CELL3
@ MXM_REG_BALEXP8
@ MXM_REG_FMEA1
@ MXM_REG_CSAUVTHCLR
@ MXM_REG_I2CRDATA1
@ MXM_REG_ID2
@ MXM_REG_BALEXP9
@ MXM_REG_ALRTCALTST
@ MXM_REG_TOTAL
@ MXM_REG_BALUVSTAT
@ MXM_REG_CELL14
@ MXM_REG_CELL6
@ MXM_REG_OTP8
@ MXM_REG_I2CSEND
@ MXM_REG_ACQCFG
@ MXM_REG_BALCTRL
@ MXM_REG_CELL2
@ MXM_REG_BLKUVTHCLR
@ MXM_REG_BALEXP7
@ MXM_REG_CSAOVTHCLR
@ MXM_REG_DIAG1
@ MXM_REG_BIPOVTHCLR
@ MXM_REG_BALDLYCTRL
@ MXM_REG_ALRTUVEN
@ MXM_REG_BLKUVTHSET
@ MXM_REG_BLKOVTHSET
@ MXM_REG_COMPAUXROVTH
@ MXM_REG_DIAG2
@ MXM_REG_BALEXP3
@ MXM_REG_DIAGCFG
@ MXM_REG_ADCTEST2B
@ MXM_REG_CELL11
@ MXM_REG_AUXAUVTHCLR
@ MXM_REG_ALRTAUXPRTCT
@ MXM_REG_MEASUREEN1
@ MXM_REG_BALSWDLY
@ MXM_REG_BALDATA
@ MXM_REG_CELL5
@ MXM_REG_OTP2
@ MXM_REG_POLARITYCTRL
@ MXM_REG_CELL13
@ MXM_REG_OVTHSET
@ MXM_REG_AUX2
@ MXM_REG_DIAGGENCFG
@ MXM_REG_BALSWCTRL
@ MXM_REG_OTP6
@ MXM_REG_FMEA2
@ MXM_REG_COMPAUXROPNTH
@ MXM_REG_AUX1
@ MXM_REG_CELL7
@ MXM_REG_AUXOVTHCLR
@ MXM_REG_ALRTCOMPOV
@ MXM_REG_AUXRUVTHCLR
@ MXM_REG_ALRTCOMPAUXUV
@ MXM_REG_ADDRESS
@ MXM_REG_BALEXP12
@ MXM_REG_AUXROVTHCLR
@ MXM_REG_ALRTCOMPUV
@ MXM_REG_DEVCFG1
@ MXM_REG_OTP12
@ MXM_REG_ALRTOVEN
@ MXM_REG_ADCTEST1A
@ MXM_REG_COMPUVTH
@ MXM_REG_CELL8
@ MXM_REG_AUXRUVTHSET
@ MXM_REG_COMPAUXAUVTH
@ MXM_REG_CELL12
@ MXM_REG_BALHIGHTHR
@ MXM_REG_ALRTBALSW
@ MXM_REG_BALEXP4