no-OS
max9611.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef __MAX9611_H__
41 #define __MAX9611_H__
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 #include <stdint.h>
47 #include <stdlib.h>
48 #include "no_os_i2c.h"
49 #include "no_os_util.h"
50 #include "no_os_error.h"
51 #include "no_os_delay.h"
52 
53 #define MAX9611_MUX_MASK NO_OS_GENMASK(2, 0)
54 #define MAX9611_MODE_MASK NO_OS_GENMASK(7, 5)
55 #define MAX9611_RAW_DATA_MASK NO_OS_GENMASK(15, 4)
56 
57 #define MAX9611_SHDN_MASK NO_OS_BIT(3)
58 #define MAX9611_LR_MASK NO_OS_BIT(4)
59 #define MAX9611_DTIME_MASK NO_OS_BIT(3)
60 #define MAX9611_RTIME_MASK NO_OS_BIT(2)
61 
62 #define MAX9611_CSA_MSB 0x00
63 #define MAX9611_CSA_LSB 0x01
64 #define MAX9611_RSP_MSB 0x02
65 #define MAX9611_RSP_LSB 0x03
66 #define MAX9611_OUT_MSB 0x04
67 #define MAX9611_OUT_LSB 0x05
68 #define MAX9611_SET_MSB 0x06
69 #define MAX9611_SET_LSB 0x07
70 #define MAX9611_TMP_MSB 0x08
71 #define MAX9611_TMP_LSB 0x09
72 #define MAX9611_CTR1 0x0A
73 #define MAX9611_CTR2 0x0B
74 
75 #define MAX9611_OUT_OF_BOUNDS 0x0C
76 
77 /******************************************************************************/
78 /*************************** Types Declarations *******************************/
79 /******************************************************************************/
86 };
87 
93 };
94 
98 };
99 
103 };
104 
114 };
115 
120 };
121 
122 struct max9611_dev {
124  /* ADC Data configuration */
126 };
127 
130 };
131 
132 /* Generate slave address depending on A0 and A1 logic levels */
133 int max9611_addr_gen(struct max9611_init_param *device_ip,
134  enum max9611_addr_lvls a0, enum max9611_addr_lvls a1);
135 
136 /* Initialize device */
137 int max9611_init(struct max9611_dev **device,
139 
140 /* Deallocate resources for device */
141 int max9611_remove(struct max9611_dev *dev);
142 
143 /* Read byte/s from selected starting register */
144 int max9611_read(struct max9611_dev *dev, uint8_t addr,
145  uint8_t bytes, uint8_t *read_data);
146 
147 /* Write byte/s to selected starting register */
148 int max9611_write(struct max9611_dev *dev, uint8_t addr,
149  uint8_t bytes, uint8_t *write_data);
150 
151 /* Update selected register using mask and desired value */
152 int max9611_reg_update(struct max9611_dev *dev, uint8_t addr,
153  int update_mask, int update_val);
154 
155 /* Set MAX9611 operating mode */
156 int max9611_set_mode(struct max9611_dev *dev, enum max9611_mode_conf mode);
157 
158 /* Get MAX9611 operating mode */
159 int max9611_get_mode(struct max9611_dev *dev, enum max9611_mode_conf *mode);
160 
161 /* Set MAX9611 MUX configuration */
162 int max9611_set_mux(struct max9611_dev *dev, enum max9611_mux_conf mux);
163 
164 /* Get MAX9611 MUX configuration */
165 int max9611_get_mux(struct max9611_dev *dev, enum max9611_mux_conf *mux);
166 
167 /* Configure MAX9611 for shutdown or power up */
168 int max9611_shutdown(struct max9611_dev *dev, bool is_shdn);
169 
170 /* Set MAX9611 LR bit */
171 int max9611_set_lr(struct max9611_dev *dev, bool is_normal);
172 
173 /* Get MAX9611 LR bit */
174 int max9611_get_lr(struct max9611_dev *dev, bool *lr);
175 
176 /* Set MAX9611 delay time */
177 int max9611_set_delay(struct max9611_dev *dev, enum max9611_delay_time dtime);
178 
179 /* Get MAX9611 delay time */
180 int max9611_get_delay(struct max9611_dev *dev, enum max9611_delay_time *dtime);
181 
182 /* Set MAX9611 retry time */
183 int max9611_set_retry(struct max9611_dev *dev, enum max9611_retry_time rtime);
184 
185 /* Get MAX9611 retry time */
186 int max9611_get_retry(struct max9611_dev *dev, enum max9611_retry_time *rtime);
187 
188 /* Get MAX9611 raw data */
189 int max9611_get_raw(struct max9611_dev *dev, uint16_t *raw);
190 
191 #endif /* __MAX9611_H__ */
MAX9611_RSP_MSB
#define MAX9611_RSP_MSB
Definition: max9611.h:64
max9611_read
int max9611_read(struct max9611_dev *dev, uint8_t addr, uint8_t bytes, uint8_t *read_data)
Reads data from device register (I2C)
Definition: max9611.c:150
no_os_alloc.h
max9611_get_mux
int max9611_get_mux(struct max9611_dev *dev, enum max9611_mux_conf *mux)
Get the internal MUX settings.
Definition: max9611.c:310
max9611_dev
Definition: max9611.h:122
no_os_i2c_write
int32_t no_os_i2c_write(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Write data to slave device.
Definition: no_os_i2c.c:165
MAX9611_DTIME_MASK
#define MAX9611_DTIME_MASK
Definition: max9611.h:59
no_os_i2c_init
int32_t no_os_i2c_init(struct no_os_i2c_desc **desc, const struct no_os_i2c_init_param *param)
Initialize the I2C communication peripheral.
Definition: no_os_i2c.c:58
max9611_shutdown
int max9611_shutdown(struct max9611_dev *dev, bool is_shdn)
Device shutdown or power up.
Definition: max9611.c:330
max9611_reg_update
int max9611_reg_update(struct max9611_dev *dev, uint8_t addr, int update_mask, int update_val)
Update selected I2C register contents.
Definition: max9611.c:212
no_os_i2c_init_param::slave_address
uint8_t slave_address
Definition: no_os_i2c.h:76
max9611_get_raw
int max9611_get_raw(struct max9611_dev *dev, uint16_t *raw)
Receive data from ADC (single value only).
Definition: max9611.c:454
no_os_i2c_remove
int32_t no_os_i2c_remove(struct no_os_i2c_desc *desc)
Free the resources allocated by no_os_i2c_init().
Definition: no_os_i2c.c:119
max9611_write
int max9611_write(struct max9611_dev *dev, uint8_t addr, uint8_t bytes, uint8_t *write_data)
Writes data to device register (I2C)
Definition: max9611.c:178
max9611_read
int max9611_read(struct max9611_dev *dev, uint8_t addr, uint8_t bytes, uint8_t *read_data)
Reads data from device register (I2C)
Definition: max9611.c:150
max9611_set_mux
int max9611_set_mux(struct max9611_dev *dev, enum max9611_mux_conf mux)
Configures the internal MUX settings.
Definition: max9611.c:270
max9611_get_lr
int max9611_get_lr(struct max9611_dev *dev, bool *lr)
Get LR bit value.
Definition: max9611.c:360
MAX9611_DATA_RSP
@ MAX9611_DATA_RSP
Definition: max9611.h:82
MAX9611_CONF_SENSE_8X
@ MAX9611_CONF_SENSE_8X
Definition: max9611.h:108
MAX9611_OUT_MSB
#define MAX9611_OUT_MSB
Definition: max9611.h:66
max9611_get_raw
int max9611_get_raw(struct max9611_dev *dev, uint16_t *raw)
Receive data from ADC (single value only).
Definition: max9611.c:454
no_os_delay.h
Header file of Delay functions.
MAX9611_COMPARATOR_MODE
@ MAX9611_COMPARATOR_MODE
Definition: max9611.h:119
max9611_addr_gen
int max9611_addr_gen(struct max9611_init_param *device_ip, enum max9611_addr_lvls a0, enum max9611_addr_lvls a1)
Generates slave address based on A1 and A0 pin values.
Definition: max9611.c:60
MAX9611_MODE_MASK
#define MAX9611_MODE_MASK
Definition: max9611.h:54
MAX9611_TMP_MSB
#define MAX9611_TMP_MSB
Definition: max9611.h:70
device
Definition: ad9361_util.h:75
MAX9611_50MS
@ MAX9611_50MS
Definition: max9611.h:101
max9611_set_retry
int max9611_set_retry(struct max9611_dev *dev, enum max9611_retry_time rtime)
Configures MAX9611 retry time.
Definition: max9611.c:417
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
max9611_write
int max9611_write(struct max9611_dev *dev, uint8_t addr, uint8_t bytes, uint8_t *write_data)
Writes data to device register (I2C)
Definition: max9611.c:178
max9611_set_mux
int max9611_set_mux(struct max9611_dev *dev, enum max9611_mux_conf mux)
Configures the internal MUX settings.
Definition: max9611.c:270
max9611_init
int max9611_init(struct max9611_dev **device, struct max9611_init_param init_param)
Initializes the communication peripheral and checks if the device is present.
Definition: max9611.c:103
bool
bool
Definition: common.h:54
max9611_get_mode
int max9611_get_mode(struct max9611_dev *dev, enum max9611_mode_conf *mode)
Get the MAX9611 operating mode.
Definition: max9611.c:250
MAX9611_CTR2
#define MAX9611_CTR2
Definition: max9611.h:73
no_os_field_prep
uint32_t no_os_field_prep(uint32_t mask, uint32_t val)
max9611.h
Header file of max9611 Family Driver.
max9611_get_retry
int max9611_get_retry(struct max9611_dev *dev, enum max9611_retry_time *rtime)
Get MAX9611 configured retry time.
Definition: max9611.c:434
MAX9611_DATA_OUT
@ MAX9611_DATA_OUT
Definition: max9611.h:83
no_os_error.h
Error codes definition.
MAX9611_CSA_MSB
#define MAX9611_CSA_MSB
Definition: max9611.h:62
max9611_set_delay
int max9611_set_delay(struct max9611_dev *dev, enum max9611_delay_time dtime)
Configures MAX9611 delay time.
Definition: max9611.c:380
MAX9611_DATA_TMP
@ MAX9611_DATA_TMP
Definition: max9611.h:85
MAX9611_CONF_OUT_ADC
@ MAX9611_CONF_OUT_ADC
Definition: max9611.h:110
MAX9611_DATA_SET
@ MAX9611_DATA_SET
Definition: max9611.h:84
max9611_set_lr
int max9611_set_lr(struct max9611_dev *dev, bool is_normal)
Configure LR bit operation.
Definition: max9611.c:345
MAX9611_SHDN_MASK
#define MAX9611_SHDN_MASK
Definition: max9611.h:57
max9611_init_param
Definition: max9611.h:128
max9611_set_mode
int max9611_set_mode(struct max9611_dev *dev, enum max9611_mode_conf mode)
Configures MAX9611 operating mode.
Definition: max9611.c:234
max9611_mode_conf
max9611_mode_conf
Definition: max9611.h:116
max9611_set_retry
int max9611_set_retry(struct max9611_dev *dev, enum max9611_retry_time rtime)
Configures MAX9611 retry time.
Definition: max9611.c:417
max9611_set_mode
int max9611_set_mode(struct max9611_dev *dev, enum max9611_mode_conf mode)
Configures MAX9611 operating mode.
Definition: max9611.c:234
max9611_shutdown
int max9611_shutdown(struct max9611_dev *dev, bool is_shdn)
Device shutdown or power up.
Definition: max9611.c:330
max9611_init
int max9611_init(struct max9611_dev **device, struct max9611_init_param init_param)
Initializes the communication peripheral and checks if the device is present.
Definition: max9611.c:103
MAX9611_CONF_SENSE_4X
@ MAX9611_CONF_SENSE_4X
Definition: max9611.h:107
MAX9611_NORMAL_MODE
@ MAX9611_NORMAL_MODE
Definition: max9611.h:117
max9611_data
max9611_data
Definition: max9611.h:80
MAX9611_CONF_TEMP
@ MAX9611_CONF_TEMP
Definition: max9611.h:112
max9611_remove
int max9611_remove(struct max9611_dev *dev)
Free the resources allocated by max538x_init().
Definition: max9611.c:132
MAX9611_CONF_IN_COM_MODE
@ MAX9611_CONF_IN_COM_MODE
Definition: max9611.h:109
MAX9611_CONF_SENSE_1X
@ MAX9611_CONF_SENSE_1X
Definition: max9611.h:106
MAX9611_SET_MSB
#define MAX9611_SET_MSB
Definition: max9611.h:68
MAX9611_FAST_MODE
@ MAX9611_FAST_MODE
Definition: max9611.h:113
MAX9611_OPAMP_MODE
@ MAX9611_OPAMP_MODE
Definition: max9611.h:118
no_os_i2c_desc
Structure holding I2C address descriptor.
Definition: no_os_i2c.h:107
no_os_i2c_read
int32_t no_os_i2c_read(struct no_os_i2c_desc *desc, uint8_t *data, uint8_t bytes_number, uint8_t stop_bit)
I2C Read data from slave device.
Definition: no_os_i2c.c:196
MAX9611_66_VCC
@ MAX9611_66_VCC
Definition: max9611.h:91
no_os_i2c.h
Header file of I2C Interface.
max9611_dev::i2c_desc
struct no_os_i2c_desc * i2c_desc
Definition: max9611.h:123
no_os_field_get
uint32_t no_os_field_get(uint32_t mask, uint32_t word)
MAX9611_CONF_SET_ADC
@ MAX9611_CONF_SET_ADC
Definition: max9611.h:111
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
MAX9611_RTIME_MASK
#define MAX9611_RTIME_MASK
Definition: max9611.h:60
MAX9611_ZERO_VCC
@ MAX9611_ZERO_VCC
Definition: max9611.h:89
max9611_dev::capture_type
enum max9611_data capture_type
Definition: max9611.h:125
no_os_i2c_init_param
Structure holding the parameters for I2C initialization.
Definition: no_os_i2c.h:70
max9611_get_lr
int max9611_get_lr(struct max9611_dev *dev, bool *lr)
Get LR bit value.
Definition: max9611.c:360
MAX9611_DATA_CSA
@ MAX9611_DATA_CSA
Definition: max9611.h:81
MAX9611_100US
@ MAX9611_100US
Definition: max9611.h:97
MAX9611_RAW_DATA_MASK
#define MAX9611_RAW_DATA_MASK
Definition: max9611.h:55
init_param
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:119
max9611_get_delay
int max9611_get_delay(struct max9611_dev *dev, enum max9611_delay_time *dtime)
Get MAX9611 configured delay time.
Definition: max9611.c:397
max9611_mux_conf
max9611_mux_conf
Definition: max9611.h:105
MAX9611_OUT_OF_BOUNDS
#define MAX9611_OUT_OF_BOUNDS
Definition: max9611.h:75
MAX9611_33_VCC
@ MAX9611_33_VCC
Definition: max9611.h:90
max9611_get_delay
int max9611_get_delay(struct max9611_dev *dev, enum max9611_delay_time *dtime)
Get MAX9611 configured delay time.
Definition: max9611.c:397
MAX9611_10MS
@ MAX9611_10MS
Definition: max9611.h:102
max9611_set_delay
int max9611_set_delay(struct max9611_dev *dev, enum max9611_delay_time dtime)
Configures MAX9611 delay time.
Definition: max9611.c:380
MAX9611_1MS
@ MAX9611_1MS
Definition: max9611.h:96
max9611_set_lr
int max9611_set_lr(struct max9611_dev *dev, bool is_normal)
Configure LR bit operation.
Definition: max9611.c:345
MAX9611_MUX_MASK
#define MAX9611_MUX_MASK
Definition: max9611.h:53
no_os_get_unaligned_be16
uint16_t no_os_get_unaligned_be16(uint8_t *buf)
MAX9611_LR_MASK
#define MAX9611_LR_MASK
Definition: max9611.h:58
max9611_init_param::i2c_init
struct no_os_i2c_init_param i2c_init
Definition: max9611.h:129
max9611_delay_time
max9611_delay_time
Definition: max9611.h:95
no_os_util.h
Header file of utility functions.
max9611_addr_lvls
max9611_addr_lvls
Definition: max9611.h:88
MAX9611_CTR1
#define MAX9611_CTR1
Definition: max9611.h:72
max9611_get_mode
int max9611_get_mode(struct max9611_dev *dev, enum max9611_mode_conf *mode)
Get the MAX9611 operating mode.
Definition: max9611.c:250
max9611_retry_time
max9611_retry_time
Definition: max9611.h:100
max9611_get_retry
int max9611_get_retry(struct max9611_dev *dev, enum max9611_retry_time *rtime)
Get MAX9611 configured retry time.
Definition: max9611.c:434
max9611_remove
int max9611_remove(struct max9611_dev *dev)
Free the resources allocated by max538x_init().
Definition: max9611.c:132
max9611_addr_gen
int max9611_addr_gen(struct max9611_init_param *device_ip, enum max9611_addr_lvls a0, enum max9611_addr_lvls a1)
Generates slave address based on A1 and A0 pin values.
Definition: max9611.c:60
max9611_reg_update
int max9611_reg_update(struct max9611_dev *dev, uint8_t addr, int update_mask, int update_val)
Update selected I2C register contents.
Definition: max9611.c:212
MAX9611_100_VCC
@ MAX9611_100_VCC
Definition: max9611.h:92
max9611_get_mux
int max9611_get_mux(struct max9611_dev *dev, enum max9611_mux_conf *mux)
Get the internal MUX settings.
Definition: max9611.c:310