资源简介
用软件IIC对BQ25895的寄存器的配置,可直接使用
代码片段和文件信息
#include “bq2589x_reg.h“
#include “i2c.h“
#define BQ2589X_ADDR 0xD4
static unsigned char bq2589x_status;
int bq2589x_write_byte(unsigned char regunsigned char Data)
{
return i2c_write_byte(BQ2589X_ADDRregData);
}
int bq2589x_read_byte(unsigned char reg unsigned char *Data)
{
return i2c_read_byte(BQ2589X_ADDRregData);
}
static int bq2589x_update_bits(unsigned char reg unsigned char mask unsigned char Data)
{
int ret;
unsigned char tmp;
ret = bq2589x_read_byte(reg&tmp);
if (ret)
return ret;
tmp &= ~mask;
tmp |= Data & mask;
return bq2589x_write_byte(reg tmp);
}
int bq2589x_read_bat_volt()
{
unsigned char val;
int volt;
int ret;
ret = bq2589x_read_byte(BQ2589X_REG_0E&val);
if(ret > 0){
return ret;
}
else{
volt = BQ2589X_BATV_base + ((val & BQ2589X_BATV_MASK) >> BQ2589X_BATV_SHIFT) * BQ2589X_BATV_LSB ;
return volt;
}
}
int bq2589x_adc_start(char oneshot)
{
unsigned char val;
int ret;
ret = bq2589x_read_byte(BQ2589X_REG_02&val);
if(ret > 0)
return ret;
if(((val & BQ2589X_CONV_RATE_MASK) >> BQ2589X_CONV_RATE_SHIFT) == BQ2589X_ADC_CONTINUE_ENABLE)
return 0; //is doing continuous scan
if(oneshot)
ret = bq2589x_update_bits(BQ2589X_REG_02BQ2589X_CONV_START_MASK BQ2589X_CONV_START << BQ2589X_CONV_START_SHIFT);
else
ret = bq2589x_update_bits(BQ2589X_REG_02BQ2589X_CONV_RATE_MASK BQ2589X_ADC_CONTINUE_ENABLE << BQ2589X_CONV_RATE_SHIFT);
return ret;
}
int bq2589x_set_chargecurrent(int curr)
{
unsigned char ichg;
ichg = (curr - BQ2589X_ICHG_base)/BQ2589X_ICHG_LSB;
return bq2589x_update_bits(BQ2589X_REG_04BQ2589X_ICHG_MASK ichg << BQ2589X_ICHG_SHIFT);
}
int bq2589x_set_chargevoltage(int volt)
{
unsigned char val;
val = (volt - BQ2589X_VREG_base)/BQ2589X_VREG_LSB;
return bq2589x_update_bits(BQ2589X_REG_06BQ2589X_VREG_MASK val << BQ2589X_VREG_SHIFT);
}
int bq2589x_set_term_current(int curr)
{
unsigned char iterm;
iterm = (curr - BQ2589X_ITERM_base) / BQ2589X_ITERM_LSB;
return bq2589x_update_bits(BQ2589X_REG_05BQ2589X_ITERM_MASK iterm << BQ2589X_ITERM_SHIFT);
}
int bq2589x_set_input_volt_limit(int volt)
{
unsigned char val;
val = (volt - BQ2589X_VINDPM_base)/BQ2589X_VINDPM_LSB;
return bq2589x_update_bits(BQ2589X_REG_0DBQ2589X_VINDPM_MASK val << BQ2589X_VINDPM_SHIFT);
}
int bq2589x_set_input_current_limit(int curr)
{
unsigned char val;
val = (curr - BQ2589X_IINLIM_base)/BQ2589X_IINLIM_LSB;
return bq2589x_update_bits(BQ2589X_REG_00BQ2589X_IINLIM_MASK val << BQ2589X_IINLIM_SHIFT);
}
int bq2589x_set_vindpm_offset(int offset)
{
unsigned char val;
val = (offset - BQ2589X_VINDPMOS_base)/BQ2589X_VINDPMOS_LSB;
return bq2589x_update_bits(BQ2589X_REG_01BQ2589X_VINDPMOS_MASK val << BQ2589X_VINDPMOS_SHIFT);
}
void bq2589x_enable_charge()
{
unsigned char val = BQ2589X_CHG_EN
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 127 2016-04-27 17:31 BQ - 副本\2.txt
文件 40311 2016-05-03 13:41 BQ - 副本\BQ
文件 3030 2016-05-03 13:41 BQ - 副本\BQ.hex
文件 94 2016-05-03 13:41 BQ - 副本\BQ.lnp
文件 29842 2016-05-03 13:41 BQ - 副本\BQ.M51
文件 157 2016-05-18 16:21 BQ - 副本\BQ.plg
....... 60275 2016-05-18 16:21 BQ - 副本\BQ.uvopt
文件 13912 2016-04-26 22:58 BQ - 副本\BQ.uvproj
文件 3976 2016-04-27 11:16 BQ - 副本\BQ2589x.c
文件 668 2016-04-27 11:16 BQ - 副本\BQ2589x.h
文件 7891 2016-05-03 13:41 BQ - 副本\BQ2589x.LST
文件 31069 2016-05-03 13:41 BQ - 副本\BQ2589x.OBJ
文件 11740 2016-04-26 16:37 BQ - 副本\BQ2589x_reg.h
....... 60277 2016-05-03 17:16 BQ - 副本\BQ_uvopt.bak
文件 13744 2016-04-26 16:52 BQ - 副本\BQ_uvproj.bak
文件 639 2016-04-27 09:00 BQ - 副本\delay.c
文件 146 2016-04-27 09:00 BQ - 副本\delay.h
文件 1929 2016-05-03 13:41 BQ - 副本\delay.LST
文件 1924 2016-05-03 13:41 BQ - 副本\delay.OBJ
文件 5090 2016-04-26 21:49 BQ - 副本\i2c - 副本.c
文件 1886 2016-04-27 10:31 BQ - 副本\i2c.c
文件 202 2016-04-26 22:53 BQ - 副本\i2c.h
文件 4757 2016-05-03 13:41 BQ - 副本\i2c.LST
文件 4691 2016-05-03 13:41 BQ - 副本\i2c.OBJ
文件 1138 2016-05-03 13:41 BQ - 副本\main.c
文件 3224 2016-05-03 13:41 BQ - 副本\main.LST
文件 4425 2016-05-03 13:41 BQ - 副本\main.OBJ
文件 121 2016-04-26 16:10 BQ - 副本\reg.txt
文件 1079 2016-04-18 11:46 BQ - 副本\Uart1.c
文件 123 2016-04-18 11:50 BQ - 副本\Uart1.h
............此处省略16个文件信息
相关资源
- 三轴陀螺仪MPU6050基于STM32F103的IIC驱动
- SL3S4011 IIC 驱动程序
- STM8控制IIC OLED屏幕
- stm32F103通过IIC读取MPU9250用DMP融合得到
- Zabbix CIICSO3750 监控模板
- stm32cubemx软件iic读取mpu6050dmp通过串口
- OLED0.91模组12832 IIC全套显示函数解决差
- NIOS II自定义IIC IP核
- AVR 模拟IIC总线
- pic io口模拟iic的mcp7940代码
- 基于STM32的 ADXL345三轴测量角度 软件
- linux下使用IIC总线读写EEPROM
- arduino_LiquidCrystal_I2C库及proteus仿真LC
- 用stm32以软件IIC方式驱动1602 解压密码
- STM32 IIC软件模拟读写24C02
- RTC 8025T IIC驱动代码
- stm32 完整IIC通讯代码,三轴加速度计
- STM32F4读写SD2405实时时钟程序
- PIC单片机 IIC通信 proteus仿真文件图
- CC2530-ADXL345 IIC通信
- CC2530-HMC5883L通过I2C通信
- i2c的verilog实现
- STM32+SHT30(DS18B20)+0.96寸OLED(IIC)的
- STM32F103通过模拟IIC读取LIS3DH 解析数据
- 软件模拟IIC主从机
- IIC总线读写AT24C02BEEPROM源程序 有详细
- 51单片机1602+ADIIC+按键
- STC15+sht30
- AD9361寄存器配置参考
- stm32f103的PCF8563驱动代码
评论
共有 条评论