no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
max14001.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __MAX14001_H__
34#define __MAX14001_H__
35
36#include <stdint.h>
37#include <stdbool.h>
38#include "no_os_spi.h"
39#include "no_os_gpio.h"
40#include "no_os_util.h"
41
42#define MAX14001_REG_READ(x) (((x) << 11) & NO_OS_GENMASK(15, 11))
43#define MAX14001_REG_WRITE(x,y) (MAX14001_REG_READ(x) | \
44 NO_OS_BIT(10) | \
45 (y & MAX14001_REG_DATA_MASK))
46#define MAX14001_REG_DATA_MASK NO_OS_GENMASK(9, 0)
47#define VERIFICATION_REG(x) ((x) + 0x10)
48#define MAX14001_SPI_REG_WRITE_ENABLE 0x294
49#define MAX14001_SPI_REG_WRITE_DISABLE 0x000
50
51/*
52 * MAX14001 registers definition
53 */
54#define MAX14001_ADC_REG 0x00
55#define MAX14001_FADC_REG 0x01
56#define MAX14001_FLAGS_REG 0x02
57#define MAX14001_FLTEN_REG 0x03
58#define MAX14001_THL_REG 0x04
59#define MAX14001_THU_REG 0x05
60#define MAX14001_INRR_REG 0x06
61#define MAX14001_INRT_REG 0x07
62#define MAX14001_INRP_REG 0x08
63#define MAX14001_CFG_REG 0x09
64#define MAX14001_ENBL_REG 0x0A
65#define MAX14001_ACT_REG 0x0B
66#define MAX14001_WEN_REG 0x0C
67#define MAX14001_FLTV_REG 0x13
68#define MAX14001_THLV_REG 0x14
69#define MAX14001_THUV_REG 0x15
70#define MAX14001_INRRV_REG 0x16
71#define MAX14001_INRTV_REG 0x17
72#define MAX14001_INRPV_REG 0x18
73#define MAX14001_CFGV_REG 0x19
74#define MAX14001_ENBLV_REG 0x1A
75
76/*
77 * MAX14001_ACT_REG
78 */
79
81#define MAX14001_RSET_MASK NO_OS_BIT(7)
82
84#define MAX14001_SRES_MASK NO_OS_BIT(6)
85
87#define MAX14001_INPLS_MASK NO_OS_BIT(9)
88
89/*
90 * MAX14001_FLAGS_REG
91 */
92#define MAX14001_ADC_FLAG_MASK NO_OS_BIT(1)
93#define MAX14001_INRD_FLAG_MASK NO_OS_BIT(2)
94#define MAX14001_SPI_FLAG_MASK NO_OS_BIT(3)
95#define MAX14001_COM_FLAG_MASK NO_OS_BIT(4)
96#define MAX14001_CRCL_FLAG_MASK NO_OS_BIT(5)
97#define MAX14001_CRCF_FLAG_MASK NO_OS_BIT(6)
98#define MAX14001_FET_FLAG_MASK NO_OS_BIT(7)
99#define MAX14001_MV_FLAG_MASK NO_OS_BIT(8)
100
101/*
102 * MAX14001_FLTEN_REG
103 */
104#define MAX14001_DYEN_FLTEN_MASK NO_OS_BIT(0)
105#define MAX14001_EADC_FLTEN_MASK NO_OS_BIT(1)
106#define MAX14001_EINRD_FLTEN_MASK NO_OS_BIT(2)
107#define MAX14001_ESPI_FLTEN_MASK NO_OS_BIT(3)
108#define MAX14001_ECOM_FLTEN_MASK NO_OS_BIT(4)
109#define MAX14001_ECRCL_FLTEN_MASK NO_OS_BIT(5)
110#define MAX14001_ECRCF_FLTEN_MASK NO_OS_BIT(6)
111#define MAX14001_EFET_FLTEN_MASK NO_OS_BIT(7)
112#define MAX14001_EMV_FLTEN_MASK NO_OS_BIT(8)
113
114/*
115 * MAX14001_INRP_REG
116 */
117#define MAX14001_IINR_INRP_MASK NO_OS_GENMASK(9, 6)
118#define MAX14001_IINR_INRP_MODE(a) ((MAX14001_IINR(a)) << 6)
119#define MAX14001_TINR_INRP_MASK NO_OS_GENMASK(5, 2)
120#define MAX14001_TINR_INRP_MODE(a) ((MAX14001_TINR(a)) << 2)
121#define MAX14001_DU_INRP_MASK NO_OS_GENMASK(1, 0)
122#define MAX14001_DU_INRP_MODE(a) (((a) & 0x3) << 0)
123
124/*
125 * MAX14001_CFG_REG
126 */
127#define MAX14001_IBIAS_CFG_MASK NO_OS_GENMASK(9, 6)
128#define MAX14001_IBIAS_CFG_MODE(a) ((MAX14001_IBIAS(a)) << 6)
129#define MAX14001_EXRF_CFG_MASK NO_OS_BIT(5)
130#define MAX14001_EXTI_CFG_MASK NO_OS_BIT(4)
131#define MAX14001_FT_CFG_MASK NO_OS_GENMASK(3, 2)
132#define MAX14001_FT_CFG_MODE(a) (((a) & 0x3) << 2)
133#define MAX14001_FAST_CFG_MASK NO_OS_BIT(1)
134#define MAX14001_IRAW_CFG_MASK NO_OS_BIT(0)
135
136/*
137 * MAX14001_ENBL_REG
138 */
139#define MAX14001_ENA_ENBL_MASK NO_OS_BIT(4)
140
141/*
142 * 16-bit bitswap
143 */
144#define REVERSE_UINT16(x) ((((x >> 0) & 1) << 15) | \
145 (((x >> 1) & 1 ) << 14) | \
146 (((x >> 2) & 1 ) << 13) | \
147 (((x >> 3) & 1 ) << 12) | \
148 (((x >> 4) & 1 ) << 11) | \
149 (((x >> 5) & 1 ) << 10) | \
150 (((x >> 6) & 1 ) << 9) | \
151 (((x >> 7) & 1 ) << 8) | \
152 (((x >> 8) & 1 ) << 7) | \
153 (((x >> 9) & 1 ) << 6) | \
154 (((x >> 10) & 1) << 5) | \
155 (((x >> 11) & 1) << 4) | \
156 (((x >> 12) & 1) << 3) | \
157 (((x >> 13) & 1) << 2) | \
158 (((x >> 14) & 1) << 1) | \
159 (((x >> 15) & 1) << 0))
160
161/*
162 * MAX14001 Quantization of configuration inputs
163 */
164#define MAX14001_CFG_MIN 0
165#define MAX14001_CFG_MAX 0xF
166#define MAX14001_CFG_Q(x,y) (no_os_clamp( \
167 NO_OS_DIV_ROUND_CLOSEST(x,y), \
168 (MAX14001_CFG_MIN),(MAX14001_CFG_MAX)))
169/*
170 * MAX14001 TINR input to bits equivelent
171 */
172#define MAX14001_TINR_INC 8 //in terms of ms
173#define MAX14001_TINR(x) MAX14001_CFG_Q(x, MAX14001_TINR_INC)
174
175/*
176 * MAX14001 IINR input to bits equivelent
177 */
178#define MAX14001_IINR_INC 7 //in terms of mA
179#define MAX14001_IINR(x) MAX14001_CFG_Q(x, MAX14001_IINR_INC)
180
181/*
182 * MAX14001 IBIAS input to bits equivelent
183 */
184#define MAX14001_MUL 100
185#define MAX14001_IBIAS_INC 25 //increment of 0.25mA
186#define MAX14001_IBIAS(x) MAX14001_CFG_Q((int)(x*MAX14001_MUL), \
187 MAX14001_IBIAS_INC)
188
194 DUTY_OFF, //default, duty cycle limiting function off
198};
199
210
215
220
222int max14001_read(struct max14001_dev *dev,
223 uint8_t reg_addr,
224 uint16_t *reg_data);
225
227int max14001_write(struct max14001_dev *dev,
228 uint8_t reg_addr,
229 uint16_t reg_data);
230
232int max14001_reg_update(struct max14001_dev *dev,
233 uint8_t reg_addr,
234 uint16_t mask,
235 uint16_t data);
236
239 uint8_t reg_addr,
240 uint16_t mask,
241 uint16_t data);
242
246
248int max14001_init_config(struct max14001_dev *dev);
249
251int max14001_wen(struct max14001_dev *dev, bool write_enable);
252
254int max14001_full_reset(struct max14001_dev *dev);
255
257int max14001_reg_reset(struct max14001_dev *dev);
258
260int max14001_inpls_reset(struct max14001_dev *dev);
261
263int max14001_fast_config(struct max14001_dev *dev,
264 bool fast);
265
267int max14001_iraw_config(struct max14001_dev *dev,
268 bool raw_data);
269
271int max14001_emv_config(struct max14001_dev *dev,
272 bool mode);
273
275int max14001_efet_config(struct max14001_dev *dev,
276 bool mode);
277
279int max14001_ecrcf_config(struct max14001_dev *dev,
280 bool mode);
281
283int max14001_ecrcl_config(struct max14001_dev *dev,
284 bool mode);
285
287int max14001_ecom_config(struct max14001_dev *dev,
288 bool mode);
289
291int max14001_espi_config(struct max14001_dev *dev,
292 bool mode);
293
295int max14001_einrd_config(struct max14001_dev *dev,
296 bool mode);
297
299int max14001_eadc_config(struct max14001_dev *dev,
300 bool mode);
301
303int max14001_dyen_config(struct max14001_dev *dev,
304 bool mode);
305
307int max14001_ena_config(struct max14001_dev *dev,
308 bool enable);
309
311int max14001_exrf_config(struct max14001_dev *dev,
312 bool mode);
313
315int max14001_exti_config(struct max14001_dev *dev,
316 bool mode);
317
319int max14001_tinr_config(struct max14001_dev *dev,
320 int mode);
321
323int max14001_iinr_config(struct max14001_dev *dev,
324 int mode);
325
327int max14001_du_config(struct max14001_dev *dev,
328 enum max14001_du mode);
329
331int max14001_ibias_config(struct max14001_dev *dev,
332 float mode);
333
335int max14001_ft_config(struct max14001_dev *dev,
336 enum max14001_ft mode);
337
339int max14001_get_data_raw(struct max14001_dev *dev, uint16_t *data);
340
342int max14001_get_data_filtered(struct max14001_dev *dev, uint16_t *data);
343
345int max14001_remove(struct max14001_dev *dev);
346
347#endif /* __MAX14001_H__ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int max14001_exti_config(struct max14001_dev *dev, bool mode)
Current source connection.
Definition max14001.c:534
int max14001_du_config(struct max14001_dev *dev, enum max14001_du mode)
Set maximum duty cycle for inrush current over the last 10 seconds.
Definition max14001.c:582
max14001_du
MAX14001 list of possible duty cycle modes.
Definition max14001.h:193
@ DUTY_1P6
Definition max14001.h:195
@ DUTY_OFF
Definition max14001.h:194
@ DUTY_6P3
Definition max14001.h:197
@ DUTY_3P1
Definition max14001.h:196
int max14001_reg_reset(struct max14001_dev *dev)
Software reset. Restores all registers to their POR value.
Definition max14001.c:317
int max14001_wen(struct max14001_dev *dev, bool write_enable)
Enable write to registers.
Definition max14001.c:295
int max14001_ecom_config(struct max14001_dev *dev, bool mode)
Enable COM fault.
Definition max14001.c:399
int max14001_inpls_reset(struct max14001_dev *dev)
Trigger an inrush current pulse.
Definition max14001.c:327
int max14001_init(struct max14001_dev **device, struct max14001_init_param init_param)
Initialize the device.
Definition max14001.c:183
int max14001_ecrcf_config(struct max14001_dev *dev, bool mode)
Enable CRCF fault.
Definition max14001.c:369
int max14001_ecrcl_config(struct max14001_dev *dev, bool mode)
Enable CRCL fault.
Definition max14001.c:384
int max14001_fast_config(struct max14001_dev *dev, bool fast)
Enable/Disable fast inrush mode.
Definition max14001.c:474
int max14001_exrf_config(struct max14001_dev *dev, bool mode)
Selects the voltage reference source for the ADC.
Definition max14001.c:519
int max14001_emv_config(struct max14001_dev *dev, bool mode)
Enable MV fault.
Definition max14001.c:339
int max14001_init_config(struct max14001_dev *dev)
Initialize the configurations of device.
Definition max14001.c:215
int max14001_read(struct max14001_dev *dev, uint8_t reg_addr, uint16_t *reg_data)
Read from device.
Definition max14001.c:48
int max14001_efet_config(struct max14001_dev *dev, bool mode)
Enable FET fault.
Definition max14001.c:354
int max14001_eadc_config(struct max14001_dev *dev, bool mode)
Enable ADC fault.
Definition max14001.c:444
int max14001_get_data_raw(struct max14001_dev *dev, uint16_t *data)
Get adc data.
Definition max14001.c:634
int max14001_full_reset(struct max14001_dev *dev)
Full reset, same effect as power on reset.
Definition max14001.c:307
int max14001_einrd_config(struct max14001_dev *dev, bool mode)
Enable INRD fault.
Definition max14001.c:429
int max14001_iinr_config(struct max14001_dev *dev, int mode)
Configure 4-bit inrush current.
Definition max14001.c:564
int max14001_espi_config(struct max14001_dev *dev, bool mode)
Enable SPI fault.
Definition max14001.c:414
int max14001_iraw_config(struct max14001_dev *dev, bool raw_data)
Selects Inrush comparator input multiplexer.
Definition max14001.c:489
int max14001_remove(struct max14001_dev *dev)
Free the resources allocated by max14001_init().
Definition max14001.c:661
int max14001_ena_config(struct max14001_dev *dev, bool enable)
Enable/Disable field-side current sink.
Definition max14001.c:504
int max14001_ibias_config(struct max14001_dev *dev, float mode)
Configure 4-bit bias current.
Definition max14001.c:599
int max14001_tinr_config(struct max14001_dev *dev, int mode)
Configure 4-bit inrush time.
Definition max14001.c:549
int max14001_ft_config(struct max14001_dev *dev, enum max14001_ft mode)
Set number of readings averaged in the ADC filter.
Definition max14001.c:617
max14001_ft
MAX14001 list of possible filtering modes.
Definition max14001.h:204
@ AVERAGE_2_READINGS
Definition max14001.h:206
@ AVERAGE_4_READINGS
Definition max14001.h:207
@ AVERAGE_8_READINGS
Definition max14001.h:208
@ FILTER_OFF
Definition max14001.h:205
int max14001_dyen_config(struct max14001_dev *dev, bool mode)
Enable dynamic FAULT signal.
Definition max14001.c:459
int max14001_get_data_filtered(struct max14001_dev *dev, uint16_t *data)
Get filtered adc data.
Definition max14001.c:648
int max14001_write_config_verify(struct max14001_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
Write to config registers then to corresponding verification register.
Definition max14001.c:149
int max14001_reg_update(struct max14001_dev *dev, uint8_t reg_addr, uint16_t mask, uint16_t data)
SPI write to device using a mask.
Definition max14001.c:118
int max14001_write(struct max14001_dev *dev, uint8_t reg_addr, uint16_t reg_data)
Write to device.
Definition max14001.c:90
Header file of GPIO Interface.
Header file of SPI Interface.
Header file of utility functions.
Definition ad9361_util.h:63
Definition max14001.h:211
struct no_os_spi_desc * spi_desc
Definition max14001.h:213
Definition max14001.h:216
struct no_os_spi_init_param spi_init
Definition max14001.h:218
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128
enum no_os_spi_mode mode
Definition no_os_spi.h:136