LTC2944库仑计(电量计)芯片应用笔记(Arduino,ESP32)_钛酸锂库仑计(1)

但是这个程序是Linduino平台的,这个东东咱也没用过,但是源码还是可以参考下的。

下面我们把链接上的LTC2944.h和LTC2944.cpp下载下来进行改造。

详细的改造过程省略了,对改造过程感兴趣的可以对比下下面代码和原来的代码之间的差异。

主要改造4个函数:

int8_t LTC2944_write(uint8_t i2c_address, uint8_t adc_command, uint8_t code);
    int8_t  LTC2944_write_16_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t code);
    int8_t  LTC2944_read(uint8_t i2c_address, uint8_t adc_command, uint8_t *adc_code);
    int8_t  LTC2944_read_16_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t *adc_code)

这4个函数是对总线的操作,改造内容是把I2C的操作方法改成Wire方法,其他函数基本都是内部计算函数,不用改造。其他的改造内容都是为了方便使用而改造的,包括增加一些操作函数。

直接给出改造后的源码如下。

LTC2944.h

#ifndef LTC2944_h
#define LTC2944_h
 
#include "Arduino.h"
#include "Wire.h"


#define I2C_ADDRESS_LTC2944 0x64
//#define I2C_ADDR_LTC2944 144

//Registers
#define LTC2944_STATUS_REG                          0x00
#define LTC2944_CONTROL_REG                         0x01
#define LTC2944_ACCUM_CHARGE_MSB_REG                0x02
#define LTC2944_ACCUM_CHARGE_LSB_REG                0x03
#define LTC2944_CHARGE_THRESH_HIGH_MSB_REG          0x04
#define LTC2944_CHARGE_THRESH_HIGH_LSB_REG          0x05
#define LTC2944_CHARGE_THRESH_LOW_MSB_REG           0x06
#define LTC2944_CHARGE_THRESH_LOW_LSB_REG           0x07
#define LTC2944_VOLTAGE_MSB_REG                     0x08
#define LTC2944_VOLTAGE_LSB_REG                     0x09
#define LTC2944_VOLTAGE_THRESH_HIGH_MSB_REG         0x0A
#define LTC2944_VOLTAGE_THRESH_HIGH_LSB_REG         0x0B
#define LTC2944_VOLTAGE_THRESH_LOW_MSB_REG          0x0C
#define LTC2944_VOLTAGE_THRESH_LOW_LSB_REG          0x0D
#define LTC2944_CURRENT_MSB_REG                     0x0E
#define LTC2944_CURRENT_LSB_REG                     0x0F
#define LTC2944_CURRENT_THRESH_HIGH_MSB_REG         0x10
#define LTC2944_CURRENT_THRESH_HIGH_LSB_REG         0x11
#define LTC2944_CURRENT_THRESH_LOW_MSB_REG          0x12
#define LTC2944_CURRENT_THRESH_LOW_LSB_REG          0x13
#define LTC2944_TEMPERATURE_MSB_REG                 0x14
#define LTC2944_TEMPERATURE_LSB_REG                 0x15
#define LTC2944_TEMPERATURE_THRESH_HIGH_REG         0x16
#define LTC2944_TEMPERATURE_THRESH_LOW_REG          0x17

// Command Codes
#define LTC2944_AUTOMATIC_MODE                      0xC0
#define LTC2944_SCAN_MODE                           0x80
#define LTC2944_MANUAL_MODE                         0x40
#define LTC2944_SLEEP_MODE                          0x00
#define LTC2944_PRESCALAR_M_1                       0x00
#define LTC2944_PRESCALAR_M_4                       0x08
#define LTC2944_PRESCALAR_M_16                      0x10
#define LTC2944_PRESCALAR_M_64                      0x18
#define LTC2944_PRESCALAR_M_256                     0x20
#define LTC2944_PRESCALAR_M_1024                    0x28
#define LTC2944_PRESCALAR_M_4096                    0x30
#define LTC2944_PRESCALAR_M_4096_2                  0x31
#define LTC2944_ALERT_MODE                          0x04
#define LTC2944_CHARGE_COMPLETE_MODE                0x02
#define LTC2944_DISABLE_ALCC_PIN                    0x00
#define LTC2944_SHUTDOWN_MODE                       0x01
#define LTC2944_SHUTDOWN_MODE_UNDO                  0x00




class I2CLTC2944
{
  public:
    I2CLTC2944(TwoWire * ptrI2CBus)
    {
      _ptrI2CBus=ptrI2CBus;
    }

    int8_t  LTC2944_write(uint8_t i2c_address, uint8_t adc_command, uint8_t code);
    int8_t  LTC2944_write_16_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t code);
    int8_t  LTC2944_read(uint8_t i2c_address, uint8_t adc_command, uint8_t *adc_code);
    int8_t  LTC2944_read_16_bits(uint8_t i2c_address, uint8_t adc_command, uint16_t *adc_code);
    float   LTC2944_code_to_coulomb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值