44#define LTC2672_16_DONT_CARE 0xFFF0
45#define LTC2672_MUX_DONT_CARE 0xFFFE0
46#define LTC2672_DUMMY 0xFFFF
47#define LTC2672_FAULT_REG_MASK 0xFF000000
50#define LTC2672_COMMAND_MAX_BYTES 4
51#define LTC2672_BASE_CURRENT 3.125
52#define LTC2672_VMINUS_FIXED_CURRENT -80
53#define LTC2672_OFF_CURRENT 0
54#define LTC2672_300MA_CURRENT 300
55#define LTC2672_16BIT_RESO 65535
56#define LTC2672_12BIT_RESO 4095
57#define LTC2672_TOTAL_CHANNELS 5
58#define LTC2672_MAX_CONFIG_MASK 15
59#define LTC2672_MAX_TOGGLE_MASK 31
60#define LTC2672_BIT_SHIFT_12BIT 4
61#define LTC2672_NUM_CURRENT_SPANS 10
83#define LTC2672_COMMAND32_GENERATE(comm, add, dat) \
84 (0xFF << 24) | (comm << 20) | (add << 16) | (dat)
86#define LTC2672_COMMAND24_GENERATE(comm, add, dat) \
87 (comm << 20) | (add << 16) | (dat)
89#define LTC2672_SPAN_SET(span_code) LTC2672_16_DONT_CARE | span_code
91#define LTC2672_MUX_SET(mux_code) LTC2672_MUX_DONT_CARE | mux_code
93#define LTC2672_MUX32_GENERATE(comm, dat) \
94 (0xFF << 24) | (comm << 20) | (dat)
96#define LTC2672_MUX24_GENERATE(comm, dat) \
int ltc2672_write_input_register_channel(struct ltc2672_dev *, enum ltc2672_dac_ch, uint32_t, bool)
writes to the input register of a channel
Definition ltc2672.c:580
int ltc2672_write_input_register_all_channels(struct ltc2672_dev *, uint32_t, bool)
writes to the input registers of all channels
Definition ltc2672.c:652
int ltc2672_config_command(struct ltc2672_dev *, uint8_t)
configures the fault detection bits
Definition ltc2672.c:762
int ltc2672_set_code_all_channels(struct ltc2672_dev *device, uint16_t code)
sets the same dac code for all channels
Definition ltc2672.c:271
ltc2672_faults
Definition ltc2672.h:158
@ LTC2672_POW_LIM
Definition ltc2672.h:165
@ LTC2672_OPEN_OUT4
Definition ltc2672.h:163
@ LTC2672_OPEN_OUT0
Definition ltc2672.h:159
@ LTC2672_OPEN_OUT3
Definition ltc2672.h:162
@ LTC2672_OPEN_OUT2
Definition ltc2672.h:161
@ LTC2672_INV_LENGTH
Definition ltc2672.h:166
@ LTC2672_OVER_TEMP
Definition ltc2672.h:164
@ LTC2672_OPEN_OUT1
Definition ltc2672.h:160
int ltc2672_reset(struct ltc2672_dev *)
Perform reset using clear GPIO.
Definition ltc2672.c:129
int ltc2672_set_code_channel(struct ltc2672_dev *device, uint16_t code, enum ltc2672_dac_ch out_ch)
sets the dac code for channel
Definition ltc2672.c:212
int ltc2672_hw_ldac_update(struct ltc2672_dev *)
updates all the channels using the LDAC pin
Definition ltc2672.c:814
ltc2672_out_range
Definition ltc2672.h:117
@ LTC2672_OFF
Definition ltc2672.h:118
@ LTC2672_3200VREF
Definition ltc2672.h:125
@ LTC2672_50VREF
Definition ltc2672.h:119
@ LTC2672_1600VREF
Definition ltc2672.h:124
@ LTC2672_4800VREF
Definition ltc2672.h:127
@ LTC2672_400VREF
Definition ltc2672.h:122
@ LTC2672_800VREF
Definition ltc2672.h:123
@ LTC2672_100VREF
Definition ltc2672.h:120
@ LTC2672_VMINUS_VREF
Definition ltc2672.h:126
@ LTC2672_200VREF
Definition ltc2672.h:121
ltc2672_commands
Definition ltc2672.h:63
@ LTC2672_CODE_TO_CHANNEL_ALL
Definition ltc2672.h:72
@ LTC2672_CODE_TO_CHANNEL_X_PWRUP_UPD_CHANNEL_ALL
Definition ltc2672.h:66
@ LTC2672_MON_MUX
Definition ltc2672.h:75
@ LTC2672_CODE_PWRUP_UPD_CHANNEL_X
Definition ltc2672.h:67
@ LTC2672_PWRDWN_DEV
Definition ltc2672.h:69
@ LTC2672_CODE_PWRUP_UPD_CHANNEL_ALL
Definition ltc2672.h:74
@ LTC2672_TOGGLE_GLBL
Definition ltc2672.h:77
@ LTC2672_NO_OP
Definition ltc2672.h:79
@ LTC2672_SPAN_TO_CHANNEL_X
Definition ltc2672.h:70
@ LTC2672_PWRUP_UPD_CHANNEL_X
Definition ltc2672.h:65
@ LTC2672_SPAN_TO_CHANNEL_ALL
Definition ltc2672.h:78
@ LTC2672_PWRUP_UPD_CHANNEL_ALL
Definition ltc2672.h:73
@ LTC2672_PWRDWN_CHANNEL_X
Definition ltc2672.h:68
@ LTC2672_TOGGLE_SEL
Definition ltc2672.h:76
@ LTC2672_CODE_TO_CHANNEL_X
Definition ltc2672.h:64
@ LTC2672_CNFG_CMD
Definition ltc2672.h:71
int ltc2672_power_down_channel(struct ltc2672_dev *, enum ltc2672_dac_ch)
power down a channel
Definition ltc2672.c:448
int ltc2672_setup_toggle_channel(struct ltc2672_dev *, enum ltc2672_dac_ch, uint32_t, uint32_t)
setup toggle parameters for a channel
Definition ltc2672.c:515
ltc2672_device_id
Definition ltc2672.h:100
@ LTC2672_16
Definition ltc2672.h:104
@ LTC2662_12
Definition ltc2672.h:101
@ LTC2662_16
Definition ltc2672.h:102
@ LTC2672_12
Definition ltc2672.h:103
int ltc2672_init(struct ltc2672_dev **, struct ltc2672_init_param *)
Device and communication init function.
Definition ltc2672.c:837
int ltc2672_update_channel(struct ltc2672_dev *, enum ltc2672_dac_ch)
updates the channel
Definition ltc2672.c:780
int ltc2672_global_toggle(struct ltc2672_dev *, bool)
enables or disables global toggle bit
Definition ltc2672.c:744
int ltc2672_chip_power_down(struct ltc2672_dev *)
power down ltc2672
Definition ltc2672.c:432
int ltc2672_transaction(struct ltc2672_dev *device, uint32_t, bool)
Write raw register value.
Definition ltc2672.c:156
int ltc2672_update_all_channels(struct ltc2672_dev *)
updates all the channels
Definition ltc2672.c:799
int ltc2672_set_current_all_channels(struct ltc2672_dev *, uint32_t)
sets the same current for all channels
Definition ltc2672.c:305
int ltc2672_enable_toggle_channel(struct ltc2672_dev *, uint32_t)
enables or disables selected channel/s for toggling
Definition ltc2672.c:726
#define LTC2672_TOTAL_CHANNELS
Definition ltc2672.h:57
int ltc2672_set_span_channel(struct ltc2672_dev *, enum ltc2672_out_range, enum ltc2672_dac_ch)
sets output span for channel
Definition ltc2672.c:330
int ltc2672_monitor_mux(struct ltc2672_dev *, enum ltc2672_mux_commands)
configures mux output depending on target measurement
Definition ltc2672.c:491
ltc2672_dac_ch
Definition ltc2672.h:108
@ LTC2672_DAC3
Definition ltc2672.h:112
@ LTC2672_DAC2
Definition ltc2672.h:111
@ LTC2672_DAC4
Definition ltc2672.h:113
@ LTC2672_DAC1
Definition ltc2672.h:110
@ LTC2672_DAC0
Definition ltc2672.h:109
int ltc2672_set_current_channel(struct ltc2672_dev *, uint32_t, enum ltc2672_dac_ch)
set the current for a selected DAC channel
Definition ltc2672.c:250
uint32_t ltc2672_current_to_code(struct ltc2672_dev *device, uint32_t, enum ltc2672_dac_ch)
get dac code value from current of a selected DAC channel
Definition ltc2672.c:189
int ltc2672_power_down_all_channels(struct ltc2672_dev *)
power down ALL channels
Definition ltc2672.c:467
int ltc2672_remove(struct ltc2672_dev *)
Remove resources allocated by the init function.
Definition ltc2672.c:90
int ltc2672_set_span_all_channels(struct ltc2672_dev *, enum ltc2672_out_range)
sets the same output span for all channels
Definition ltc2672.c:381
ltc2672_mux_commands
Definition ltc2672.h:131
@ LTC2672_MUX_VREF_LO
Definition ltc2672.h:140
@ LTC2672_MUX_VREF
Definition ltc2672.h:139
@ LTC2672_MUX_DISABLED
Definition ltc2672.h:132
@ LTC2672_MUC_VCC
Definition ltc2672.h:138
@ LTC2672_MUX_IOUT2
Definition ltc2672.h:135
@ LTC2672_MUX_VDD2
Definition ltc2672.h:144
@ LTC2672_MUX_VDD4
Definition ltc2672.h:146
@ LTC2672_MUX_VMINUS
Definition ltc2672.h:148
@ LTC2672_MUX_DIE_TEMP
Definition ltc2672.h:141
@ LTC2672_MUX_IOUT3
Definition ltc2672.h:136
@ LTC2672_MUX_VDD0
Definition ltc2672.h:142
@ LTC2672_MUX_IOUT4
Definition ltc2672.h:137
@ LTC2672_MUX_VOUT1
Definition ltc2672.h:151
@ LTC2672_MUX_VOUT4
Definition ltc2672.h:154
@ LTC2672_MUX_GND
Definition ltc2672.h:149
@ LTC2672_MUX_VOUT3
Definition ltc2672.h:153
@ LTC2672_MUX_IOUT0
Definition ltc2672.h:133
@ LTC2672_MUX_VDD3
Definition ltc2672.h:145
@ LTC2672_MUX_VOUT0
Definition ltc2672.h:150
@ LTC2672_MUX_VOUT2
Definition ltc2672.h:152
@ LTC2672_MUX_VDD1
Definition ltc2672.h:143
@ LTC2672_MUX_VPLUS
Definition ltc2672.h:147
@ LTC2672_MUX_IOUT1
Definition ltc2672.h:134
Header file of SPI Interface.
Definition ad9361_util.h:63
Structure holding ltc2672 descriptor.
Definition ltc2672.h:173
struct no_os_gpio_desc * gpio_clear
Definition ltc2672.h:177
uint32_t max_currents[LTC2672_TOTAL_CHANNELS]
Definition ltc2672.h:186
struct no_os_spi_desc * comm_desc
Definition ltc2672.h:175
struct no_os_gpio_desc * gpio_ldac
Definition ltc2672.h:178
enum ltc2672_out_range out_spans[LTC2672_TOTAL_CHANNELS]
Definition ltc2672.h:184
enum ltc2672_device_id id
Definition ltc2672.h:182
bool global_toggle
Definition ltc2672.h:190
uint32_t prev_command
Definition ltc2672.h:188
struct no_os_gpio_desc * gpio_fault
Definition ltc2672.h:180
struct no_os_gpio_desc * gpio_tgp
Definition ltc2672.h:179
Structure holding the parameters for ltc2672 initialization.
Definition ltc2672.h:197
struct no_os_gpio_init_param * gpio_fault
Definition ltc2672.h:204
enum ltc2672_device_id id
Definition ltc2672.h:206
struct no_os_gpio_init_param * gpio_ldac
Definition ltc2672.h:202
struct no_os_gpio_init_param * gpio_tgp
Definition ltc2672.h:203
struct no_os_spi_init_param spi_init
Definition ltc2672.h:199
struct no_os_gpio_init_param * gpio_clear
Definition ltc2672.h:201
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128