no-OS
max22196.h
Go to the documentation of this file.
1 /***************************************************************************/
39 #ifndef _MAX22196_H
40 #define _MAX22196_H
41 
42 #include <stdint.h>
43 #include <stdbool.h>
44 #include "no_os_spi.h"
45 #include "no_os_gpio.h"
46 #include "no_os_util.h"
47 
48 #define MAX22196_FRAME_SIZE 2
49 
50 #define MAX22196_CHANNELS 8
51 #define MAX22194_CHANNELS 4
52 
53 #define MAX22196_CHN_CNT_RESET 0
54 
55 #define MAX22196_DI_STATE_REG 0x00
56 #define MAX22196_FAULT1_REG 0x01
57 #define MAX22196_F1MASK_REG 0x02
58 #define MAX22196_CFG_REG(x) (0x03 + (x))
59 #define MAX22196_GLOBALCFG_REG 0x0B
60 #define MAX22196_LED_REG 0x0C
61 #define MAX22196_FAULT2_REG 0x0D
62 #define MAX22196_F2MASK_REG 0x0E
63 #define MAX22196_START_STOP_REG 0x0F
64 #define MAX22196_CNT_LSB_REG(x) (0x10 + 2 * (x))
65 #define MAX22196_CNT_MSB_REG(x) (0x11 + 2 * (x))
66 
67 #define MAX22196_ADDR_MASK NO_OS_GENMASK(7, 6)
68 #define MAX22196_REG_ADDR_MASK NO_OS_GENMASK(5, 1)
69 #define MAX22196_RW_MASK NO_OS_BIT(0)
70 
71 #define MAX22196_DI_STATE_MASK(x) NO_OS_BIT(x)
72 #define MAX22196_HITHR_MASK NO_OS_BIT(7)
73 #define MAX22196_SOURCE_MASK NO_OS_BIT(6)
74 #define MAX22196_CURR_MASK NO_OS_GENMASK(5, 4)
75 #define MAX22196_FLTEN_MASK NO_OS_BIT(3)
76 #define MAX22196_DELAY_MASK NO_OS_GENMASK(2, 0)
77 #define MAX22196_CNT_MASK(x) NO_OS_BIT(x)
78 #define MAX22196_CFG_MASK (NO_OS_BIT(7) | NO_OS_GENMASK(5, 4))
79 #define MAX22196_LSB_MASK NO_OS_GENMASK(7, 0)
80 #define MAX22196_MSB_MASK NO_OS_GENMASK(15, 8)
81 #define MAX22196_CNT_BYTE_MASK NO_OS_GENMASK(7, 0)
82 
83 #define MAX22196_FAULT_MASK(x) NO_OS_BIT(x)
84 #define MAX22196_GLOBAL_MASK(x) NO_OS_BIT(x)
85 #define MAX22196_FAULT2_MASK NO_OS_GENMASK(4, 0)
86 
87 #define MAX22196_FILTER_CLRFLT_MASK NO_OS_BIT(3)
88 
92 };
93 
106 };
107 
113 };
114 
118 };
119 
129 };
130 
136 };
137 
139  uint32_t chip_address;
142  bool crc_en;
144 };
145 
147  uint32_t chip_address;
150  uint8_t buff[MAX22196_FRAME_SIZE + 1];
151  uint8_t fault2en;
152  bool crc_en;
154  uint8_t max_chn_nb;
155 };
156 
158 int max22196_reg_write(struct max22196_desc *, uint32_t, uint32_t);
159 
161 int max22196_reg_read(struct max22196_desc *, uint32_t, uint32_t *);
162 
164 int max22196_reg_update(struct max22196_desc *, uint32_t, uint32_t, uint32_t);
165 
167 int max22196_set_mode(struct max22196_desc *, uint32_t, enum max22196_mode);
168 
170 int max22196_chan_cfg(struct max22196_desc *, uint32_t, uint32_t,
171  enum max22196_curr);
172 
174 int max22196_filter_set(struct max22196_desc *, uint32_t, uint32_t, uint32_t,
175  enum max22196_delay);
176 
178 int max22196_filter_get(struct max22196_desc *, uint32_t, uint32_t *,
179  uint32_t *, enum max22196_delay *);
180 
183  bool);
184 
187  bool *);
188 
190 int max22196_global_cfg(struct max22196_desc *, enum max22196_global_cfg, bool);
191 
193 int max22196_set_chan_cnt(struct max22196_desc *, uint32_t, uint16_t);
194 
196 int max22196_get_chan_cnt(struct max22196_desc *, uint32_t, uint16_t *);
197 
199 int max22196_init(struct max22196_desc **, struct max22196_init_param *);
200 
202 int max22196_remove(struct max22196_desc *);
203 
204 #endif
MAX22196_1X_CURRENT
@ MAX22196_1X_CURRENT
Definition: max22196.h:133
MAX22196_FAULT2_OTSHDN2
@ MAX22196_FAULT2_OTSHDN2
Definition: max22196.h:103
max22196_init_param::crc_en
bool crc_en
Definition: max22196.h:142
MAX22196_DELAY_1600US
@ MAX22196_DELAY_1600US
Definition: max22196.h:125
no_os_alloc.h
no_os_gpio_init_param
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:85
MAX22196_FAULT2_MASK
#define MAX22196_FAULT2_MASK
Definition: max22196.h:85
max22196_get_chan_cnt
int max22196_get_chan_cnt(struct max22196_desc *desc, uint32_t ch, uint16_t *cnt_msb_lsb_bytes)
MAX22196 channel counter get function.
Definition: max22196.c:466
max22196_set_mode
int max22196_set_mode(struct max22196_desc *, uint32_t, enum max22196_mode)
MAX22196 function that helps setting the mode of the device.
Definition: max22196.c:195
MAX22196_GLOBAL_LEDINT
@ MAX22196_GLOBAL_LEDINT
Definition: max22196.h:111
max22196_chip_id
max22196_chip_id
Definition: max22196.h:89
max22196_fault_mask
max22196_fault_mask
Definition: max22196.h:94
MAX22196_CHANNELS
#define MAX22196_CHANNELS
Definition: max22196.h:50
MAX22196_DELAY_128000US
@ MAX22196_DELAY_128000US
Definition: max22196.h:127
no_os_spi.h
Header file of SPI Interface.
max22196_reg_update
int max22196_reg_update(struct max22196_desc *, uint32_t, uint32_t, uint32_t)
MAX22196 register update function
Definition: max22196.c:172
max22196.h
Header file of MAX22196 Driver.
MAX22196_HITHR_MASK
#define MAX22196_HITHR_MASK
Definition: max22196.h:72
max22196_chan_cfg
int max22196_chan_cfg(struct max22196_desc *desc, uint32_t ch, uint32_t hi_thr, enum max22196_curr curr)
MAX22196 channel configuration function
Definition: max22196.c:214
max22196_desc::fault2en
uint8_t fault2en
Definition: max22196.h:151
max22196_desc
Definition: max22196.h:146
max22196_remove
int max22196_remove(struct max22196_desc *)
Free the resources allocated during init.
Definition: max22196.c:563
max22196_reg_write
int max22196_reg_write(struct max22196_desc *desc, uint32_t reg, uint32_t val)
MAX22196 register write function.
Definition: max22196.c:99
MAX22196_MSB_MASK
#define MAX22196_MSB_MASK
Definition: max22196.h:80
max22196_chan_cfg
int max22196_chan_cfg(struct max22196_desc *, uint32_t, uint32_t, enum max22196_curr)
MAX22196 channel configuration function
Definition: max22196.c:214
MAX22196_FAULT1_REG
#define MAX22196_FAULT1_REG
Definition: max22196.h:56
max22196_reg_read
int max22196_reg_read(struct max22196_desc *desc, uint32_t reg, uint32_t *val)
MAX22196 register read function.
Definition: max22196.c:127
no_os_spi_msg
Definition: no_os_spi.h:91
max22196_init_param::crc_param
struct no_os_gpio_init_param * crc_param
Definition: max22196.h:141
MAX22196_FAULT2_RFDIS
@ MAX22196_FAULT2_RFDIS
Definition: max22196.h:101
max22196_reg_read
int max22196_reg_read(struct max22196_desc *, uint32_t, uint32_t *)
MAX22196 register read function.
Definition: max22196.c:127
max22196_set_chan_cnt
int max22196_set_chan_cnt(struct max22196_desc *, uint32_t, uint16_t)
MAX22196 channel counter set function
Definition: max22196.c:419
MAX22196_CNT_MASK
#define MAX22196_CNT_MASK(x)
Definition: max22196.h:77
max22196_desc::buff
uint8_t buff[MAX22196_FRAME_SIZE+1]
Definition: max22196.h:150
ID_MAX22194
@ ID_MAX22194
Definition: max22196.h:90
MAX22196_START_STOP_REG
#define MAX22196_START_STOP_REG
Definition: max22196.h:63
MAX22196_FAULT1_V24UV
@ MAX22196_FAULT1_V24UV
Definition: max22196.h:97
MAX22196_FAULT1_VMLOW
@ MAX22196_FAULT1_VMLOW
Definition: max22196.h:96
max22196_init
int max22196_init(struct max22196_desc **, struct max22196_init_param *)
Initialize and configure the MAX22196 device.
Definition: max22196.c:507
max22196_get_chan_cnt
int max22196_get_chan_cnt(struct max22196_desc *, uint32_t, uint16_t *)
MAX22196 channel counter get function.
Definition: max22196.c:466
max22196_fault_mask_get
int max22196_fault_mask_get(struct max22196_desc *desc, enum max22196_fault_mask fault_mask, bool *enabled)
Get fault mask bits from the fault mask registers.
Definition: max22196.c:352
NO_OS_GPIO_HIGH
@ NO_OS_GPIO_HIGH
Definition: no_os_gpio.h:123
MAX22196_SOURCE_MASK
#define MAX22196_SOURCE_MASK
Definition: max22196.h:73
MAX22196_GLOBAL_GPO
@ MAX22196_GLOBAL_GPO
Definition: max22196.h:112
MAX22196_GLOBAL_FSPICLR
@ MAX22196_GLOBAL_FSPICLR
Definition: max22196.h:109
MAX22196_F1MASK_REG
#define MAX22196_F1MASK_REG
Definition: max22196.h:57
no_os_calloc
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:60
max22196_filter_set
int max22196_filter_set(struct max22196_desc *, uint32_t, uint32_t, uint32_t, enum max22196_delay)
MAX22196 filter set function
Definition: max22196.c:236
MAX22196_DELAY_800US
@ MAX22196_DELAY_800US
Definition: max22196.h:124
MAX22196_FAULT2_SPI8CLK
@ MAX22196_FAULT2_SPI8CLK
Definition: max22196.h:104
MAX22196_GLOBALCFG_REG
#define MAX22196_GLOBALCFG_REG
Definition: max22196.h:59
MAX22196_FLTEN_MASK
#define MAX22196_FLTEN_MASK
Definition: max22196.h:75
MAX22196_DELAY_MASK
#define MAX22196_DELAY_MASK
Definition: max22196.h:76
MAX22196_DELAY_400US
@ MAX22196_DELAY_400US
Definition: max22196.h:123
no_os_spi_msg::tx_buff
uint8_t * tx_buff
Definition: no_os_spi.h:93
MAX22196_CHN_CNT_RESET
#define MAX22196_CHN_CNT_RESET
Definition: max22196.h:53
MAX22196_FAULT2_RFDIO
@ MAX22196_FAULT2_RFDIO
Definition: max22196.h:102
MAX22196_REG_ADDR_MASK
#define MAX22196_REG_ADDR_MASK
Definition: max22196.h:68
max22196_global_cfg
int max22196_global_cfg(struct max22196_desc *desc, enum max22196_global_cfg global_cfg, bool enabled)
Set global configuration.
Definition: max22196.c:396
max22196_curr
max22196_curr
Definition: max22196.h:131
max22196_desc::max_chn_nb
uint8_t max_chn_nb
Definition: max22196.h:154
max22196_mode
max22196_mode
Definition: max22196.h:115
max22196_set_mode
int max22196_set_mode(struct max22196_desc *desc, uint32_t ch, enum max22196_mode mode)
MAX22196 function that helps setting the mode of the device.
Definition: max22196.c:195
no_os_field_prep
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)
MAX22196_SINK_MODE
@ MAX22196_SINK_MODE
Definition: max22196.h:116
max22196_desc::crc_desc
struct no_os_gpio_desc * crc_desc
Definition: max22196.h:149
MAX22196_CURR_MASK
#define MAX22196_CURR_MASK
Definition: max22196.h:74
MAX22196_FAULT_MASK
#define MAX22196_FAULT_MASK(x)
Definition: max22196.h:83
MAX22196_CFG_REG
#define MAX22196_CFG_REG(x)
Definition: max22196.h:58
MAX22196_RW_MASK
#define MAX22196_RW_MASK
Definition: max22196.h:69
max22196_desc::chip_id
enum max22196_chip_id chip_id
Definition: max22196.h:153
MAX22196_CFG_MASK
#define MAX22196_CFG_MASK
Definition: max22196.h:78
max22196_delay
max22196_delay
Definition: max22196.h:120
max22196_init
int max22196_init(struct max22196_desc **desc, struct max22196_init_param *param)
Initialize and configure the MAX22196 device.
Definition: max22196.c:507
MAX22196_HTL_MODE
@ MAX22196_HTL_MODE
Definition: max22196.h:132
MAX22196_GLOBAL_LED9
@ MAX22196_GLOBAL_LED9
Definition: max22196.h:110
max22196_desc::crc_en
bool crc_en
Definition: max22196.h:152
max22196_desc::comm_desc
struct no_os_spi_desc * comm_desc
Definition: max22196.h:148
max22196_init_param::chip_address
uint32_t chip_address
Definition: max22196.h:139
MAX22196_CNT_MSB_REG
#define MAX22196_CNT_MSB_REG(x)
Definition: max22196.h:65
max22196_reg_write
int max22196_reg_write(struct max22196_desc *, uint32_t, uint32_t)
MAX22196 register write function.
Definition: max22196.c:99
no_os_gpio_remove
int32_t no_os_gpio_remove(struct no_os_gpio_desc *desc)
Free the resources allocated by no_os_gpio_get().
Definition: no_os_gpio.c:110
no_os_spi_desc
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
MAX22196_DELAY_3200US
@ MAX22196_DELAY_3200US
Definition: max22196.h:126
MAX22196_ADDR_MASK
#define MAX22196_ADDR_MASK
Definition: max22196.h:67
MAX22196_FAULT1_FAULT2
@ MAX22196_FAULT1_FAULT2
Definition: max22196.h:100
MAX22196_GLOBAL_MASK
#define MAX22196_GLOBAL_MASK(x)
Definition: max22196.h:84
no_os_gpio_desc
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:102
MAX22194_CHANNELS
#define MAX22194_CHANNELS
Definition: max22196.h:51
no_os_spi_transfer
int32_t no_os_spi_transfer(struct no_os_spi_desc *desc, struct no_os_spi_msg *msgs, uint32_t len)
Iterate over head list and send all spi messages.
Definition: no_os_spi.c:191
no_os_spi_msg::bytes_number
uint32_t bytes_number
Definition: no_os_spi.h:97
no_os_gpio_get
int32_t no_os_gpio_get(struct no_os_gpio_desc **desc, const struct no_os_gpio_init_param *param)
Obtain the GPIO decriptor.
Definition: no_os_gpio.c:55
max22196_init_param
Definition: max22196.h:138
max22196_desc::chip_address
uint32_t chip_address
Definition: max22196.h:147
MAX22196_DELAY_20MS
@ MAX22196_DELAY_20MS
Definition: max22196.h:128
MAX22196_F2MASK_REG
#define MAX22196_F2MASK_REG
Definition: max22196.h:62
MAX22196_FILTER_CLRFLT_MASK
#define MAX22196_FILTER_CLRFLT_MASK
Definition: max22196.h:87
no_os_field_get
uint32_t no_os_field_get(uint32_t mask, uint32_t word)
MAX22196_LSB_MASK
#define MAX22196_LSB_MASK
Definition: max22196.h:79
MAX22196_FRAME_SIZE
#define MAX22196_FRAME_SIZE
Definition: max22196.h:48
max22196_filter_get
int max22196_filter_get(struct max22196_desc *desc, uint32_t ch, uint32_t *flt_en, uint32_t *clr_filtr, enum max22196_delay *delay)
MAX22196 filter get function
Definition: max22196.c:268
no_os_free
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:75
MAX22196_CNT_BYTE_MASK
#define MAX22196_CNT_BYTE_MASK
Definition: max22196.h:81
MAX22196_FAULT2_REG
#define MAX22196_FAULT2_REG
Definition: max22196.h:61
max22196_init_param::comm_param
struct no_os_spi_init_param * comm_param
Definition: max22196.h:140
max22196_filter_get
int max22196_filter_get(struct max22196_desc *, uint32_t, uint32_t *, uint32_t *, enum max22196_delay *)
MAX22196 filter get function
Definition: max22196.c:268
max22196_fault_mask_set
int max22196_fault_mask_set(struct max22196_desc *desc, enum max22196_fault_mask fault_mask, bool enabled)
Set fault mask bits in the fault mask registers.
Definition: max22196.c:301
MAX22196_DELAY_50US
@ MAX22196_DELAY_50US
Definition: max22196.h:121
MAX22196_CNT_LSB_REG
#define MAX22196_CNT_LSB_REG(x)
Definition: max22196.h:64
ID_MAX22196
@ ID_MAX22196
Definition: max22196.h:91
MAX22196_TTL_OP_OFF
@ MAX22196_TTL_OP_OFF
Definition: max22196.h:135
max22196_remove
int max22196_remove(struct max22196_desc *desc)
Free the resources allocated during init.
Definition: max22196.c:563
MAX22196_FAULT2_VAUV
@ MAX22196_FAULT2_VAUV
Definition: max22196.h:105
max22196_init_param::chip_id
enum max22196_chip_id chip_id
Definition: max22196.h:143
no_os_spi_remove
int32_t no_os_spi_remove(struct no_os_spi_desc *desc)
Free the resources allocated by no_os_spi_init().
Definition: no_os_spi.c:122
MAX22196_DELAY_100US
@ MAX22196_DELAY_100US
Definition: max22196.h:122
no_os_gpio.h
Header file of GPIO Interface.
MAX22196_SOURCE_MODE
@ MAX22196_SOURCE_MODE
Definition: max22196.h:117
MAX22196_FAULT1_OTSHDN1
@ MAX22196_FAULT1_OTSHDN1
Definition: max22196.h:99
max22196_set_chan_cnt
int max22196_set_chan_cnt(struct max22196_desc *desc, uint32_t ch, uint16_t cnt_msb_lsb_bytes)
MAX22196 channel counter set function
Definition: max22196.c:419
no_os_spi_init
int32_t no_os_spi_init(struct no_os_spi_desc **desc, const struct no_os_spi_init_param *param)
Initialize the SPI communication peripheral.
Definition: no_os_spi.c:58
MAX22196_FAULT1_TEMPALM
@ MAX22196_FAULT1_TEMPALM
Definition: max22196.h:98
max22196_reg_update
int max22196_reg_update(struct max22196_desc *desc, uint32_t reg, uint32_t mask, uint32_t val)
MAX22196 register update function
Definition: max22196.c:172
no_os_util.h
Header file of utility functions.
max22196_global_cfg
max22196_global_cfg
Definition: max22196.h:108
max22196_filter_set
int max22196_filter_set(struct max22196_desc *desc, uint32_t ch, uint32_t flt_en, uint32_t clr_filtr, enum max22196_delay delay)
MAX22196 filter set function
Definition: max22196.c:236
no_os_gpio_direction_output
int32_t no_os_gpio_direction_output(struct no_os_gpio_desc *desc, uint8_t value)
Enable the output direction of the specified GPIO.
Definition: no_os_gpio.c:153
max22196_fault_mask_set
int max22196_fault_mask_set(struct max22196_desc *, enum max22196_fault_mask, bool)
Set fault mask bits in the fault mask registers.
Definition: max22196.c:301
max22196_fault_mask_get
int max22196_fault_mask_get(struct max22196_desc *, enum max22196_fault_mask, bool *)
Get fault mask bits from the fault mask registers.
Definition: max22196.c:352
MAX22196_GLOBAL_REFDISHTCFG
@ MAX22196_GLOBAL_REFDISHTCFG
Definition: max22196.h:95
errno.h
Error macro definition for ARM Compiler.
no_os_spi_init_param
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131
MAX22196_3X_CURRENT
@ MAX22196_3X_CURRENT
Definition: max22196.h:134