资源简介
用软件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个文件信息
相关资源
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- STM32 DS3231驱动.zip
- IIC proteus仿真实验
- STM32F030从机中断接收的iic代码,附带
- STM32使用模拟IIC实现24C02读取
- 0.96OLED_C51系列_IIC应答_例程
- (带有源代码)基于FPGA的模拟I2C接口
- zw_OLED-STM32F4-IIC.zip
- STM32硬件IIC主机例程以读写EEPROM为例
- stm32单片机IIC通讯采集sht20温湿度传感
- 基于IIC的OLED显示程序
- OLED程序例程(STM32_OLED(C8T6))
- stm32f103iic读取AT24XX全系eeprom
- fpga与eeprom通信
- STM32用IIC通信实现OLED显示程序代码及
- ATTINY24A 接收IIC程序控制直流电机
- A7129原厂资料含软件、配置和PCB布线指
- 基于STM32F103控制16PWM路舵机驱动板PC
- STM8L 硬件IIC主机
- DTH11温湿度显示在IIC_OLED上,好用,自
- STM32 IIC驱动DRV10983
- STM32--IIC通信两个JY-901模块
- WiiCCD Master 3.51 + Wbfs Master 2.15
- 基于FPGA的pcf8591的AD采样程序verilog
- WiiCCD_Master_3.51_+_Wbfs_Master_2.16.rar
- LT8641寄存器配置
- 关于七针0.96寸OLED使用IIC接口的说明
- ICN6211资料及寄存器配置生成器
- Verilog IIC读MPU6050-融合滤波-单轴-代码
- STM8程序IAR环境
评论
共有 条评论