no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
adm1177.h
Go to the documentation of this file.
1/**************************************************************************/
33#ifndef __ADM1177_H__
34#define __ADM1177_H__
35
36#include <stdint.h>
37#include <stdio.h>
38#include "no_os_i2c.h"
39#include "no_os_util.h"
40#include "no_os_units.h"
41
42/* ADM1177 Slave Address */
43#define ADM1177_ADDRESS 0x5A
44
45/* ADM1177 Write Command Byte Bits */
46#define ADM1177_CMD_V_CONT NO_OS_BIT(0)
47#define ADM1177_CMD_V_ONCE NO_OS_BIT(1)
48#define ADM1177_CMD_I_CONT NO_OS_BIT(2)
49#define ADM1177_CMD_I_ONCE NO_OS_BIT(3)
50#define ADM1177_CMD_VRANGE NO_OS_BIT(4)
51#define ADM1177_CMD_STATUS_RD NO_OS_BIT(6)
52
53/* ADM11777 Write Extended Command Byte Register Addresses */
54#define ADM1177_REG_ALERT_EN (NO_OS_BIT(7) | 0x1)
55#define ADM1177_REG_ALERT_TH (NO_OS_BIT(7) | 0x2)
56#define ADM1177_REG_CONTROL (NO_OS_BIT(7) | 0x3)
57
58/* ALERT_EN Register Operations */
59#define ADM1177_EN_ADC_OC1_MASK NO_OS_BIT(0)
60#define ADM1177_EN_ADC_OC4_MASK NO_OS_BIT(1)
61#define ADM1177_EN_HS_ALERT_MASK NO_OS_BIT(2)
62#define ADM1177_EN_OFF_ALERT_MASK NO_OS_BIT(3)
63#define ADM1177_CLEAR_MASK NO_OS_BIT(4)
64
65/* CONTROL Register Operations */
66#define ADM1177_SWOFF_MASK NO_OS_BIT(0)
67
68/* Status Byte Operations */
69#define ADM1177_ADC_OC_MASK NO_OS_BIT(0)
70#define ADM1177_ADC_ALERT_MASK NO_OS_BIT(1)
71#define ADM1177_HS_OC_MASK NO_OS_BIT(2)
72#define ADM1177_HS_ALERT_MASK NO_OS_BIT(3)
73#define ADM1177_OFF_STATUS_MASK NO_OS_BIT(4)
74#define ADM1177_OFF_ALERT_MASK NO_OS_BIT(5)
75
76/* Write Extended Command Mask */
77#define ADM1177_EXT_CMD_MASK NO_OS_BIT(7)
78
79#define ADM1177_I_FULLSCALE 105840
80#define ADM1177_RESOLUTION 4096
81#define ADM1177_V_FULLSCALE_0 26350
82#define ADM1177_V_FULLSCALE_1 6650
83#define ADM1177_R_SENSE 25
84
91
96
102
106
107/* Initializes the ADM1177 */
108int adm1177_init(struct adm1177_dev **device,
110
111/* Removes the resources allocated by the ADM1177 */
113
114/* Write the command byte to the slave */
116 uint8_t cmd,
117 uint8_t reg_address);
118
119/* Reads the status byte if requested */
120int adm1177_read_status(struct adm1177_dev *device, uint8_t *status_byte);
121
122/* Sets vrange of the device */
123int adm1177_set_vrange(struct adm1177_dev *device, uint8_t vrange);
124
125/* Gets conversion results for both Voltage and Current at the same time */
127 uint16_t* conv_voltage,
128 uint16_t* conv_current);
129
130/* Converts the raw sample of the voltage from the ADC in uV */
132 uint16_t raw_sample,
133 uint64_t *voltage_uv);
134
135/* Converts the raw sample of the current from the ADC in uA */
136int adm1177_to_microampers(uint16_t raw_sample, uint64_t *current_ua);
137
138#endif /*__ADM1177_H__*/
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int adm1177_to_microampers(uint16_t raw_sample, uint64_t *current_ua)
Converts the raw sample from the Readback into uA.
Definition adm1177.c:324
int adm1177_read_conv(struct adm1177_dev *device, uint16_t *conv_voltage, uint16_t *conv_current)
Gets the voltage/current readback from the ADM1177s I2C ADC, if the device is initialized right and t...
Definition adm1177.c:206
adm1177_last_command
Definition adm1177.h:85
@ ADM1177_CURRENT_EN
Definition adm1177.h:87
@ ADM1177_STATUS_EN
Definition adm1177.h:89
@ ADM1177_VOLTAGE_EN
Definition adm1177.h:86
@ ADM1177_VOLTAGE_AND_CURRENT_EN
Definition adm1177.h:88
int adm1177_write(struct adm1177_dev *device, uint8_t cmd, uint8_t reg_address)
In the write command byte operation, the master device sends a command byte to the slave device.
Definition adm1177.c:139
int adm1177_init(struct adm1177_dev **device, struct adm1177_init_param *init_param)
Initializes I2C.
Definition adm1177.c:50
int adm1177_set_vrange(struct adm1177_dev *device, uint8_t vrange)
Sets the vrange off the ADM1177.
Definition adm1177.c:100
int adm1177_to_microvolts(struct adm1177_dev *device, uint16_t raw_sample, uint64_t *voltage_uv)
Converts the raw sample from the Readback into uV.
Definition adm1177.c:295
adm1177_vrange
Definition adm1177.h:92
@ ADM1177_VRANGE_HIGH
Definition adm1177.h:94
@ ADM1177_VRANGE_LOW
Definition adm1177.h:93
int adm1177_read_status(struct adm1177_dev *device, uint8_t *status_byte)
Reads the status byte from the ADC if requested and transmits it through the status_byte pointer.
Definition adm1177.c:173
int adm1177_remove(struct adm1177_dev *device)
Free the resources allocated by adm1177_init().
Definition adm1177.c:79
Header file of I2C Interface.
Header file of Units.
Header file of utility functions.
Definition adm1177.h:97
enum adm1177_last_command last_command
Definition adm1177.h:99
struct no_os_i2c_desc * i2c_desc
Definition adm1177.h:98
enum adm1177_vrange vrange
Definition adm1177.h:100
Definition adm1177.h:103
struct no_os_i2c_init_param i2c_init
Definition adm1177.h:104
Definition ad9361_util.h:63
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52