• 大小: 13KB
    文件类型: .c
    金币: 2
    下载: 1 次
    发布日期: 2021-04-07
  • 语言: 其他
  • 标签: cw2015_batte  

资源简介

发现网上找不到 cw2015 电池检测的源代码,现在补充出来。

资源截图

代码片段和文件信息

/*
 *  cw2015_battery.c
 *  fuel-gauge systems for lithium-ion (Li+) batteries
 *
 *  Copyright (C) 2009 Samsung Electronics
 *  Minkyu Kang 
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define REG_VERSION             0x0
#define REG_VCELL               0x2
#define REG_SOC                 0x4
#define REG_RRT_ALERT           0x6
#define REG_CONFIG              0x8
#define REG_MODE                0xA
#define REG_BATINFO             0x10

#define MODE_SLEEP_MASK         (0x3<<6)
#define MODE_SLEEP              (0x3<<6)
#define MODE_NORMAL             (0x0<<6)
#define MODE_QUICK_START        (0x3<<4)
#define MODE_RESTART            (0xf<<0)

#define CONFIG_UPDATE_FLG       (0x1<<1)
#define ATHD                    (0x0<<3)        //ATHD = 0%

#define cw2015_DELAY 1000
#define cw2015_BATTERY_FULL 95


static void cw2015_reset(struct i2c_client *client);
static void cw2015_quick_start(struct i2c_client *client);

struct cw2015_chip {
struct i2c_client *client;
struct delayed_work  work;
struct power_supply  battery;
struct cw_bat_platform_data *plat_data;

/* State Of Connect */
int online;
/* battery voltage */
int vcell;
/* battery capacity */
int soc;
/* State Of Charge */
int status;
};

static int cw2015_get_property(struct power_supply *psy
    enum power_supply_property psp
    union power_supply_propval *val)
{
struct cw2015_chip *chip = container_of(psy
struct cw2015_chip battery);

switch (psp) {
case POWER_SUPPLY_PROP_STATUS:
val->intval = chip->status;
break;
case POWER_SUPPLY_PROP_ONLINE:
val->intval = chip->online;
break;
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
val->intval = chip->vcell;
break;
case POWER_SUPPLY_PROP_CAPACITY:
val->intval = chip->soc;
break;
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
cw2015_reset(chip->client);
break;
case POWER_SUPPLY_PROP_VOLTAGE_MIN:
cw2015_quick_start(chip->client);
break;
default:
return -EINVAL;
}
return 0;
}

static int cw_read(struct i2c_client *client u8 reg u8 buf[])
{
unsigned char data;
int ret;

data = (unsigned char)reg;
ret = i2c_master_send(client &data 1);
if (ret < 0)return ret;

ret = i2c_master_recv(client buf 1);
if (ret < 0)return ret;

return 0;
}

static int cw_write(struct i2c_client *client u8 reg u8 const buf[])
{
u8 data[3];

data[0] = reg;
data[1] = buf[0];

return i2c_master_send(client data 2);
}

static int cw_read_word(struct i

评论

共有 条评论

相关资源