no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ltc268x.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __LTC268X_H__
34#define __LTC268X_H__
35
36#include "no_os_spi.h"
37#include "no_os_util.h"
38#include "no_os_delay.h"
39#include "errno.h"
40
41#define LTC268X_CHANNEL_SEL(x, id) (id ? x : (x << 1))
42
43#define LTC268X_CMD_CH_CODE(x, id) (0x00 + LTC268X_CHANNEL_SEL(x, id))
44#define LTC268X_CMD_CH_SETTING(x, id) (0x10 + LTC268X_CHANNEL_SEL(x, id))
45#define LTC268X_CMD_CH_OFFSET(x, id) (0X20 + LTC268X_CHANNEL_SEL(x, id))
46#define LTC268X_CMD_CH_GAIN(x, id) (0x30 + LTC268X_CHANNEL_SEL(x, id))
47#define LTC268X_CMD_CH_CODE_UPDATE(x, id) (0x40 + LTC268X_CHANNEL_SEL(x, id))
48#define LTC268X_CMD_CH_CODE_UPDATE_ALL(x, id) (0x50 + LTC268X_CHANNEL_SEL(x, id))
49#define LTC268X_CMD_CH_UPDATE(x, id) (0x60 + LTC268X_CHANNEL_SEL(x, id))
50
51#define LTC268X_CMD_CONFIG_REG 0x70
52#define LTC268X_CMD_POWERDOWN_REG 0x71
53#define LTC268X_CMD_A_B_SELECT_REG 0x72
54#define LTC268X_CMD_SW_TOGGLE_REG 0x73
55#define LTC268X_CMD_TOGGLE_DITHER_EN_REG 0x74
56#define LTC268X_CMD_MUX_CTRL_REG 0x75
57#define LTC268X_CMD_FAULT_REG 0x76
58#define LTC268X_CMD_CODE_ALL 0x78
59#define LTC268X_CMD_CODE_UPDATE_ALL 0x79
60#define LTC268X_CMD_SETTING_ALL 0x7A
61#define LTC268X_CMD_SETTING_UPDATE_ALL 0x7B
62#define LTC268X_CMD_UPDATE_ALL 0x7C
63#define LTC268X_CMD_NOOP 0xFF
64
65#define LTC268X_READ_OPERATION 0x80
66
67/* Channel Settings */
68#define LTC268X_CH_SPAN_MSK NO_OS_GENMASK(3, 0)
69#define LTC268X_CH_SPAN(x) no_os_field_prep(LTC268X_CH_SPAN_MSK, x)
70#define LTC268X_CH_TD_SEL_MSK NO_OS_GENMASK(5, 4)
71#define LTC268X_CH_TD_SEL(x) no_os_field_prep(LTC268X_CH_TD_SEL_MSK, x)
72#define LTC268X_CH_DIT_PER_MSK NO_OS_GENMASK(8, 6)
73#define LTC268X_CH_DIT_PER(x) no_os_field_prep(LTC268X_CH_DIT_PER_MSK, x)
74#define LTC268X_CH_DIT_PH_MSK NO_OS_GENMASK(10, 9)
75#define LTC268X_CH_DIT_PH(x) no_os_field_prep(LTC268X_CH_DIT_PH_MSK, x)
76#define LTC268X_CH_MODE NO_OS_BIT(11)
77
78/* Configuration register */
79#define LTC268X_CONFIG_RST NO_OS_BIT(15)
80
81#define LTC268X_PWDN(x) (1 << ((x) & 0xF))
82#define LTC268X_DITH_EN(x) (1 << ((x) & 0xF))
83
91
93 int min;
94 int max;
95};
96
104
111
116
123
128
143
157int32_t ltc268x_set_pwr_dac(struct ltc268x_dev *dev, uint16_t setting);
158int32_t ltc268x_set_dither_toggle(struct ltc268x_dev *dev, uint16_t setting);
159int32_t ltc268x_set_dither_mode(struct ltc268x_dev *dev, uint8_t channel,
160 bool en);
161int32_t ltc268x_set_span(struct ltc268x_dev *dev, uint8_t channel,
162 enum ltc268x_voltage_range range);
163int32_t ltc268x_set_dither_phase(struct ltc268x_dev *dev, uint8_t channel,
164 enum ltc268x_dither_phase phase);
165int32_t ltc268x_set_dither_period(struct ltc268x_dev *dev, uint8_t channel,
166 enum ltc268x_dither_period period);
167int32_t ltc268x_select_tg_dith_clk(struct ltc268x_dev *dev, uint8_t channel,
168 enum ltc268x_clk_input clk_input);
169int32_t ltc268x_select_reg(struct ltc268x_dev *dev, uint8_t channel,
170 enum ltc268x_a_b_register sel_reg);
171int32_t ltc268x_software_reset(struct ltc268x_dev *dev);
172int32_t ltc268x_set_voltage(struct ltc268x_dev *dev, uint8_t channel,
173 float voltage);
174int32_t ltc268x_software_toggle(struct ltc268x_dev *dev, uint8_t channel);
175int32_t ltc268x_init(struct ltc268x_dev **device,
177int32_t ltc268x_remove(struct ltc268x_dev *dev);
178
179#endif // __LTC268X_H__
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
Error macro definition for ARM Compiler.
ltc268x_clk_input
Definition ltc268x.h:117
@ LTC268X_TGP1
Definition ltc268x.h:120
@ LTC268X_TGP0
Definition ltc268x.h:119
@ LTC268X_TGP2
Definition ltc268x.h:121
@ LTC268X_SOFT_TGL
Definition ltc268x.h:118
ltc268x_device_id
Definition ltc268x.h:124
@ LTC2686
Definition ltc268x.h:125
@ LTC2688
Definition ltc268x.h:126
int32_t ltc268x_set_dither_period(struct ltc268x_dev *dev, uint8_t channel, enum ltc268x_dither_period period)
Definition ltc268x.c:254
int32_t ltc268x_init(struct ltc268x_dev **device, struct ltc268x_init_param init_param)
Definition ltc268x.c:407
int32_t ltc268x_set_dither_phase(struct ltc268x_dev *dev, uint8_t channel, enum ltc268x_dither_phase phase)
Definition ltc268x.c:228
ltc268x_voltage_range
Definition ltc268x.h:84
@ LTC268X_VOLTAGE_RANGE_0V_10V
Definition ltc268x.h:86
@ LTC268X_VOLTAGE_RANGE_0V_5V
Definition ltc268x.h:85
@ LTC268X_VOLTAGE_RANGE_M5V_5V
Definition ltc268x.h:87
@ LTC268X_VOLTAGE_RANGE_M10V_10V
Definition ltc268x.h:88
@ LTC268X_VOLTAGE_RANGE_M15V_15V
Definition ltc268x.h:89
int32_t ltc268x_select_tg_dith_clk(struct ltc268x_dev *dev, uint8_t channel, enum ltc268x_clk_input clk_input)
Definition ltc268x.c:305
int32_t ltc268x_set_dither_mode(struct ltc268x_dev *dev, uint8_t channel, bool en)
Definition ltc268x.c:172
ltc268x_a_b_register
Definition ltc268x.h:112
@ LTC268X_SELECT_A_REG
Definition ltc268x.h:113
@ LTC268X_SELECT_B_REG
Definition ltc268x.h:114
ltc268x_dither_period
Definition ltc268x.h:97
@ LTC268X_DITH_PERIOD_32
Definition ltc268x.h:101
@ LTC268X_DITH_PERIOD_8
Definition ltc268x.h:99
@ LTC268X_DITH_PERIOD_16
Definition ltc268x.h:100
@ LTC268X_DITH_PERIOD_64
Definition ltc268x.h:102
@ LTC268X_DITH_PERIOD_4
Definition ltc268x.h:98
int32_t ltc268x_software_reset(struct ltc268x_dev *dev)
Definition ltc268x.c:352
int32_t ltc268x_set_span(struct ltc268x_dev *dev, uint8_t channel, enum ltc268x_voltage_range range)
Definition ltc268x.c:202
int32_t ltc268x_set_dither_toggle(struct ltc268x_dev *dev, uint16_t setting)
Definition ltc268x.c:151
int32_t ltc268x_software_toggle(struct ltc268x_dev *dev, uint8_t channel)
Definition ltc268x.c:330
ltc268x_dither_phase
Definition ltc268x.h:105
@ LTC268X_DITH_PHASE_90
Definition ltc268x.h:107
@ LTC268X_DITH_PHASE_180
Definition ltc268x.h:108
@ LTC268X_DITH_PHASE_0
Definition ltc268x.h:106
@ LTC268X_DITH_PHASE_270
Definition ltc268x.h:109
int32_t ltc268x_set_voltage(struct ltc268x_dev *dev, uint8_t channel, float voltage)
Definition ltc268x.c:368
int32_t ltc268x_remove(struct ltc268x_dev *dev)
Free the resources allocated by ltc268x_init().
Definition ltc268x.c:495
int32_t ltc268x_set_pwr_dac(struct ltc268x_dev *dev, uint16_t setting)
Definition ltc268x.c:130
int32_t ltc268x_select_reg(struct ltc268x_dev *dev, uint8_t channel, enum ltc268x_a_b_register sel_reg)
Definition ltc268x.c:280
Header file of Delay functions.
Header file of SPI Interface.
Header file of utility functions.
Definition ad9361_util.h:63
Definition ltc268x.h:129
bool dither_mode[16]
Definition ltc268x.h:134
struct no_os_spi_desc * spi_desc
Definition ltc268x.h:130
enum ltc268x_a_b_register reg_select[16]
Definition ltc268x.h:141
uint8_t num_channels
Definition ltc268x.h:136
enum ltc268x_dither_phase dither_phase[16]
Definition ltc268x.h:138
enum ltc268x_clk_input clk_input[16]
Definition ltc268x.h:140
enum ltc268x_device_id dev_id
Definition ltc268x.h:131
enum ltc268x_voltage_range crt_range[16]
Definition ltc268x.h:137
uint16_t dac_code[16]
Definition ltc268x.h:135
uint16_t dither_toggle_en
Definition ltc268x.h:133
uint16_t pwd_dac_setting
Definition ltc268x.h:132
enum ltc268x_dither_period dither_period[16]
Definition ltc268x.h:139
Definition ltc268x.h:144
uint16_t pwd_dac_setting
Definition ltc268x.h:148
bool dither_mode[16]
Definition ltc268x.h:150
enum ltc268x_voltage_range crt_range[16]
Definition ltc268x.h:151
uint16_t dither_toggle_en
Definition ltc268x.h:149
struct no_os_spi_init_param spi_init
Definition ltc268x.h:146
enum ltc268x_dither_period dither_period[16]
Definition ltc268x.h:153
enum ltc268x_device_id dev_id
Definition ltc268x.h:147
enum ltc268x_a_b_register reg_select[16]
Definition ltc268x.h:155
enum ltc268x_dither_phase dither_phase[16]
Definition ltc268x.h:152
enum ltc268x_clk_input clk_input[16]
Definition ltc268x.h:154
Definition ltc268x.h:92
int min
Definition ltc268x.h:93
int max
Definition ltc268x.h:94
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128