no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ltc7841.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __LTC7841_H__
34#define __LTC7841_H__
35
36#include <stdint.h>
37#include <stdbool.h>
38#include <stdlib.h>
39#include "no_os_i2c.h"
40#include "no_os_irq.h"
41#include "no_os_print_log.h"
42#include "no_os_delay.h"
43#include "no_os_error.h"
44#include "no_os_util.h"
45#include "no_os_units.h"
46#include "no_os_alloc.h"
47
49#define TWO_BYTES_LENGTH 2
50#define REPEATED_START_MODE 1
51#define I2C_WRITE_LENGTH_FOR_READ 1
52#define I2C_DEFAULT_ARRAY_SIZE 2
53#define STOP_MODE 0
54#define LTC7841_DEFAULT_ADDRESS_0 0x5A
55#define LTC7841_DEFAULT_ADDRESS_1 0x5B
56#define LTC7841_TOTAL_REGISTERS 0x16
57#define LTC7841_BYTE_LENGTH 1
58#define LTC7841_WORD_LENGTH 2
59#define LTC7841_I2C_WR_FRAME_SIZE 3
60/* This denotes the max voltage output of LTC7841 in millivolts*/
61#define LTC7841_MAX_VOUT 48000
62#define LTC7841_7_BIT_ADDRESS_MASK 0x7F
63#define LTC7841_OPERATION_OFF 0x00
64#define LTC7841_OPERATION_TURN_ON 0x80
65#define LTC7841_OPERATION_MARGIN_LOW 0x98
66#define LTC7841_OPERATION_MARGIN_HIGH 0xA8
67/* Slew rate multiplier*/
68#define LTC7841_NOMINAL_SLEW_RATE 0b00
69#define LTC7841_SLOW_SLEW_RATE 0b01
70#define LTC7841_FAST_SLEW_RATE 0b11
71/* READ TEMPERATURE 1*/
72#define LTC7841_INTERNAL_DIE_TEMPERATURE 0b0
73#define LTC7841_TSNS_PIN_VOLTAGE 0b1
74#define READ_TEMPERATURE_1_BIT 2
75/* MFR MARGIN MAX VALUE*/
76#define MFR_MAX_VALUE 0x1FF
77/* MFR VOUT INITIALIZE TO HALF */
78#define MFR_VOUT_INIT 0x0FF
79#define WRITE_ONLY_REGISTERS_NUMBER 2
80#define ECOMM 9
81
83
84/* LTC7841 registers list */
85#define LTC7841_OPERATION 1
86#define LTC7841_VOUT_MODE 0x20
87#define LTC7841_STATUS_WORD 0x79
88#define LTC7841_READ_VIN 0x88
89#define LTC7841_READ_IIN 0x89
90#define LTC7841_READ_VOUT 0x8B
91#define LTC7841_READ_IOUT 0x8C
92#define LTC7841_READ_TEMPERATURE_1 0x8D
93#define LTC7841_PMBUS_REVISION 0x98
94#define LTC7841_MFR_IOUT_PEAK 0xD7
95#define LTC7841_MFR_VOUT_PEAK 0xDD
96#define LTC7841_MFR_VIN_PEAK 0xDE
97#define LTC7841_MFR_TEMEPRATURE1_PEAK 0xDF
98#define LTC7841_MFR_IIN_PEAK 0xE1
99#define LTC7841_MFR_CLEAR_PEAKS 0xE3
100#define LTC7841_MFR_VOUT_MARGIN_HIGH 0xE5
101#define LTC7841_MFR_SPECIAL_ID 0xE7
102#define LTC7841_MFR_VOUT_COMMAND 0xE8
103#define LTC7841_MFR_CONFIG 0xE9
104#define LTC7841_MFR_VOUT_MARGIN_LOW 0xED
105#define LTC7841_MFR_RAIL_ADDRESS 0xFA
106#define LTC7841_MFR_RESET 0xFD
107
116
121 /* I2C */
123 /* IRQ controller */
125};
126
131 /* I2C */
133 /* IRQ controller */
135};
136
137int ltc7841_reg_read(struct ltc7841_desc *desc, uint8_t cmd, uint8_t * data);
138
140int ltc7841_reg_write(struct ltc7841_desc *desc, uint8_t cmd, uint16_t value);
141
143int ltc7841_init(struct ltc7841_desc ** device,
145
147int ltc7841_remove(struct ltc7841_desc *);
149int ltc7841_reset(struct ltc7841_desc *desc);
151int ltc7841_change_rail_address(struct ltc7841_desc *desc, uint8_t addr);
153int ltc7841_turn_off(struct ltc7841_desc *desc);
155int ltc7841_turn_on(struct ltc7841_desc *desc);
171int ltc7841_change_vout_command(struct ltc7841_desc *desc, uint16_t vout_level);
174 uint16_t vout_level);
177 uint16_t vout_level);
179int ltc7841_mfr_clear_peaks(struct ltc7841_desc *desc);
182#endif /* LTC7841_H */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
const uint8_t ltc7841_write_only_registers[WRITE_ONLY_REGISTERS_NUMBER]
Definition ltc7841.c:35
int ltc7841_reset(struct ltc7841_desc *desc)
Perform a reset to the LTC7841.
Definition ltc7841.c:200
ltc7841_status_word_bit_placement
Definition ltc7841.h:108
@ LTC7841_OUTPUT_OVERVOLTAGE_FAULT
Definition ltc7841.h:111
@ LTC7841_TEMPERATURE_FAULT
Definition ltc7841.h:110
@ LTC7841_PGOOD
Definition ltc7841.h:113
@ LTC7841_OUTPUT_VOLTAGE_FAULT
Definition ltc7841.h:114
@ LTC7841_COMMUNICATION_FAILURE
Definition ltc7841.h:109
@ LTC7841_OFF
Definition ltc7841.h:112
int ltc7841_clear_status_word_bits(struct ltc7841_desc *desc)
This clears the STATUS_WORD BITS that are clearable.
Definition ltc7841.c:437
int ltc7841_init(struct ltc7841_desc **device, struct ltc7841_init_param *init_param)
Initialize the device structure.
Definition ltc7841.c:110
int ltc7841_reg_read(struct ltc7841_desc *desc, uint8_t cmd, uint8_t *data)
Read a raw value from a register.
Definition ltc7841.c:145
int ltc7841_change_to_internal_die_temperature(struct ltc7841_desc *desc)
Change to Internal Die Temeperature Reading for LTC7841.
Definition ltc7841.c:329
int ltc7841_change_vout_command(struct ltc7841_desc *desc, uint16_t vout_level)
Change Vout command.
Definition ltc7841.c:372
int ltc7841_mfr_clear_peaks(struct ltc7841_desc *desc)
This clears the MFR peak data values.
Definition ltc7841.c:427
int ltc7841_change_to_fast_slew_rate(struct ltc7841_desc *desc)
Change to Fast Slew Rate for LTC7841.
Definition ltc7841.c:308
int ltc7841_change_margin_low_command(struct ltc7841_desc *desc, uint16_t vout_level)
Change margin low command.
Definition ltc7841.c:390
int ltc7841_turn_off(struct ltc7841_desc *desc)
Turn off LTC7841.
Definition ltc7841.c:223
int ltc7841_change_to_nominal_slew_rate(struct ltc7841_desc *desc)
Change to Nominal Slew Rate for LTC7841.
Definition ltc7841.c:266
int ltc7841_turn_on(struct ltc7841_desc *desc)
Turn on LTC7841.
Definition ltc7841.c:233
#define WRITE_ONLY_REGISTERS_NUMBER
Definition ltc7841.h:79
int ltc7841_operation_margin_low(struct ltc7841_desc *desc)
Margin Low for LTC7841 Operation.
Definition ltc7841.c:243
int ltc7841_change_margin_high_command(struct ltc7841_desc *desc, uint16_t vout_level)
Change margin high command.
Definition ltc7841.c:409
int ltc7841_operation_margin_high(struct ltc7841_desc *desc)
Margin High for LTC7841 Operation.
Definition ltc7841.c:254
int ltc7841_remove(struct ltc7841_desc *)
Free the device descriptor.
Definition ltc7841.c:45
int ltc7841_change_to_tsns_pin_voltage(struct ltc7841_desc *desc)
Change to TSNS PIN VOLTAGE for LTC7841.
Definition ltc7841.c:350
int ltc7841_reg_write(struct ltc7841_desc *desc, uint8_t cmd, uint16_t value)
Write a raw value to a register.
Definition ltc7841.c:176
int ltc7841_change_rail_address(struct ltc7841_desc *desc, uint8_t addr)
Perform change of rail address of LTC7841.
Definition ltc7841.c:211
int ltc7841_change_to_slow_slew_rate(struct ltc7841_desc *desc)
Change to Slow Slew Rate for LTC7841.
Definition ltc7841.c:287
Header file of Delay functions.
Error codes definition.
Header file of I2C Interface.
Header file of IRQ interface.
Print messages helpers.
Header file of Units.
Header file of utility functions.
Definition ad9361_util.h:63
ltc7841 device descriptor
Definition ltc7841.h:130
struct no_os_i2c_desc * comm_desc
Definition ltc7841.h:132
struct no_os_irq_ctrl_desc * irq_desc
Definition ltc7841.h:134
Initialization parameter for the device descriptor.
Definition ltc7841.h:120
struct no_os_irq_init_param irq_param
Definition ltc7841.h:124
struct no_os_i2c_init_param * comm_param
Definition ltc7841.h:122
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52
Definition no_os_irq.h:117
Structure holding the initial parameters for Interrupt Request.
Definition no_os_irq.h:101