no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ltc6953.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef __LTC6953_H__
35#define __LTC6953_H__
36
37#include <stdint.h>
38#include <stdbool.h>
39#include "no_os_spi.h"
40#include "no_os_error.h"
41
42#define LTC6953_NUM_REGADDR 57
43
44/* Register address macro */
45#define LTC6953_REG_VCO_STATUS 0x00
46#define LTC6953_REG_STAT 0x01
47#define LTC6953_REG_PD_CTL 0x02
48#define LTC6953_REG_CHAN_POWER_DOWN(x) 0x03 + (x / 4)
49#define LTC6953_REG_TEMP 0x05
50#define LTC6953_REG_SYNC_CONFIG 0x0B
51#define LTC6953_REG_OUTPUT_DIVIDER(x) 0x0C + (x * 4)
52#define LTC6953_REG_OUTPUT_CONFIG(x) 0x0D + (x * 4)
53#define LTC6953_REG_DDEL_HIGH(x) 0x0D + (x * 4)
54#define LTC6953_REG_DDEL_LOW(x) 0x0E + (x * 4)
55#define LTC6953_REG_ADEL(x) 0x0F + (x * 4)
56#define LTC6953_REG_CHIP_INFO 0x38
57
58/* LTC6952_REG0 */
59#define LTC6953_VCOOK_MSK NO_OS_BIT(2)
60#define LTC6953_NVCOOK_MSK NO_OS_BIT(3)
61
62/* LTC6952_REG1 */
63#define LTC6953_INVSTAT_MSK NO_OS_BIT(7)
64#define LTC6953_STAT_OUT_MSK NO_OS_GENMASK(6, 0)
65
66/* LTC6952_REG2 */
67#define LTC6953_PDALL_MSK NO_OS_BIT(7)
68#define LTC6953_PDVCOPK_MSK NO_OS_BIT(5)
69#define LTC6953_FILTV_MSK NO_OS_BIT(1)
70#define LTC6953_POR_MSK NO_OS_BIT(0)
71
72/* LTC6953 REG3, 4, 5 */
73#define LTC6953_PD_MSK(ch) NO_OS_GENMASK( \
74 ((ch) & NO_OS_GENMASK(1, 0)) * 2 + 1, \
75 ((ch) & NO_OS_GENMASK(1, 0)) * 2)
76#define LTC6953_PD(ch, x) no_os_field_prep(LTC6953_PD_MSK(ch), x)
77
78/* LTC6953 REG5 */
79#define LTC6953_TEMPO_MSK NO_OS_BIT(7)
80
81/* LTC6953 REG11 */
82#define LTC6953_EZMD_MSK NO_OS_BIT(4)
83#define LTC6953_SRQMD_MSK NO_OS_BIT(3)
84#define LTC6953_SYSCT_MSK NO_OS_GENMASK(2, 1)
85#define LTC6953_SSRQ_MSK NO_OS_BIT(0)
86
87/* LTC6953 REG12,16,20,24,28,32,36,40,44,48,52 */
88#define LTC6953_MP_MSK NO_OS_GENMASK(7, 3)
89#define LTC6953_MD_MSK NO_OS_GENMASK(2, 0)
90
91/* LTC6953_REG13,17,21,25,29,33,37,41,45,49,53 */
92#define LTC6953_SRQEN_MSK NO_OS_BIT(7)
93#define LTC6953_MODE_MSK NO_OS_GENMASK(6, 5)
94#define LTC6953_OINV_MSK NO_OS_BIT(4)
95#define LTC6953_DDEL_HIGH_MSK NO_OS_GENMASK(3, 0)
96
97/* LTC6953_REG14,18,22,26,30,34,38,42,46,50,54 */
98#define LTC6953_DDEL_LOW_MSK NO_OS_GENMASK(7, 0)
99
100/* LTC6953_REG15,19,23,27,31,35,39,43,47,51,55 */
101#define LTC6953_ADEL_MSK NO_OS_GENMASK(5, 0)
102
103/* LTC6953_REG56 */
104#define LTC6953_REV_MSK NO_OS_GENMASK(7, 4)
105#define LTC6953_PART_MSK NO_OS_GENMASK(3, 0)
106
107#define LTC6953_NUM_CHAN 11
108
109#define LTC6953_OUT_DIV_MIN 1
110#define LTC6953_OUT_DIV_MAX 1048576
111#define LTC6953_X_MAX 127
112
113#define LTC6953_ADDRX 0
114#define LTC6953_DXMSB 1
115#define LTC6953_NUMBITS 2
116#define LTC6953_R_ONLY 3
117
118/* Specifications */
119#define LTC6953_SPI_WRITE_CMD 0x00
120#define LTC6953_SPI_READ_CMD 0x01
121#define LTC6953_SPI_ADDR_CMD(x) ((x) << 1)
122#define LTC6953_BUFF_SIZE_BYTES 2
123#define LTC6953_DUMMY_BYTES 0x00
124
125
131 uint8_t num;
132 uint8_t out_divider;
133 uint8_t mp;
134 uint8_t md;
137 uint8_t sysref_mode;
139 int8_t extended_name[16];
140};
141
152
163
165int ltc6953_init(struct ltc6953_dev **dev,
167
169int ltc6953_remove(struct ltc6953_dev *dev);
170
172int ltc6953_reset(struct ltc6953_dev *dev);
173
175int ltc6953_write(struct ltc6953_dev *dev, uint8_t addr,
176 uint16_t data);
177
179int ltc6953_read(struct ltc6953_dev *dev, uint8_t addr,
180 uint8_t *data);
181
183int ltc6953_update(struct ltc6953_dev *dev, uint8_t reg_addr,
184 uint8_t mask, uint8_t data);
185
187int ltc6953_power_down_all(struct ltc6953_dev *dev, bool is_pwdn);
188
190int ltc6953_enable_filter(struct ltc6953_dev *dev, bool is_en);
191
193int ltc6953_power_down_vco(struct ltc6953_dev *dev, bool is_pwdn);
194
196int ltc6953_set_output_divider(struct ltc6953_dev *dev, uint32_t channel,
197 uint32_t divider);
198
200int ltc6953_power_mode(struct ltc6953_dev *dev, uint32_t channel,
201 int32_t mode);
202
204int ltc6953_enable_sync(struct ltc6953_dev *dev, uint32_t channel,
205 bool enable);
206
208int ltc6953_set_digital_delay(struct ltc6953_dev *dev, uint32_t channel,
209 uint16_t delay);
210
212int ltc6953_set_analog_delay(struct ltc6953_dev *dev, uint32_t channel,
213 uint16_t delay);
214
216int ltc6953_set_mode(struct ltc6953_dev *dev, uint32_t channel,
217 uint8_t mode);
218
220int ltc6953_invert_output(struct ltc6953_dev *dev, uint32_t channel,
221 bool is_invert);
222
224int ltc6953_ezsync_mode(struct ltc6953_dev *dev, bool is_en);
225
227int ltc6953_sync_mode(struct ltc6953_dev *dev, bool is_en);
228
230int ltc6953_ssrq_mode(struct ltc6953_dev *dev, bool is_en);
231
233int ltc6953_num_pulse(struct ltc6953_dev *dev, uint8_t num_pulse);
234
236int ltc6953_enable_temp_stat(struct ltc6953_dev *dev, bool is_en);
237
239int ltc6953_vco_status(struct ltc6953_dev *dev, bool *is_ok);
240
242int ltc6953_get_invstat(struct ltc6953_dev *dev, bool *status);
243
245int ltc6953_set_invstat(struct ltc6953_dev *dev, bool status);
246
248int ltc6953_set_x(struct ltc6953_dev *dev, uint8_t x);
249
251int ltc6953_get_x(struct ltc6953_dev *dev, uint8_t *x);
252
254int ltc6953_read_rev(struct ltc6953_dev *dev, uint8_t *rev);
255
257int ltc6953_read_part(struct ltc6953_dev *dev, uint8_t *part);
258
259#endif // __LTC6953_H__
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int ltc6953_enable_sync(struct ltc6953_dev *dev, uint32_t channel, bool enable)
Set LTC6953 Channel Sync mode.
Definition ltc6953.c:307
int ltc6953_num_pulse(struct ltc6953_dev *dev, uint8_t num_pulse)
Set LTC6953 SYSCT/Num pulse value.
Definition ltc6953.c:448
int ltc6953_sync_mode(struct ltc6953_dev *dev, bool is_en)
Set LTC6953 SRQ mode.
Definition ltc6953.c:424
int ltc6953_ssrq_mode(struct ltc6953_dev *dev, bool is_en)
Set LTC6953 SSRQ mode.
Definition ltc6953.c:436
int ltc6953_power_mode(struct ltc6953_dev *dev, uint32_t channel, int32_t mode)
Set LTC6953 Channel Power Mode.
Definition ltc6953.c:287
int ltc6953_enable_temp_stat(struct ltc6953_dev *dev, bool is_en)
Set LTC6953 TEMPO value.
Definition ltc6953.c:463
int ltc6953_power_down_vco(struct ltc6953_dev *dev, bool is_pwdn)
Powers down LTC6953 VCO Input channel.
Definition ltc6953.c:228
int ltc6953_enable_filter(struct ltc6953_dev *dev, bool is_en)
Enable LTC6953 VCO Input filter.
Definition ltc6953.c:216
int ltc6953_ezsync_mode(struct ltc6953_dev *dev, bool is_en)
Set LTC6953 EZSYNC mode.
Definition ltc6953.c:412
int ltc6953_set_x(struct ltc6953_dev *dev, uint8_t x)
Set LTC6953 x bitfield status.
Definition ltc6953.c:527
int ltc6953_vco_status(struct ltc6953_dev *dev, bool *is_ok)
Read LTC6953 Check VCO Input stats.
Definition ltc6953.c:475
int ltc6953_remove(struct ltc6953_dev *dev)
Free resources allocated for LTC6953.
Definition ltc6953.c:185
#define LTC6953_NUM_CHAN
Definition ltc6953.h:107
int ltc6953_reset(struct ltc6953_dev *dev)
Software reset of the device.
Definition ltc6953.c:105
int ltc6953_write(struct ltc6953_dev *dev, uint8_t addr, uint16_t data)
Writes data to LTC6953 over SPI.
Definition ltc6953.c:118
int ltc6953_set_output_divider(struct ltc6953_dev *dev, uint32_t channel, uint32_t divider)
Set output divider for LTC6953 output channel.
Definition ltc6953.c:241
int ltc6953_read(struct ltc6953_dev *dev, uint8_t addr, uint8_t *data)
Read device register.
Definition ltc6953.c:138
int ltc6953_set_mode(struct ltc6953_dev *dev, uint32_t channel, uint8_t mode)
Set LTC6953 output channel mode.
Definition ltc6953.c:377
int ltc6953_read_part(struct ltc6953_dev *dev, uint8_t *part)
Read LTC6953 Part number.
Definition ltc6953.c:583
int ltc6953_get_invstat(struct ltc6953_dev *dev, bool *status)
Read LTC6953 INVSTAT bit.
Definition ltc6953.c:495
int ltc6953_invert_output(struct ltc6953_dev *dev, uint32_t channel, bool is_invert)
Set LTC6953 output channel inversion.
Definition ltc6953.c:396
int ltc6953_power_down_all(struct ltc6953_dev *dev, bool is_pwdn)
Powers down all LTC6953 output channels.
Definition ltc6953.c:204
int ltc6953_set_invstat(struct ltc6953_dev *dev, bool status)
Write LTC6953 INVSTAT bit.
Definition ltc6953.c:515
int ltc6953_update(struct ltc6953_dev *dev, uint8_t reg_addr, uint8_t mask, uint8_t data)
Update LTC6953 register.
Definition ltc6953.c:164
int ltc6953_set_analog_delay(struct ltc6953_dev *dev, uint32_t channel, uint16_t delay)
Set analog delay/phase of LTC6953 output channel.
Definition ltc6953.c:357
int ltc6953_set_digital_delay(struct ltc6953_dev *dev, uint32_t channel, uint16_t delay)
Set digital delay/phase of LTC6953 output channel.
Definition ltc6953.c:325
int ltc6953_init(struct ltc6953_dev **dev, struct ltc6953_init_param *init_param)
Initializes the SPI communication with LTC6953.
Definition ltc6953.c:70
int ltc6953_get_x(struct ltc6953_dev *dev, uint8_t *x)
Set LTC6953 x bitfield status.
Definition ltc6953.c:542
int ltc6953_read_rev(struct ltc6953_dev *dev, uint8_t *rev)
Read LTC6953 Part number.
Definition ltc6953.c:562
Error codes definition.
Header file of SPI Interface.
Output channel configuration.
Definition ltc6953.h:130
int8_t extended_name[16]
Definition ltc6953.h:139
uint8_t mp
Definition ltc6953.h:133
uint8_t md
Definition ltc6953.h:134
uint8_t analog_delay
Definition ltc6953.h:136
uint8_t digital_delay
Definition ltc6953.h:135
uint8_t sysref_mode
Definition ltc6953.h:137
uint8_t out_divider
Definition ltc6953.h:132
uint8_t power_down_mode
Definition ltc6953.h:138
uint8_t num
Definition ltc6953.h:131
LTC6953 Device Descriptor.
Definition ltc6953.h:157
float vco_frequency
Definition ltc6953.h:161
struct ltc6953_channel_spec chans[LTC6953_NUM_CHAN]
Definition ltc6953.h:160
struct no_os_spi_desc * spi_desc
Definition ltc6953.h:159
LTC6953 Initialization Parameters structure.
Definition ltc6953.h:146
struct no_os_spi_init_param spi_init
Definition ltc6953.h:148
float vco_frequency
Definition ltc6953.h:150
struct ltc6953_channel_spec chans[LTC6953_NUM_CHAN]
Definition ltc6953.h:149
Structure holding SPI descriptor.
Definition no_os_spi.h:180
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128