Files
EmbeddedESP/main/hw/ina260.h
2025-04-15 16:32:28 +02:00

75 lines
2.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef INA260_COMPONENT
#define INA260_COMPONENT
#include "i2cbrn.h"
#define TAG_INA "INA260"
extern i2c_device_config_t INA260_DEV_CFG;
extern i2c_master_dev_handle_t INA260_DEV_HANDLE;
#define INA260_CONFIG_REGISTER (0x00)
#define INA260_CURRENT_REGISTER (0x01)
#define INA260_VOLTAGE_REGISTER (0x02)
#define INA260_POWER_REGISTER (0x03)
#define INA260_MASK_ENABLE_REGISTER (0x06)
#define INA260_ALERT_LIMIT_REGISTER (0x07)
#define INA260_MANUFACTURER_ID_REGISTER (0xFE)
#define INA260_DIE_ID_REGISTER (0xFF)
// Bit masks
#define CONFIG_RST_BIT (1 << 15)
#define CONFIG_AVG_MASK (0x7 << 9)
#define CONFIG_VBUSCT_MASK (0x7 << 6)
#define CONFIG_ISHCT_MASK (0x7 << 3)
#define CONFIG_MODE_MASK (0x7 << 0)
// Read-only bits
#define CONFIG_RESERVED_BITS (0x7 << 12) // Bits 1412 = 110b
// Averaging modes (AVG)
#define CONFIG_AVG_1 (0x0 << 9)
#define CONFIG_AVG_4 (0x1 << 9)
#define CONFIG_AVG_16 (0x2 << 9)
#define CONFIG_AVG_64 (0x3 << 9)
#define CONFIG_AVG_128 (0x4 << 9)
#define CONFIG_AVG_256 (0x5 << 9)
#define CONFIG_AVG_512 (0x6 << 9)
#define CONFIG_AVG_1024 (0x7 << 9)
// Bus voltage conversion time (VBUSCT)
#define CONFIG_VBUSCT_140US (0x0 << 6)
#define CONFIG_VBUSCT_204US (0x1 << 6)
#define CONFIG_VBUSCT_332US (0x2 << 6)
#define CONFIG_VBUSCT_588US (0x3 << 6)
#define CONFIG_VBUSCT_1_1MS (0x4 << 6)
#define CONFIG_VBUSCT_2_116MS (0x5 << 6)
#define CONFIG_VBUSCT_4_156MS (0x6 << 6)
#define CONFIG_VBUSCT_8_244MS (0x7 << 6)
// Shunt current conversion time (ISHCT)
#define CONFIG_ISHCT_140US (0x0 << 3)
#define CONFIG_ISHCT_204US (0x1 << 3)
#define CONFIG_ISHCT_332US (0x2 << 3)
#define CONFIG_ISHCT_588US (0x3 << 3)
#define CONFIG_ISHCT_1_1MS (0x4 << 3)
#define CONFIG_ISHCT_2_116MS (0x5 << 3)
#define CONFIG_ISHCT_4_156MS (0x6 << 3)
#define CONFIG_ISHCT_8_244MS (0x7 << 3)
// Operating mode (MODE)
#define CONFIG_MODE_POWERDOWN (0x0 << 0)
#define CONFIG_MODE_CURRENT_TRIGGER (0x1 << 0)
#define CONFIG_MODE_VOLTAGE_TRIGGER (0x2 << 0)
#define CONFIG_MODE_CURRENT_VOLTAGE_TRIGGER (0x3 << 0)
#define CONFIG_MODE_POWERDOWN2 (0x4 << 0)
#define CONFIG_MODE_POWERDOWN (0x5 << 0)
#define CONFIG_MODE_POWERDOWN (0x6 << 0)
#define CONFIG_MODE_POWERDOWN (0x7 << 0)
void ina260_init();
void ina260_readParams(uint16_t *volt, uint16_t *cur, uint16_t *pow);
void ina260_printParams(uint16_t volt, uint16_t cur, uint16_t pow);
#endif