165 #define LTC2946_I2C_ADDRESS 0x6F // Low Low 167 #define LTC2946_I2C_MASS_WRITE 0xCC 168 #define LTC2946_I2C_ALERT_RESPONSE 0x19 251 #define LTC2946_CTRLA_REG 0x00 252 #define LTC2946_CTRLB_REG 0x01 253 #define LTC2946_ALERT1_REG 0x02 254 #define LTC2946_STATUS1_REG 0x03 255 #define LTC2946_FAULT1_REG 0x04 257 #define LTC2946_POWER_MSB2_REG 0x05 258 #define LTC2946_POWER_MSB1_REG 0x06 259 #define LTC2946_POWER_LSB_REG 0x07 260 #define LTC2946_MAX_POWER_MSB2_REG 0x08 261 #define LTC2946_MAX_POWER_MSB1_REG 0x09 262 #define LTC2946_MAX_POWER_LSB_REG 0x0A 263 #define LTC2946_MIN_POWER_MSB2_REG 0x0B 264 #define LTC2946_MIN_POWER_MSB1_REG 0x0C 265 #define LTC2946_MIN_POWER_LSB_REG 0x0D 266 #define LTC2946_MAX_POWER_THRESHOLD_MSB2_REG 0x0E 267 #define LTC2946_MAX_POWER_THRESHOLD_MSB1_REG 0x0F 268 #define LTC2946_MAX_POWER_THRESHOLD_LSB_REG 0x10 269 #define LTC2946_MIN_POWER_THRESHOLD_MSB2_REG 0x11 270 #define LTC2946_MIN_POWER_THRESHOLD_MSB1_REG 0x12 271 #define LTC2946_MIN_POWER_THRESHOLD_LSB_REG 0x13 273 #define LTC2946_DELTA_SENSE_MSB_REG 0x14 274 #define LTC2946_DELTA_SENSE_LSB_REG 0x15 275 #define LTC2946_MAX_DELTA_SENSE_MSB_REG 0x16 276 #define LTC2946_MAX_DELTA_SENSE_LSB_REG 0x17 277 #define LTC2946_MIN_DELTA_SENSE_MSB_REG 0x18 278 #define LTC2946_MIN_DELTA_SENSE_LSB_REG 0x19 279 #define LTC2946_MAX_DELTA_SENSE_THRESHOLD_MSB_REG 0x1A 280 #define LTC2946_MAX_DELTA_SENSE_THRESHOLD_LSB_REG 0x1B 281 #define LTC2946_MIN_DELTA_SENSE_THRESHOLD_MSB_REG 0x1C 282 #define LTC2946_MIN_DELTA_SENSE_THRESHOLD_LSB_REG 0x1D 284 #define LTC2946_VIN_MSB_REG 0x1E 285 #define LTC2946_VIN_LSB_REG 0x1F 286 #define LTC2946_MAX_VIN_MSB_REG 0x20 287 #define LTC2946_MAX_VIN_LSB_REG 0x21 288 #define LTC2946_MIN_VIN_MSB_REG 0x22 289 #define LTC2946_MIN_VIN_LSB_REG 0x23 290 #define LTC2946_MAX_VIN_THRESHOLD_MSB_REG 0x24 291 #define LTC2946_MAX_VIN_THRESHOLD_LSB_REG 0x25 292 #define LTC2946_MIN_VIN_THRESHOLD_MSB_REG 0x26 293 #define LTC2946_MIN_VIN_THRESHOLD_LSB_REG 0x27 295 #define LTC2946_ADIN_MSB_REG 0x28 296 #define LTC2946_ADIN_LSB_REG_REG 0x29 297 #define LTC2946_MAX_ADIN_MSB_REG 0x2A 298 #define LTC2946_MAX_ADIN_LSB_REG 0x2B 299 #define LTC2946_MIN_ADIN_MSB_REG 0x2C 300 #define LTC2946_MIN_ADIN_LSB_REG 0x2D 301 #define LTC2946_MAX_ADIN_THRESHOLD_MSB_REG 0x2E 302 #define LTC2946_MAX_ADIN_THRESHOLD_LSB_REG 0x2F 303 #define LTC2946_MIN_ADIN_THRESHOLD_MSB_REG 0x30 304 #define LTC2946_MIN_ADIN_THRESHOLD_LSB_REG 0x31 306 #define LTC2946_ALERT2_REG 0x32 307 #define LTC2946_GPIO_CFG_REG 0x33 309 #define LTC2946_TIME_COUNTER_MSB3_REG 0x34 310 #define LTC2946_TIME_COUNTER_MSB2_REG 0x35 311 #define LTC2946_TIME_COUNTER_MSB1_REG 0x36 312 #define LTC2946_TIME_COUNTER_LSB_REG 0x37 314 #define LTC2946_CHARGE_MSB3_REG 0x38 315 #define LTC2946_CHARGE_MSB2_REG 0x39 316 #define LTC2946_CHARGE_MSB1_REG 0x3A 317 #define LTC2946_CHARGE_LSB_REG 0x3B 319 #define LTC2946_ENERGY_MSB3_REG 0x3C 320 #define LTC2946_ENERGY_MSB2_REG 0x3D 321 #define LTC2946_ENERGY_MSB1_REG 0x3E 322 #define LTC2946_ENERGY_LSB_REG 0x3F 324 #define LTC2946_STATUS2_REG 0x40 325 #define LTC2946_FAULT2_REG 0x41 326 #define LTC2946_GPIO3_CTRL_REG 0x42 327 #define LTC2946_CLK_DIV_REG 0x43 343 #define LTC2946_DELTA_SENSE 0x00 344 #define LTC2946_VDD 0x08 345 #define LTC2946_ADIN 0x10 346 #define LTC2946_SENSE_PLUS 0x18 440 #define LTC2946_ADIN_INTVCC 0x80 441 #define LTC2946_ADIN_GND 0x00 443 #define LTC2946_OFFSET_CAL_LAST 0x60 444 #define LTC2946_OFFSET_CAL_128 0x40 445 #define LTC2946_OFFSET_CAL_16 0x20 446 #define LTC2946_OFFSET_CAL_EVERY 0x00 448 #define LTC2946_CHANNEL_CONFIG_SNAPSHOT 0x07 449 #define LTC2946_CHANNEL_CONFIG_V_C 0x06 450 #define LTC2946_CHANNEL_CONFIG_A_V_C_1 0x05 451 #define LTC2946_CHANNEL_CONFIG_A_V_C_2 0x04 452 #define LTC2946_CHANNEL_CONFIG_A_V_C_3 0x03 453 #define LTC2946_CHANNEL_CONFIG_V_C_1 0x02 454 #define LTC2946_CHANNEL_CONFIG_V_C_2 0x01 455 #define LTC2946_CHANNEL_CONFIG_V_C_3 0x00 458 #define LTC2946_ENABLE_ALERT_CLEAR 0x80 459 #define LTC2946_ENABLE_SHUTDOWN 0x40 460 #define LTC2946_ENABLE_CLEARED_ON_READ 0x20 461 #define LTC2946_ENABLE_STUCK_BUS_RECOVER 0x10 463 #define LTC2946_DISABLE_ALERT_CLEAR 0x7F 464 #define LTC2946_DISABLE_SHUTDOWN 0xBF 465 #define LTC2946_DISABLE_CLEARED_ON_READ 0xDF 466 #define LTC2946_DISABLE_STUCK_BUS_RECOVER 0xEF 468 #define LTC2946_ACC_PIN_CONTROL 0x08 469 #define LTC2946_DISABLE_ACC 0x04 470 #define LTC2946_ENABLE_ACC 0x00 472 #define LTC2946_RESET_ALL 0x03 473 #define LTC2946_RESET_ACC 0x02 474 #define LTC2946_ENABLE_AUTO_RESET 0x01 475 #define LTC2946_DISABLE_AUTO_RESET 0x00 478 #define LTC2946_MAX_POWER_MSB2_RESET 0x00 479 #define LTC2946_MIN_POWER_MSB2_RESET 0xFF 480 #define LTC2946_MAX_DELTA_SENSE_MSB_RESET 0x00 481 #define LTC2946_MIN_DELTA_SENSE_MSB_RESET 0xFF 482 #define LTC2946_MAX_VIN_MSB_RESET 0x00 483 #define LTC2946_MIN_VIN_MSB_RESET 0xFF 484 #define LTC2946_MAX_ADIN_MSB_RESET 0x00 485 #define LTC2946_MIN_ADIN_MSB_RESET 0xFF 487 #define LTC2946_ENABLE_MAX_POWER_ALERT 0x80 488 #define LTC2946_ENABLE_MIN_POWER_ALERT 0x40 489 #define LTC2946_DISABLE_MAX_POWER_ALERT 0x7F 490 #define LTC2946_DISABLE_MIN_POWER_ALERT 0xBF 492 #define LTC2946_ENABLE_MAX_I_SENSE_ALERT 0x20 493 #define LTC2946_ENABLE_MIN_I_SENSE_ALERT 0x10 494 #define LTC2946_DISABLE_MAX_I_SENSE_ALERT 0xDF 495 #define LTC2946_DISABLE_MIN_I_SENSE_ALERT 0xEF 497 #define LTC2946_ENABLE_MAX_VIN_ALERT 0x08 498 #define LTC2946_ENABLE_MIN_VIN_ALERT 0x04 499 #define LTC2946_DISABLE_MAX_VIN_ALERT 0xF7 500 #define LTC2946_DISABLE_MIN_VIN_ALERT 0xFB 502 #define LTC2946_ENABLE_MAX_ADIN_ALERT 0x02 503 #define LTC2946_ENABLE_MIN_ADIN_ALERT 0x01 504 #define LTC2946_DISABLE_MAX_ADIN_ALERT 0xFD 505 #define LTC2946_DISABLE_MIN_ADIN_ALERT 0xFE 507 #define LTC2946_ENABLE_ADC_DONE_ALERT 0x80 508 #define LTC2946_DISABLE_ADC_DONE_ALERT 0x7F 510 #define LTC2946_ENABLE_GPIO_1_ALERT 0x40 511 #define LTC2946_DISABLE_GPIO_1_ALERT 0xBF 513 #define LTC2946_ENABLE_GPIO_2_ALERT 0x20 514 #define LTC2946_DISABLE_GPIO_2_ALERT 0xDF 516 #define LTC2946_ENABLE_STUCK_BUS_WAKE_ALERT 0x08 517 #define LTC2946_DISABLE_STUCK_BUS_WAKE_ALERT 0xF7 519 #define LTC2946_ENABLE_ENERGY_OVERFLOW_ALERT 0x04 520 #define LTC2946_DISABLE_ENERGY_OVERFLOW_ALERT 0xFB 522 #define LTC2946_ENABLE_CHARGE_OVERFLOW_ALERT 0x02 523 #define LTC2946_DISABLE_CHARGE_OVERFLOW_ALERT 0xFD 525 #define LTC2946_ENABLE_COUNTER_OVERFLOW_ALERT 0x01 526 #define LTC2946_DISABLE_COUNTER_OVERFLOW_ALERT 0xFE 528 #define LTC2946_GPIO1_IN_ACTIVE_HIGH 0xC0 529 #define LTC2946_GPIO1_IN_ACTIVE_LOW 0x80 530 #define LTC2946_GPIO1_OUT_HIGH_Z 0x40 531 #define LTC2946_GPIO1_OUT_LOW 0x00 533 #define LTC2946_GPIO2_IN_ACTIVE_HIGH 0x30 534 #define LTC2946_GPIO2_IN_ACTIVE_LOW 0x20 535 #define LTC2946_GPIO2_OUT_HIGH_Z 0x10 536 #define LTC2946_GPIO2_OUT_LOW 0x12 537 #define LTC2946_GPIO2_IN_ACC 0x00 540 #define LTC2946_GPIO3_IN_ACTIVE_HIGH 0x0C 541 #define LTC2946_GPIO3_IN_ACTIVE_LOW 0x08 542 #define LTC2946_GPIO3_OUT_REG_42 0x04 543 #define LTC2946_GPIO3_OUT_ALERT 0x00 544 #define LTC2946_GPIO3_OUT_LOW 0x40 545 #define LTC2946_GPIO3_OUT_HIGH_Z 0x00 546 #define LTC2946_GPIO_ALERT_CLEAR 0x00 570 #define LTC2946_CTRLA_ADIN_MASK 0x7F 571 #define LTC2946_CTRLA_OFFSET_MASK 0x9F 572 #define LTC2946_CTRLA_VOLTAGE_SEL_MASK 0xE7 573 #define LTC2946_CTRLA_CHANNEL_CONFIG_MASK 0xF8 574 #define LTC2946_CTRLB_ACC_MASK 0xF3 575 #define LTC2946_CTRLB_RESET_MASK 0xFC 576 #define LTC2946_GPIOCFG_GPIO1_MASK 0x3F 577 #define LTC2946_GPIOCFG_GPIO2_MASK 0xCF 578 #define LTC2946_GPIOCFG_GPIO3_MASK 0xF3 579 #define LTC2946_GPIOCFG_GPIO2_OUT_MASK 0xFD 580 #define LTC2946_GPIO3_CTRL_GPIO3_MASK 0xBF 676 float LTC2946_Time_lsb
681 float LTC2946_Time_lsb
static uint8_t adc_command
int8_t LTC2946_read(uint8_t i2c_address, uint8_t adc_command, uint8_t *adc_code)
Reads an 8-bit adc_code from LTC2946.
const float LTC2946_ADIN_lsb
Typical ADIN lsb weight in volts.
const float resistor
resistor value on demo board
int8_t LTC2946_write_24_bits(uint8_t i2c_address, uint8_t adc_command, uint32_t code)
Write a 24-bit code to the LTC2946.
const float LTC2946_VIN_lsb
Typical VIN lsb weight in volts.
int8_t LTC2946_write_32_bits(uint8_t i2c_address, uint8_t adc_command, uint32_t code)
Write a 32-bit code to the LTC2946.
float LTC2946_code_to_current(uint16_t adc_code, float resistor, float LTC2946_DELTA_SENSE_lsb)
Calculate the LTC2946 current with a sense resistor.
static float LTC2946_TIME_lsb
Static variable which is based off of the default clk frequency of 250KHz.
float LTC2946_code_to_power(int32_t adc_code, float resistor, float LTC2946_Power_lsb)
Calculate the LTC2946 power.
float LTC2946_code_to_energy(int32_t adc_code, float resistor, float LTC2946_Power_lsb, float LTC2946_TIME_lsb)
Calculate the LTC2946 energy.
int8_t LTC2946_write(uint8_t i2c_address, uint8_t adc_command, uint8_t code)
Write an 8-bit code to the LTC2946.
float LTC2946_code_to_coulombs(int32_t adc_code, float resistor, float LTC2946_DELTA_SENSE_lsb, float LTC2946_Time_lsb)
Calculate the LTC2946 coulombs.
int8_t LTC2946_read_12_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t *adc_code)
Reads a 12-bit adc_code from LTC2946.
float LTC2946_code_to_time(float time_code, float LTC2946_Time_lsb)
Calculate the LTC2946 internal time base.
int8_t LTC2946_read_16_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t *adc_code)
Reads a 16-bit adc_code from LTC2946.
int8_t LTC2946_write_16_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t code)
Write a 16-bit code to the LTC2946.
float LTC2946_ADIN_code_to_voltage(uint16_t adc_code, float LTC2946_ADIN_lsb)
Calculate the LTC2946 ADIN voltage.
const float LTC2946_Power_lsb
Typical POWER lsb weight in V^2 VIN_lsb * DELTA_SENSE_lsb.
int8_t LTC2946_read_24_bits(uint8_t i2c_address, uint8_t adc_command, uint32_t *adc_code)
Reads a 24-bit adc_code from LTC2946.
int8_t LTC2946_read_32_bits(uint8_t i2c_address, uint8_t adc_command, uint32_t *adc_code)
Reads a 32-bit adc_code from LTC2946.
float LTC2946_VIN_code_to_voltage(uint16_t adc_code, float LTC2946_VIN_lsb)
Calculate the LTC2946 VIN voltage.
const float LTC2946_DELTA_SENSE_lsb
Typical Delta lsb weight in volts.