Go to the documentation of this file.
38 #include "drv_digital_out.h"
39 #include "drv_digital_in.h"
40 #include "drv_spi_master.h"
54 #define ADSWIO_MAP_MIKROBUS( cfg, mikrobus ) \
55 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
56 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
57 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
58 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
59 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
60 cfg.alt = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
61 cfg.rdy = MIKROBUS( mikrobus, MIKROBUS_INT )
68 #define adswio_obj_t const uint8_t*
75 #define adswio_err_t uint8_t
82 #define ADSWIO_RETVAL uint8_t
84 #define ADSWIO_OK 0x00
85 #define ADSWIO_INIT_ERROR 0xFF
92 #define ADSWIO_FRAME_LENGTH 4
93 #define ADSWIO_MASK_RD_FRAME_RESERVED_BIT 0x80
94 #define ADSWIO_MASK_RD_FRAME_REG_ADDR 0x7F
95 #define ADSWIO_MASK_RD_FRAME_STATUS 0x7F
102 #define ADSWIO_RD_RET_INFO 0x1
109 #define ADSWIO_OFFSET_REG_CONV_RES 0x25
110 #define ADSWIO_OFFSET_REG_DIAG_RES 0x29
118 #define ADSWIO_NULL 0
125 #define ADSWIO_RD_AUTO_EN 0x2
126 #define ADSWIO_RD_AUTO_DIS 0x0
138 #define ADSWIO_MASK_CONV_EN 0xF
139 #define ADSWIO_OFFSET_CONV_EN_CH 0
140 #define ADSWIO_OFFSET_CONV_EN_DIAG 4
147 #define ADSWIO_MASK_DIAG_ASSIGN 0xF
148 #define ADSWIO_OFFSET_ASSIGN_DIAG0 0
149 #define ADSWIO_OFFSET_ASSIGN_DIAG1 4
150 #define ADSWIO_OFFSET_ASSIGN_DIAG2 8
151 #define ADSWIO_OFFSET_ASSIGN_DIAG3 12
158 #define ADSWIO_MASK_CONV_MODE 0x300
159 #define ADSWIO_OFFSET_CONV_MODE 8
166 #define ADSWIO_MASK_DAC_CODE 0x1FFF
173 #define ADSWIO_MASK_ALERT 0x7FFF
180 #define ADSWIO_MASK_DIN_THRESH_COMP 0x3E
187 #define ADSWIO_MASK_STATUS_ALRT_CAL_MEM_ERR 0x4000
188 #define ADSWIO_MASK_STATUS_ALRT_SPI_CRC_ERR 0x2000
189 #define ADSWIO_MASK_STATUS_ALRT_RST 0x8000
190 #define ADSWIO_MASK_STATUS_ALRT_SPI_SCLK_CNT_ERR 0x1000
191 #define ADSWIO_MASK_STATUS_ALRT_ADC_SAT_ERR 0x800
192 #define ADSWIO_MASK_STATUS_ALRT_ADC_CONV_ERR 0x400
193 #define ADSWIO_MASK_STATUS_ALRT_ALDO1V8_ERR 0x200
194 #define ADSWIO_MASK_STATUS_ALRT_DVCC_ERR 0x100
195 #define ADSWIO_MASK_STATUS_ALRT_AVDD_ERR 0x80
196 #define ADSWIO_MASK_STATUS_ALRT_ALDO5V_ERR 0x40
197 #define ADSWIO_MASK_STATUS_ALRT_CHARGE_PUMP_ERR 0x20
198 #define ADSWIO_MASK_STATUS_ALRT_HI_TEMP_ERR 0x10
199 #define ADSWIO_MASK_STATUS_ALRT_VI_ERR_D 0x8
200 #define ADSWIO_MASK_STATUS_ALRT_VI_ERR_C 0x4
201 #define ADSWIO_MASK_STATUS_ALRT_VI_ERR_B 0x2
202 #define ADSWIO_MASK_STATUS_ALRT_VI_ERR_A 0x1
209 #define ADSWIO_MASK_STATUS_LIVE_ADC_DRDY 0x4000
210 #define ADSWIO_MASK_STATUS_LIVE_ADC_BUSY 0x2000
211 #define ADSWIO_MASK_STATUS_LIVE_ADC_CURR_CH 0x1C00
212 #define ADSWIO_MASK_STATUS_LIVE_ALDO1V8 0x200
213 #define ADSWIO_MASK_STATUS_LIVE_DVCC 0x100
214 #define ADSWIO_MASK_STATUS_LIVE_AVDD 0x80
215 #define ADSWIO_MASK_STATUS_LIVE_ALDO5V 0x40
216 #define ADSWIO_MASK_STATUS_LIVE_CHARGE_PUMP 0x20
217 #define ADSWIO_MASK_STATUS_LIVE_HI_TEMP 0x10
218 #define ADSWIO_MASK_STATUS_LIVE_VI_ERR_CURR_D 0x8
219 #define ADSWIO_MASK_STATUS_LIVE_VI_ERR_CURR_C 0x4
220 #define ADSWIO_MASK_STATUS_LIVE_VI_ERR_CURR_B 0x2
221 #define ADSWIO_MASK_STATUS_LIVE_VI_ERR_CURR_A 0x1
228 #define ADSWIO_MAX_NWORDS 4
229 #define ADSWIO_MIN_NWORDS 1
238 #define ADSWIO_REG_NOP 0x0
239 #define ADSWIO_REG_FUNC_SETUP_CHA 0x1
240 #define ADSWIO_REG_FUNC_SETUP_CHB 0x2
241 #define ADSWIO_REG_FUNC_SETUP_CHC 0x3
242 #define ADSWIO_REG_FUNC_SETUP_CHD 0x4
243 #define ADSWIO_REG_CFG_ADC_CHA 0x5
244 #define ADSWIO_REG_CFG_ADC_CHB 0x6
245 #define ADSWIO_REG_CFG_ADC_CHC 0x7
246 #define ADSWIO_REG_CFG_ADC_CHD 0x8
247 #define ADSWIO_REG_CFG_DIN_CHA 0x9
248 #define ADSWIO_REG_CFG_DIN_CHB 0xA
249 #define ADSWIO_REG_CFG_DIN_CHC 0xB
250 #define ADSWIO_REG_CFG_DIN_CHD 0xC
251 #define ADSWIO_REG_GPO_PARALLEL 0xD
252 #define ADSWIO_REG_CFG_GPO_CHA 0xE
253 #define ADSWIO_REG_CFG_GPO_CHB 0xF
254 #define ADSWIO_REG_CFG_GPO_CHC 0x10
255 #define ADSWIO_REG_CFG_GPO_CHD 0x11
256 #define ADSWIO_REG_CFG_OUTPUT_CHA 0x12
257 #define ADSWIO_REG_CFG_OUTPUT_CHB 0x13
258 #define ADSWIO_REG_CFG_OUTPUT_CHC 0x14
259 #define ADSWIO_REG_CFG_OUTPUT_CHD 0x15
260 #define ADSWIO_REG_DAC_CODE_CHA 0x16
261 #define ADSWIO_REG_DAC_CODE_CHB 0x17
262 #define ADSWIO_REG_DAC_CODE_CHC 0x18
263 #define ADSWIO_REG_DAC_CODE_CHD 0x19
264 #define ADSWIO_REG_DAC_CODE_CLR_CHA 0x1A
265 #define ADSWIO_REG_DAC_CODE_CLR_CHB 0x1B
266 #define ADSWIO_REG_DAC_CODE_CLR_CHC 0x1C
267 #define ADSWIO_REG_DAC_CODE_CLR_CHD 0x1D
268 #define ADSWIO_REG_DAC_CODE_ACT_CHA 0x1E
269 #define ADSWIO_REG_DAC_CODE_ACT_CHB 0x1F
270 #define ADSWIO_REG_DAC_CODE_ACT_CHC 0x20
271 #define ADSWIO_REG_DAC_CODE_ACT_CHD 0x21
272 #define ADSWIO_REG_DIN_THRESH 0x22
273 #define ADSWIO_REG_ADC_CONV_CTRL 0x23
274 #define ADSWIO_REG_DIAG_ASSIGN 0x24
275 #define ADSWIO_REG_DIN_COMP_OUT 0x25
276 #define ADSWIO_REG_RESULT_ADC_CHA 0x26
277 #define ADSWIO_REG_RESULT_ADC_CHB 0x27
278 #define ADSWIO_REG_RESULT_ADC_CHC 0x28
279 #define ADSWIO_REG_RESULT_ADC_CHD 0x29
280 #define ADSWIO_REG_RESULT_DIAG1 0x2A
281 #define ADSWIO_REG_RESULT_DIAG2 0x2B
282 #define ADSWIO_REG_RESULT_DIAG3 0x2C
283 #define ADSWIO_REG_RESULT_DIAG4 0x2D
284 #define ADSWIO_REG_STATUS_ALERT 0x2E
285 #define ADSWIO_REG_STATUS_LIVE 0x2F
286 #define ADSWIO_REG_MASK_ALERT 0x3C
287 #define ADSWIO_REG_DIN_COUNTER_CHA 0x3D
288 #define ADSWIO_REG_DIN_COUNTER_CHB 0x3E
289 #define ADSWIO_REG_DIN_COUNTER_CHC 0x3F
290 #define ADSWIO_REG_DIN_COUNTER_CHD 0x40
291 #define ADSWIO_REG_READ_SELECT 0x41
292 #define ADSWIO_REG_THERM_RST 0x43
293 #define ADSWIO_REG_CMD_KEY 0x44
294 #define ADSWIO_REG_SCRATCH 0x45
295 #define ADSWIO_REG_SILICON_REV 0x46
307 #define ADSWIO_SETUP_CONV_EN_CHD 0x8
308 #define ADSWIO_SETUP_CONV_EN_CHC 0x4
309 #define ADSWIO_SETUP_CONV_EN_CHB 0x2
310 #define ADSWIO_SETUP_CONV_EN_CHA 0x1
317 #define ADSWIO_SETUP_CH_FUNC_HZ 0x0
318 #define ADSWIO_SETUP_CH_FUNC_VOLT_OUTPUT 0x1
319 #define ADSWIO_SETUP_CH_FUNC_CURR_OUTPUT 0x2
320 #define ADSWIO_SETUP_CH_FUNC_VOLT_INPUT 0x3
321 #define ADSWIO_SETUP_CH_FUNC_CURR_INPUT_PWR_EXT 0x4
322 #define ADSWIO_SETUP_CH_FUNC_CURR_INPUT_PWR_LOOP 0x5
323 #define ADSWIO_SETUP_CH_FUNC_RES_MEAS 0x6
324 #define ADSWIO_SETUP_CH_FUNC_DIG_INPUT_LOGIC 0x7
325 #define ADSWIO_SETUP_CH_FUNC_DIG_INPUT_PWR_LOOP 0x8
326 #define ADSWIO_SETUP_CH_FUNC_CURR_INPUT_PWR_EXT_HART 0x9
327 #define ADSWIO_SETUP_CH_FUNC_CURR_INPUT_PWR_LOOP_HART 0xA
334 #define ADSWIO_SETUP_CONV_EN_DIAG3 0x8
335 #define ADSWIO_SETUP_CONV_EN_DIAG2 0x4
336 #define ADSWIO_SETUP_CONV_EN_DIAG1 0x2
337 #define ADSWIO_SETUP_CONV_EN_DIAG0 0x1
344 #define ADSWIO_SETUP_DIAG_ASSIGN_AGND 0x0
345 #define ADSWIO_SETUP_DIAG_ASSIGN_TEMP 0x1
346 #define ADSWIO_SETUP_DIAG_ASSIGN_AVDD 0x2
347 #define ADSWIO_SETUP_DIAG_ASSIGN_VAVSS 0x3
348 #define ADSWIO_SETUP_DIAG_ASSIGN_REFOUT 0x4
349 #define ADSWIO_SETUP_DIAG_ASSIGN_ALDO5V 0x5
350 #define ADSWIO_SETUP_DIAG_ASSIGN_ALDO1V8 0x6
351 #define ADSWIO_SETUP_DIAG_ASSIGN_DLDO1V8 0x7
352 #define ADSWIO_SETUP_DIAG_ASSIGN_DVCC 0x8
353 #define ADSWIO_SETUP_DIAG_ASSIGN_IOVDD 0x9
354 #define ADSWIO_SETUP_DIAG_ASSIGN_SENSELA 0xA
355 #define ADSWIO_SETUP_DIAG_ASSIGN_SENSELB 0xB
356 #define ADSWIO_SETUP_DIAG_ASSIGN_SENSELC 0xC
357 #define ADSWIO_SETUP_DIAG_ASSIGN_SENSELD 0xD
358 #define ADSWIO_SETUP_DIAG_ASSIGN_LVIN 0xE
365 #define ADSWIO_SETUP_CONV_STOP_CONT_CONV_ADC_PWR_UP 0x0
366 #define ADSWIO_SETUP_CONV_START_SING_SEQ_CONV 0x1
367 #define ADSWIO_SETUP_CONV_START_CONT_CONV 0x2
368 #define ADSWIO_SETUP_CONV_STOP_CONT_CONV_ADC_PWR_DWN 0x3
375 #define ADSWIO_SETUP_ADC_RANGE_0V_TO_10V 0x0
376 #define ADSWIO_SETUP_ADC_RANGE_2500MV_PWR_EXT 0x20
377 #define ADSWIO_SETUP_ADC_RANGE_2500MV_PWR_LOOP 0x40
378 #define ADSWIO_SETUP_ADC_RANGE_2500MV_NEG_TO_2500MV_POS 0x60
379 #define ADSWIO_SETUP_ADC_RANGE_104MV_NEG_TO_104MV_POS 0x80
380 #define ADSWIO_SETUP_ADC_SAMPLE_RATE_20SPS 0x0
381 #define ADSWIO_SETUP_ADC_SAMPLE_RATE_4800SPS 0x8
382 #define ADSWIO_SETUP_ADC_SAMPLE_RATE_10SPS 0x10
383 #define ADSWIO_SETUP_ADC_SAMPLE_RATE_1200SPS 0x18
384 #define ADSWIO_SETUP_ADC_CH_200K_TO_GND 0x4
385 #define ADSWIO_SETUP_ADC_INPUT_VOLTAGE_AGND_SENSE 0x0
386 #define ADSWIO_SETUP_ADC_INPUT_VOLTAGE_100_OHM_RES 0x1
393 #define ADSWIO_SETUP_DIN_COUNT_EN 0x8000
394 #define ADSWIO_SETUP_DIN_COMP_IN_FILTERED 0x4000
395 #define ADSWIO_SETUP_DIN_COMP_OUT_INV 0x2000
396 #define ADSWIO_SETUP_DIN_COMP_EN 0x1000
397 #define ADSWIO_SETUP_DIN_RANGE_0 0x0
398 #define ADSWIO_SETUP_DIN_RANGE_1 0x800
399 #define ADSWIO_SETUP_DIN_DEBOUNCE_MODE_0 0x0
400 #define ADSWIO_SETUP_DIN_DEBOUNCE_MODE_1 0x20
407 #define ADSWIO_SETUP_GPO_PARALL_DATA_D 0x8
408 #define ADSWIO_SETUP_GPO_PARALL_DATA_C 0x4
409 #define ADSWIO_SETUP_GPO_PARALL_DATA_B 0x2
410 #define ADSWIO_SETUP_GPO_PARALL_DATA_A 0x1
417 #define ADSWIO_SETUP_GPO_LOGIC_LOW 0x0
418 #define ADSWIO_SETUP_GPO_LOGIC_HIGH 0x8
425 #define ADSWIO_SETUP_OUT_SLEW_EN_LINEAR 0x40
426 #define ADSWIO_SETUP_OUT_SLEW_EN_HART 0x80
427 #define ADSWIO_SETUP_OUT_SLEW_LIN_STEP_64_DEC_CODES 0x0
428 #define ADSWIO_SETUP_OUT_SLEW_LIN_STEP_120_DEC_CODES 0x10
429 #define ADSWIO_SETUP_OUT_SLEW_LIN_STEP_500_DEC_CODES 0x20
430 #define ADSWIO_SETUP_OUT_SLEW_LIN_STEP_1820_DEC_CODES 0x30
431 #define ADSWIO_SETUP_OUT_SLEW_LIN_RATE_4KHZ 0x0
432 #define ADSWIO_SETUP_OUT_SLEW_LIN_RATE_64KHZ 0x4
433 #define ADSWIO_SETUP_OUT_SLEW_LIN_RATE_150KHZ 0x8
434 #define ADSWIO_SETUP_OUT_SLEW_LIN_RATE_240KHZ 0xC
435 #define ADSWIO_SETUP_OUT_CLR_EN 0x2
436 #define ADSWIO_SETUP_OUT_CURR_LIM_30MA 0x0
437 #define ADSWIO_SETUP_OUT_CURR_LIM_7_5MA 0x1
444 #define ADSWIO_SETUP_DIN_THRESH_GND_AND_AVDD 0x0
445 #define ADSWIO_SETUP_DIN_THRESH_GND_AND_16V 0x1
452 #define ADSWIO_SETUP_CONV_EN_50_60_HZ_REJ_DIAG 0x400
454 #define ADSWIO_SETUP_CONV_EN_ALL_CH 0xF
455 #define ADSWIO_SETUP_CONV_EN_ALL_DIAG 0xF
456 #define ADSWIO_SETUP_CONV_DIS_ALL_CH 0x0
457 #define ADSWIO_SETUP_CONV_DIS_ALL_DIAG 0x0
464 #define ADSWIO_SETUP_THERM_RST_EN 0x1
471 #define ADSWIO_STATUS_LIVE_ADC_CURR_CHA 0x0
472 #define ADSWIO_STATUS_LIVE_ADC_CURR_CHB 0x400
473 #define ADSWIO_STATUS_LIVE_ADC_CURR_CHC 0x800
474 #define ADSWIO_STATUS_LIVE_ADC_CURR_CHD 0xC00
475 #define ADSWIO_STATUS_LIVE_ADC_CURR_DIAG0 0x1000
476 #define ADSWIO_STATUS_LIVE_ADC_CURR_DIAG1 0x1400
477 #define ADSWIO_STATUS_LIVE_ADC_CURR_DIAG2 0x1800
478 #define ADSWIO_STATUS_LIVE_ADC_CURR_DIAG3 0x1C00
485 #define ADSWIO_CMD_NOP 0x0
486 #define ADSWIO_CMD_SW_RST_KEY1 0x15FA
487 #define ADSWIO_CMD_SW_RST_KEY2 0xAF51
488 #define ADSWIO_CMD_LDAC_KEY 0x953A
489 #define ADSWIO_CMD_DAC_CLR_KEY 0x73D1
498 #define ADSWIO_ERR_STATUS_OK 0
499 #define ADSWIO_ERR_INIT_DRV 1
500 #define ADSWIO_ERR_UNSUPPORTED_PIN 2
501 #define ADSWIO_ERR_RD_STATUS 3
502 #define ADSWIO_ERR_RD_MODE 4
503 #define ADSWIO_ERR_RD_NWORDS 5
504 #define ADSWIO_ERR_CMD_KEY 6
505 #define ADSWIO_ERR_EN_CH 7
506 #define ADSWIO_ERR_EN_DIAG 8
507 #define ADSWIO_ERR_CRC 9
508 #define ADSWIO_ERR_REG_ADDR 10
509 #define ADSWIO_ERR_CONV_MODE 11
510 #define ADSWIO_ERR_CH_FUNC 12
511 #define ADSWIO_ERR_DIAG_ASSIGN 13
518 #define ADSWIO_ID_SILICON_REV 0x8
void adswio_default_cfg(adswio_t *ctx)
Click Default Configuration function.
void adswio_set_handler(adswio_t *ctx, adswio_handler_t handler)
Error Handler Setup function.
pin_name_t sck
Definition: adswio.h:582
adswio_err_t adswio_assign_diag(adswio_t *ctx, uint8_t diagnostic, uint8_t duty)
Diagnostic Assign function.
void(* adswio_handler_t)(uint8_t *)
Click error handler definition.
Definition: adswio.h:530
void adswio_generic_transfer(adswio_t *ctx, uint8_t *wr_buf, uint16_t wr_len, uint8_t *rd_buf, uint16_t rd_len)
Generic transfer function.
adswio_err_t adswio_status_alert(adswio_t *ctx, uint16_t *status, uint16_t status_mask)
Alert Status function.
#define adswio_err_t
Definition: adswio.h:75
digital_in_t rdy
Definition: adswio.h:546
uint8_t adswio_status_pin_alert(adswio_t *ctx)
Alert Pin Status Check function.
Click configuration structure definition.
Definition: adswio.h:576
spi_master_mode_t spi_mode
Definition: adswio.h:594
pin_name_t rdy
Definition: adswio.h:589
adswio_err_t adswio_generic_read(adswio_t *ctx, uint8_t reg_addr, uint16_t *data_out, uint8_t *rd_status)
Generic Read function.
ADSWIO_RETVAL adswio_init(adswio_t *ctx, adswio_cfg_t *cfg)
Initialization function.
uint8_t rd_mode
Definition: adswio.h:568
pin_name_t chip_select
Definition: adswio.h:551
uint16_t * data_out
Definition: adswio.h:567
void adswio_clear_handler(adswio_t *ctx)
Error Handler Clear function.
adswio_handler_t err_handler
Definition: adswio.h:555
Click ctx object definition.
Definition: adswio.h:536
uint32_t spi_speed
Definition: adswio.h:593
void adswio_reset(adswio_t *ctx)
Click Reset function.
adswio_err_t adswio_generic_multi_read(adswio_t *ctx, adswio_read_t *rd)
Generic Multi Read function.
digital_in_t alt
Definition: adswio.h:545
uint8_t reg_addr
Definition: adswio.h:566
uint8_t adswio_status_pin_ready(adswio_t *ctx)
Ready Pin Status Check function.
adswio_err_t adswio_enable_ch(adswio_t *ctx, uint8_t channel)
Channel Enable function.
pin_name_t mosi
Definition: adswio.h:581
void adswio_cfg_setup(adswio_cfg_t *cfg)
Config Object Initialization function.
void adswio_mask_alert_set(adswio_t *ctx, uint16_t alert_mask)
Alert Mask function.
pin_name_t rst
Definition: adswio.h:587
pin_name_t alt
Definition: adswio.h:588
spi_master_chip_select_polarity_t cs_polarity
Definition: adswio.h:595
pin_name_t cs
Definition: adswio.h:583
digital_out_t rst
Definition: adswio.h:541
adswio_err_t adswio_status_data_ready(adswio_t *ctx, uint8_t *drdy, uint16_t *conv_target)
Data Ready Status function.
adswio_err_t adswio_get_conv_results(adswio_t *ctx, uint8_t channel, uint16_t *data_out)
Channel Results Get function.
adswio_err_t adswio_set_conv_mode(adswio_t *ctx, uint8_t mode)
Conversion Mode Setup function.
uint8_t n_words
Definition: adswio.h:569
Click ctx object definition.
Definition: adswio.h:562
digital_out_t cs
Definition: adswio.h:540
#define ADSWIO_RETVAL
Definition: adswio.h:82
adswio_err_t adswio_enable_diag(adswio_t *ctx, uint8_t diagnostic)
Diagnostic Enable function.
adswio_err_t adswio_get_diag_results(adswio_t *ctx, uint8_t diagnostic, uint16_t *data_out)
Diagnostic Results Get function.
adswio_err_t adswio_exe_command(adswio_t *ctx, uint16_t cmd_key)
Command Execute function.
adswio_err_t adswio_status_live(adswio_t *ctx, uint16_t *status, uint16_t status_mask)
Live Status function.
adswio_err_t adswio_generic_write(adswio_t *ctx, uint8_t reg_addr, uint16_t data_in)
Generic Write function.
adswio_err_t adswio_set_ch_func(adswio_t *ctx, uint8_t channel, uint8_t ch_func)
Channel Function Setup function.
spi_master_t spi
Definition: adswio.h:550
pin_name_t miso
Definition: adswio.h:580