~aleteoryx/muditaos

ref: a0677af340a1fec8e8652b64fb97ca7f0902de12 muditaos/module-bsp/board/rt1051/bellpx/bsp/fuel_gauge/CW2015CHBD.hpp -rw-r--r-- 2.1 KiB
a0677af3 — Marek Niepieklo [CP-615] Update existing backup/restore implementation in OS 4 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once

namespace bsp::fuel_gauge
{

    constexpr inline auto FUEL_GAUGE_I2C_ADDR = 0x62;
    constexpr inline auto BATTERY_INFO_SIZE   = 64;

    enum class Registers
    {
        VERSION    = 0x00,
        VCELL_H    = 0x02,
        VCELL_L    = 0x03,
        SOC_H      = 0x04,
        SOC_L      = 0x05,
        RRT_ALRT_H = 0x06,
        RRT_ALRT_L = 0x07,
        CONFIG     = 0x08,
        MODE       = 0x0A,
        BATINFO    = 0x10
    };

    enum class VCELL
    {
        mask  = 0x3FFF, // battery voltage. 305uV resolution
        shift = 0
    };

    enum class SOC
    {
        mask  = 0xFFFF, // MSB - remaining charge in %. LSB Precise value - each bit is 1/256%
        shift = 0
    };

    enum class RRT_ALRT
    {
        mask  = 0x1FFF, // remaining battery time value. 1 minute per LSB accuracy
        shift = 0,
        nALRT = (1 << 15) // Alert flag. Active low
    };

    enum class CONFIG
    {
        mask  = 0xF8, // low level threshold (0% - 31%)
        shift = 3,
        UFG   = (1 << 1) // battery information update state
    };

    enum class MODE
    {
        Sleep_mask = (0x3 << 6),
        Sleep      = (0x03 << 6), // write 11b to force sleep mode
        NORMAL     = (0x00 << 6), // write 00b to force normal mode
        QSTRT      = (0x03 << 4), // write 11b to enter QSTRT mode
        POR        = 0x0F         // write 1111b to restart IC
    };

    /* got from ODM init code */
    constexpr uint8_t battery_info_config_info[BATTERY_INFO_SIZE] = {
        0x15, 0x7E, 0x80, 0x6E, 0x68, 0x64, 0x61, 0x62, 0x61, 0x5F, 0x5A, 0x56, 0x53, 0x51, 0x4F, 0x3B,
        0x2E, 0x27, 0x24, 0x24, 0x29, 0x36, 0x4C, 0x5E, 0x5E, 0x49, 0x0A, 0x3E, 0x19, 0x32, 0x44, 0x4D,
        0x4F, 0x4F, 0x52, 0x52, 0x39, 0x0E, 0x92, 0x15, 0x07, 0x15, 0x52, 0x7E, 0x8D, 0x8E, 0x8E, 0x42,
        0x60, 0x84, 0x95, 0xA5, 0x80, 0x76, 0xBD, 0xCB, 0x2F, 0x00, 0x64, 0xA5, 0xB5, 0x11, 0xB0, 0x29};

} // namespace bsp::fuel_gauge