Go to the documentation of this file.
58 #define AD7280A_PD_OUT no_os_gpio_direction_output(dev->gpio_pd, \
60 #define AD7280A_PD_HIGH no_os_gpio_set_value(dev->gpio_pd, \
62 #define AD7280A_PD_LOW no_os_gpio_set_value(dev->gpio_pd, \
64 #define AD7280A_CNVST_OUT no_os_gpio_direction_output(dev->gpio_cnvst, \
66 #define AD7280A_CNVST_HIGH no_os_gpio_set_value(dev->gpio_cnvst, \
68 #define AD7280A_CNVST_LOW no_os_gpio_set_value(dev->gpio_cnvst, \
71 #define AD7280A_ALERT_IN no_os_gpio_direction_input(dev->gpio_alert)
72 #define AD7280_ALERT (1 << 6)
75 #define AD7280A_ACQ_TIME_400ns 0
76 #define AD7280A_ACQ_TIME_800ns 1
77 #define AD7280A_ACQ_TIME_1200ns 2
78 #define AD7280A_ACQ_TIME_1600ns 3
81 #define AD7280A_CONV_AVG_DIS 0
82 #define AD7280A_CONV_AVG_2 1
83 #define AD7280A_CONV_AVG_4 2
84 #define AD7280A_CONV_AVG_8 3
87 #define AD7280A_ALERT_REMOVE_VIN5 (1 << 2)
88 #define AD7280A_ALERT_REMOVE_VIN4_VIN5 (2 << 2)
89 #define AD7280A_ALERT_REMOVE_AUX5 (1 << 0)
90 #define AD7280A_ALERT_REMOVE_AUX4_AUX5 (2 << 0)
93 #define AD7280A_CELL_VOLTAGE_1 0x0
94 #define AD7280A_CELL_VOLTAGE_2 0x1
95 #define AD7280A_CELL_VOLTAGE_3 0x2
96 #define AD7280A_CELL_VOLTAGE_4 0x3
97 #define AD7280A_CELL_VOLTAGE_5 0x4
98 #define AD7280A_CELL_VOLTAGE_6 0x5
99 #define AD7280A_AUX_ADC_1 0x6
100 #define AD7280A_AUX_ADC_2 0x7
101 #define AD7280A_AUX_ADC_3 0x8
102 #define AD7280A_AUX_ADC_4 0x9
103 #define AD7280A_AUX_ADC_5 0xA
104 #define AD7280A_AUX_ADC_6 0xB
105 #define AD7280A_SELF_TEST 0xC
106 #define AD7280A_CONTROL_HB 0xD
107 #define AD7280A_CONTROL_LB 0xE
108 #define AD7280A_CELL_OVERVOLTAGE 0xF
109 #define AD7280A_CELL_UNDERVOLTAGE 0x10
110 #define AD7280A_AUX_ADC_OVERVOLTAGE 0x11
111 #define AD7280A_AUX_ADC_UNDERVOLTAGE 0x12
112 #define AD7280A_ALERT 0x13
113 #define AD7280A_CELL_BALANCE 0x14
114 #define AD7280A_CB1_TIMER 0x15
115 #define AD7280A_CB2_TIMER 0x16
116 #define AD7280A_CB3_TIMER 0x17
117 #define AD7280A_CB4_TIMER 0x18
118 #define AD7280A_CB5_TIMER 0x19
119 #define AD7280A_CB6_TIMER 0x1A
120 #define AD7280A_PD_TIMER 0x1B
121 #define AD7280A_READ 0x1C
122 #define AD7280A_CNVST_N_CONTROL 0x1D
125 #define AD7280A_CTRL_HB_CONV_INPUT_ALL (0 << 6)
126 #define AD7280A_CTRL_HB_CONV_INPUT_6CELL_AUX1_3_4 (1 << 6)
127 #define AD7280A_CTRL_HB_CONV_INPUT_6CELL (2 << 6)
128 #define AD7280A_CTRL_HB_CONV_INPUT_SELF_TEST (3 << 6)
129 #define AD7280A_CTRL_HB_CONV_RES_READ_ALL (0 << 4)
130 #define AD7280A_CTRL_HB_CONV_RES_READ_6CELL_AUX1_3_4 (1 << 4)
131 #define AD7280A_CTRL_HB_CONV_RES_READ_6CELL (2 << 4)
132 #define AD7280A_CTRL_HB_CONV_RES_READ_NO (3 << 4)
133 #define AD7280A_CTRL_HB_CONV_START_CNVST (0 << 3)
134 #define AD7280A_CTRL_HB_CONV_START_CS (1 << 3)
135 #define AD7280A_CTRL_HB_CONV_AVG_DIS (0 << 1)
136 #define AD7280A_CTRL_HB_CONV_AVG_2 (1 << 1)
137 #define AD7280A_CTRL_HB_CONV_AVG_4 (2 << 1)
138 #define AD7280A_CTRL_HB_CONV_AVG_8 (3 << 1)
139 #define AD7280A_CTRL_HB_CONV_AVG(x) ((x) << 1)
140 #define AD7280A_CTRL_HB_PWRDN_SW (1 << 0)
142 #define AD7280A_CTRL_LB_SWRST (1 << 7)
143 #define AD7280A_CTRL_LB_ACQ_TIME_400ns (0 << 5)
144 #define AD7280A_CTRL_LB_ACQ_TIME_800ns (1 << 5)
145 #define AD7280A_CTRL_LB_ACQ_TIME_1200ns (2 << 5)
146 #define AD7280A_CTRL_LB_ACQ_TIME_1600ns (3 << 5)
147 #define AD7280A_CTRL_LB_ACQ_TIME(x) ((x) << 5)
148 #define AD7280A_CTRL_LB_MUST_SET (1 << 4)
149 #define AD7280A_CTRL_LB_THERMISTOR_EN (1 << 3)
150 #define AD7280A_CTRL_LB_LOCK_DEV_ADDR (1 << 2)
151 #define AD7280A_CTRL_LB_INC_DEV_ADDR (1 << 1)
152 #define AD7280A_CTRL_LB_DAISY_CHAIN_RB_EN (1 << 0)
154 #define AD7280A_ALERT_GEN_STATIC_HIGH (1 << 6)
155 #define AD7280A_ALERT_RELAY_SIG_CHAIN_DOWN (3 << 6)
157 #define AD7280A_ALL_CELLS (0xAD << 16)
159 #define AD7280A_DEVADDR_MASTER 0
160 #define AD7280A_DEVADDR_ALL 0x1F
163 #define AD7280A_READ_TXVAL 0xF800030A
165 #define NUMBITS_READ 22 // Number of bits for CRC when reading
166 #define NUMBITS_WRITE 21 // Number of bits for CRC when writing
243 float *self_test_reg_a,
244 float *self_test_reg_b);
#define AD7280A_AUX_ADC_UNDERVOLTAGE
Definition: ad7280a.h:111
Structure holding the parameters for GPIO initialization.
Definition: no_os_gpio.h:85
void ad7280a_write_register(struct ad7280a_dev *dev, uint8_t dev_addr, uint8_t read_reg, uint8_t reg_val)
Definition: ad7280a.c:549
#define AD7280A_READ_TXVAL
Definition: ad7280a.h:163
int16_t ad7280a_read_register(struct ad7280a_dev *dev, uint8_t dev_addr, uint8_t read_reg)
Definition: ad7280a.c:385
struct no_os_gpio_desc * gpio_cnvst
Definition: ad7280a.h:176
int32_t ad7280a_remove(struct ad7280a_dev *dev)
Free the resources allocated by AD7280A_Init().
Definition: ad7280a.c:127
int32_t no_os_spi_write_and_read(struct no_os_spi_desc *desc, uint8_t *data, uint16_t bytes_number)
Write and read data to/from SPI.
Definition: no_os_spi.c:165
#define AD7280A_CNVST_HIGH
Definition: ad7280a.h:66
#define AD7280A_CELL_UNDERVOLTAGE
Definition: ad7280a.h:109
float cell_voltage[12]
Definition: ad7280a.h:180
int16_t ad7280a_read_register(struct ad7280a_dev *dev, uint8_t dev_addr, uint8_t read_reg)
Definition: ad7280a.c:385
Header file of SPI Interface.
#define AD7280A_CTRL_LB_LOCK_DEV_ADDR
Definition: ad7280a.h:150
int32_t no_os_gpio_get_value(struct no_os_gpio_desc *desc, uint8_t *value)
Get the value of the specified GPIO.
Definition: no_os_gpio.c:227
#define AD7280A_CELL_VOLTAGE_1
Definition: ad7280a.h:93
Header file of Delay functions.
int8_t ad7280a_init(struct ad7280a_dev **device, struct ad7280a_init_param init_param)
Definition: ad7280a.c:64
#define AD7280A_CB1_TIMER
Definition: ad7280a.h:114
int8_t ad7280a_convert_data_all(struct ad7280a_dev *dev)
Definition: ad7280a.c:354
#define NUMBITS_WRITE
Definition: ad7280a.h:166
Definition: ad9361_util.h:75
int32_t ad7280a_crc_read(uint32_t message)
Definition: ad7280a.c:235
#define AD7280A_PD_TIMER
Definition: ad7280a.h:120
int16_t ad7280a_read_conversion(struct ad7280a_dev *dev, uint8_t dev_addr, uint8_t read_reg)
Definition: ad7280a.c:445
uint8_t ad7280a_alert_pin(struct ad7280a_dev *dev)
Definition: ad7280a.c:755
Definition: ad7280a.h:171
#define AD7280A_CONTROL_LB
Definition: ad7280a.h:107
#define AD7280A_CNVST_N_CONTROL
Definition: ad7280a.h:122
#define AD7280A_PD_OUT
Definition: ad7280a.h:58
#define AD7280A_CELL_OVERVOLTAGE
Definition: ad7280a.h:108
#define AD7280A_CTRL_HB_CONV_RES_READ_NO
Definition: ad7280a.h:132
void no_os_mdelay(uint32_t msecs)
Wait until msecs milliseconds passed.
Definition: aducm3029_delay.c:132
#define AD7280A_CONTROL_HB
Definition: ad7280a.h:106
#define AD7280A_ALERT_IN
Definition: ad7280a.h:71
float ad7280a_convert_data(uint8_t type, uint16_t data)
Definition: ad7280a.c:519
int32_t ad7280a_crc_read(uint32_t message)
Definition: ad7280a.c:235
int8_t ad7280a_convert_read_all(struct ad7280a_dev *dev)
Definition: ad7280a.c:290
#define AD7280A_CELL_BALANCE
Definition: ad7280a.h:113
#define AD7280A_CNVST_OUT
Definition: ad7280a.h:64
float ad7280a_convert_data(uint8_t type, uint16_t data)
Definition: ad7280a.c:519
void ad7280a_write_register(struct ad7280a_dev *dev, uint8_t dev_addr, uint8_t read_reg, uint8_t reg_val)
Definition: ad7280a.c:549
int8_t ad7280a_convert_read_all(struct ad7280a_dev *dev)
Definition: ad7280a.c:290
#define AD7280A_CB2_TIMER
Definition: ad7280a.h:115
#define AD7280A_CB5_TIMER
Definition: ad7280a.h:118
int16_t ad7280a_read_conversion(struct ad7280a_dev *dev, uint8_t dev_addr, uint8_t read_reg)
Definition: ad7280a.c:445
void ad7280a_selftest_all(struct ad7280a_dev *dev, float *self_test_reg_a, float *self_test_reg_b)
Definition: ad7280a.c:690
struct no_os_gpio_init_param gpio_alert
Definition: ad7280a.h:190
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
#define AD7280A_SELF_TEST
Definition: ad7280a.h:105
Structure holding SPI descriptor.
Definition: no_os_spi.h:177
#define AD7280A_CTRL_HB_CONV_RES_READ_ALL
Definition: ad7280a.h:129
Structure holding the GPIO descriptor.
Definition: no_os_gpio.h:102
uint32_t ad7280a_crc_write(uint32_t message)
Definition: ad7280a.c:183
#define AD7280A_READ
Definition: ad7280a.h:121
#define AD7280A_AUX_ADC_OVERVOLTAGE
Definition: ad7280a.h:110
#define AD7280A_PD_HIGH
Definition: ad7280a.h:60
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
void * no_os_malloc(size_t size)
Allocate memory and return a pointer to it.
Definition: chibios_alloc.c:49
struct no_os_gpio_init_param gpio_cnvst
Definition: ad7280a.h:189
#define AD7280A_CTRL_LB_MUST_SET
Definition: ad7280a.h:148
uint32_t ad7280a_crc_write(uint32_t message)
Definition: ad7280a.c:183
struct no_os_spi_init_param spi_init
Definition: ad7280a.h:186
#define AD7280A_CTRL_HB_CONV_AVG_8
Definition: ad7280a.h:138
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
float aux_adc[12]
Definition: ad7280a.h:181
#define NUMBITS_READ
Definition: ad7280a.h:165
struct no_os_gpio_init_param gpio_pd
Definition: ad7280a.h:188
#define AD7280A_CNVST_LOW
Definition: ad7280a.h:68
Definition: ad7280a.h:184
#define AD7280A_CB4_TIMER
Definition: ad7280a.h:117
struct ad7616_init_param init_param
Definition: ad7616_sdz.c:119
uint32_t ad7280a_transfer_32bits(struct ad7280a_dev *dev, uint32_t data)
Definition: ad7280a.c:150
int8_t ad7280a_init(struct ad7280a_dev **device, struct ad7280a_init_param init_param)
Definition: ad7280a.c:64
struct no_os_spi_desc * spi_desc
Definition: ad7280a.h:173
int8_t ad7280a_convert_data_all(struct ad7280a_dev *dev)
Definition: ad7280a.c:354
#define AD7280A_ALERT
Definition: ad7280a.h:112
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
Header file of GPIO Interface.
struct no_os_gpio_desc * gpio_pd
Definition: ad7280a.h:175
#define AD7280A_CTRL_HB_CONV_INPUT_ALL
Definition: ad7280a.h:125
int32_t ad7280a_remove(struct ad7280a_dev *dev)
Free the resources allocated by AD7280A_Init().
Definition: ad7280a.c:127
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
uint8_t ad7280a_alert_pin(struct ad7280a_dev *dev)
Definition: ad7280a.c:755
#define AD7280A_CTRL_HB_CONV_INPUT_SELF_TEST
Definition: ad7280a.h:128
uint32_t ad7280a_transfer_32bits(struct ad7280a_dev *dev, uint32_t data)
Definition: ad7280a.c:150
uint32_t read_data[24]
Definition: ad7280a.h:179
void ad7280a_selftest_all(struct ad7280a_dev *dev, float *self_test_reg_a, float *self_test_reg_b)
Definition: ad7280a.c:690
#define AD7280A_CTRL_LB_DAISY_CHAIN_RB_EN
Definition: ad7280a.h:152
#define AD7280A_CB3_TIMER
Definition: ad7280a.h:116
struct no_os_gpio_desc * gpio_alert
Definition: ad7280a.h:177
#define AD7280A_CB6_TIMER
Definition: ad7280a.h:119
Structure holding the parameters for SPI initialization.
Definition: no_os_spi.h:131