bq27750 电量计芯片,适用于手持仪器的电量管理,本次上传的为本人初步使用,供学习参考,包括有TI的说明书;以压缩文件:BQ2750.RAR
单片机源程序如下:
- /* Includes ------------------------------------------------------------------*/
- //#include "bq27200.h"
- #include "bq27750/bq27750.h"
- #include "globalmvf.h"
- // control register params
- #define BQ27200_SOFT_FRSET 0x42 //全复位
- #define BQ27200_SOFT_PRSET 0x48 //部分复位
- #define BQ27750_RS 20 // Resistor sense mOhm
- // Register
- #define BQ27750_REG_CTRL_L 0X00 //控制寄存器
- #define BQ27750_REG_CTRL_H 0X01
- #define BQ27750_REG_TEMP_L 0x06 //温度寄存器
- #define BQ27750_REG_TEMP_H 0x07
- #define BQ27750_REG_VOLT_L 0x08 //电压寄存器
- #define BQ27750_REG_VOLT_H 0x09
- #define BQ27750_REG_FLAGS_L 0x0A //电池状态寄存器
- #define BQ27750_REG_FLAGS_H 0x0B
- #define BATTERY_FLAGS_CHARGING 0X00 //正充电
- #define BATTERY_FLAGS_DISCHARGING 0X40 //正放电
-
- #define BQ27750_REG_INSTCURR_L 0x0C //SENSOR电阻上瞬时电流 1秒刷新一次
- #define BQ27750_REG_INSTCURR_H 0x0D
- #define BQ27750_REG_AI_L 0x14 //平均电流寄存器
- #define BQ27750_REG_AI_H 0x15
- #define BQ27750_REG_RM_L 0x10 //预测的剩余容量
- #define BQ27750_REG_RM_H 0x11
- #define BQ27750_REG_FCC_L 0x12 //预设的满充容量
- #define BQ27750_REG_FCC_H 0x13
- #define BQ27750_REG_INT_TEMP_L 0x28 //内部温度 0.1K为单位
- #define BQ27750_REG_INT_TEMP_H 0x29
- #define BQ27750_REG_CCOUNT_L 0x2A //放电次数
- #define BQ27750_REG_CCOUNT_H 0x2B
- #define BQ27750_REG_SOC_L 0x2C //充电百分比
- #define BQ27750_REG_SOC_H 0x2D
- #define BQ27750_REG_SOH_L 0x2E //设计容量的百分比作为电池健康状况
- #define BQ27750_REG_SOH_H 0x2F
- #define BQ27750_REG_CV_L 0x30 //将充电电压
- #define BQ27750_REG_CV_H 0x31
- #define BQ27750_REG_CC_L 0x32 //将充电电流
- #define BQ27750_REG_CC_H 0x33
- #define BQ27750_REG_DC_L 0x3C //设计容量
- #define BQ27750_REG_DC_H 0x3D
- #define BQ27750_REG_MAC_L 0x3E //制造商数据访问指令
- #define BQ27750_REG_MAC_H 0x3F
- #define BQ27750_REG_MAC_DATA_L 0x40 //制造商数据
- #define BQ27750_REG_MAC_DATA_H 0x5F
- #define BQ27750_REG_MAC_DATA_SUM_L 0x60 //制造商数据校验和
- #define BQ27750_REG_MAC_DATA_LEN_H 0x61 //制造商数据长度
- //====设置设计参数 FLASH数据--------------------------------------------------------------------------------
- #define DA_CONFIG_VALUE 0X10 //1串电池 睡眠使 默认值 0X11 2串电池 睡眠使
- #define DESIGN_CAPACITY_MAH_VALUE 2000 //MAH 设计容量MAH 默认值 5300MAH
- #define DESIGN_CAPACITY_CWH_VALUE 770 //CWH 设计容量CWH 默认值 2040CWH
- #define DESIGN_VOLTAGE_VALUE 4100 //MV 设计电压MV 默认值 3850MV
- //#define DEVICE_CHEMISTRY //按默认的锂电 LION 默认值 锂电 LION
- #define COV_VALUE 4300 //过高电压值 默认值 4300MA
- #define CUV_VALUE 2500 //过低电压值 默认值 2500MA
- #define SHUTDOWN_VALUE 2300 //关断电压值 默认值 2300MA
- #define OCC_VALUE 2000 //最大流电电流值 默认值 5000MA
- #define OCD_VALUE 1500 //最大放电流值 默认值 5000MA
- #define ASCC_VALUE 0X77 //100MA 5秒 //瞬时短路充电电流值 默认值 0X77 //100MA 5秒
- #define ASCD_VALUE 0X77 //100MA 5秒 //瞬时短路放电电流值 默认值 0X77 //100MA 5秒
- #define SOV_VALUE 4500 // 电池永久损坏值 默认值 4500MA
- #define TEMP_SENSOR_SELECT 0X01 //内外温度传感器选择 选择内部的 默认值 0x03 内外两个
- #define UTC_VALUE 0 //充电温度值 0度 默认值 0
- #define UTD_VALUE 0 //放电温度值 0度 默认值 0
- //#define BCAST //没有找到
- //====设置设计参数 FLASH地址--------------------------------------------------------------------------------
- #define ADDR_DA_CONFIG_VALUE 0X45E2 // 默认值 0X45E2=0X18
- #define ADDR_DESIGN_CAPACITY_MAH_VALUE 0X4563 // 默认值 0X4563 =5300MAH 现设计为2000MAH
- #define ADDR_DESIGN_CAPACITY_CWH_VALUE 0X4565 // 默认值 0X4565 =2040CWH 现设计为770CWH
- #define ADDR_DESIGN_VOLTAGE_VALUE 0X4567 // 默认值 0X4567 =3850MV 现设计为4100MV
- #define ADDR_DEVICE_CHEMISTRY 0X4095 //默认值 锂电 LION
- #define ADDR_COV_VALUE 0X4602 //默认值 4300MA 现设计为4300MV //过高电压值
- #define ADDR_CUV_VALUE 0X45FB //默认值 2500MA 现设计为2500MV //过低电压值
- #define ADDR_SHUTDOWN_VALUE 0X4547 //默认值 2300MA 现设计为2300MV //关断电压值
- #define ADDR_OCC_VALUE 0X4611 //默认值 9000MA 现设计为2000 //最大流电电流值
- #define ADDR_OCD_VALUE 0X4617 //默认值 6000MA 现设计为1500 //最大放电流值
- #define ADDR_ASCC_VALUE 0X46E7 //默认值 0X77 //100MA 0.4MS 现设计为 0X77 //100MA 0.4MS //瞬时短路充电电流值
- #define ADDR_ASCD_VALUE 0X45E8 //0X77 //100MA 0.4MS //瞬时短路放电电流值 默认值 0X77 //100MA 0.4MS
- #define ADDR_SOV_VALUE 0X4648 //默认值 4500MA 现设计为 4500 // 电池永久损坏值
- #define ADDR_TEMP_SENSOR_SELECT 0X45E1 // 0X01 //内外温度传感器选择 选择内部的 默认值 0x03 内外两个
- #define ADDR_UTC_VALUE 0X462A // 默认值 0 现设计为 0 //充电温度值 0度
- #define ADDR_UTD_VALUE 0X462F // 默认值 0 放电温度值 0度 现设计为 0
- //#define BCAST //没有找到
- //#define SlaveAddress_read 0xAB //1 27200
- //#define SlaveAddress_write 0xAA //0
- #define SlaveAddress_write 0xAa // BIT0=1 27750
- #define SlaveAddress_read 0xAb // BIT0=0
- static void SDA_OUT(void); //PC2
- static void SDA_IN(void); //PC3
- static void BQ_I2C_DELAY_x100ns(u8 x100ns_data);
- static void BQ_I2C_DELAY(void);
- static u8 BQ_I2C_START(void);
- static void BQ_I2C_STOP(void);
- static void BQ_I2C_Ack(void);
- static void BQ_I2C_NoAck(void);
- static u8 BQ_I2C_WaitAck(void); //返回=1有ACK,=0无ACK
- static void BQ_I2C_SendByte(u8 SendByte); //数据从高位到低位
- //static u8 BQ_I2C_ReceiveByte(void); //数据从高位到低位
- static u8 BQ_I2C_ReceiveByte(unsigned char ack);
- //################################### IO口模拟法##############################################
- extern void BQ27750_IO_I2C_Configuration(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- //PC3----SCL
- //PC2----SDA
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);
- GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2|GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高输出速度50M
- GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_OD; //GPIO_Mode_Out_PP;////GPIO_Mode_Out_PP; //GPIO_Mode_AF_OD; // GPIO_Mode_Out_PP; //输出 GPIO_Mode_IPU GPIO_Mode_Out_OD)
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- BQ_SDA_H; //总线初始
- BQ_SCL_H;
- }
- static void write_BQ_Delay(uint16_t X10MS)
- {
- TIM3_X10MS(X10MS); //主程序运行前延时2秒
- while(timer3_X10ms>0);
- TIM_Cmd(TIM3, DISABLE);
- }
-
- //IO方向设置
- static void SDA_IN(void) //PC2
- {
-
- //1.FUNCTION MODE:
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // GPIO_Mode_Out_OD; //开漏 GPIO_Mode_IPU; //上拉输入
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- //2.REGISTER MODE:
- //RCC->APB2ENR |= 0x00000010; //C口时钟开启
- // GPIOC->CRL&=0XFFFFF0FF; //取PC2 IN
- // GPIOC->CRL|=0X00000800;
-
- }
- static void SDA_OUT(void) //PC2
- {
- //1.FUNCTION MODE:
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
- GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//最高输出速度50M
- GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_OD; //开漏 GPIO_Mode_Out_PP; //输出
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- //2.REGISTER MODE:
- //RCC->APB2ENR |= 0x00000010; //C口时钟开启
- // GPIOC->CRL&=0XFFFFF0FF; //取PC2 OUT
- // GPIOC->CRL|=0X00000300; // 3/7
-
- }
- //extern void BQ27200_Write_Design_Capacity(u16 capacity_xmah)
- //{
- //u8 set_CapPercent=1;
- //u8 val_l=0,val_h=0;
- //u16 val_76=0,set_capacity=0;
- //float val=0;
- //
- //set_CapPercent=1; //100%
- ////高字节值:(Design_Capacity*R)/(256*3.57) : Design_Capacity=2000mah R=20毫欧 (2000*20)/(256*3.57)=43;
- ////低字节值:0X00
- //
- //set_capacity=capacity_xmah;
- //val=set_capacity*BQ27200_RS;
- //val=(val/256)/3.57;
- //val=val*256;
- //val_76=((int)val+0)*set_CapPercent;
- //
- //val_l=val_76/256; //高字节
- //val_h=val_76%256; //低字节
- //
- //
- //BQ_I2C_WriteByte(val_l, SlaveAddress_write, BQ27200_REG_AR_L);
- //write_BQ_Delay(1); //10MS
- //
- //BQ_I2C_WriteByte(val_h, SlaveAddress_write, BQ27200_REG_AR_H);
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X20, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0Xa9, SlaveAddress_write, BQ27200_REG_CTRL); //
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X40, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- //}
- extern void BQ27750_Write_SETTING_DESIGN_PARAMETERS(void)
- {
- //BQ_I2C_WriteByte(0x0012, 0XAA, 0X3E);
- //BQ_I2C_WriteByte(0X00, 0XAA, 0X00); BQ_I2C_WriteByte(0X22, 0XAA, 0X01);
-
- BQ_I2C_WriteByte_toflash(DA_CONFIG_VALUE , SlaveAddress_write, ADDR_DA_CONFIG_VALUE);
- BQ_I2C_WriteByte_toflash(DESIGN_CAPACITY_MAH_VALUE , SlaveAddress_write, ADDR_DESIGN_CAPACITY_MAH_VALUE);
- BQ_I2C_WriteByte_toflash(DESIGN_VOLTAGE_VALUE, SlaveAddress_write, ADDR_DESIGN_VOLTAGE_VALUE);
- BQ_I2C_WriteByte_toflash(COV_VALUE , SlaveAddress_write, ADDR_COV_VALUE);
- BQ_I2C_WriteByte_toflash(CUV_VALUE , SlaveAddress_write, ADDR_CUV_VALUE);
- BQ_I2C_WriteByte_toflash(SHUTDOWN_VALUE , SlaveAddress_write, ADDR_SHUTDOWN_VALUE);
- BQ_I2C_WriteByte_toflash(OCC_VALUE , SlaveAddress_write, ADDR_OCC_VALUE);
- BQ_I2C_WriteByte_toflash(OCD_VALUE , SlaveAddress_write, ADDR_OCD_VALUE );
- BQ_I2C_WriteByte_toflash(ASCC_VALUE , SlaveAddress_write, ADDR_ASCC_VALUE );
- BQ_I2C_WriteByte_toflash(ASCD_VALUE , SlaveAddress_write, ADDR_ASCD_VALUE );
- BQ_I2C_WriteByte_toflash(SOV_VALUE , SlaveAddress_write, ADDR_SOV_VALUE);
- BQ_I2C_WriteByte_toflash(TEMP_SENSOR_SELECT, SlaveAddress_write, ADDR_TEMP_SENSOR_SELECT);
- BQ_I2C_WriteByte_toflash(UTC_VALUE , SlaveAddress_write, ADDR_UTC_VALUE);
- BQ_I2C_WriteByte_toflash(UTD_VALUE, SlaveAddress_write, ADDR_UTD_VALUE);
- //
- }
- extern void BQ27200_Write_Design_Capacity(u16 capacity_xmah)
- {
-
- u8 set_CapPercent=1;
- u8 val_l=0,val_h=0;
- u16 val_76=0,set_capacity=0;
- float val=0;
-
- set_CapPercent=1; //100%
- //高字节值:(Design_Capacity*R)/(256*3.57) : Design_Capacity=2000mah R=20毫欧 (2000*20)/(256*3.57)=43;
- //低字节值:0X00
-
- set_capacity=capacity_xmah;
- val=set_capacity*BQ27750_RS;
- val=(val/256)/3.57;
- val=val*256;
- val_76=((int)val+0)*set_CapPercent;
-
- val_l=val_76/256; //高字节
- val_h=val_76%256; //低字节
-
-
- BQ_I2C_WriteByte(0x2b, SlaveAddress_write, 0X76); //ILMD: (2000*20)/(256*3.57)=43=0x2b
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x77, SlaveAddress_write, 0X77); //SEVF: (3000/8)-256=119=0X77
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0xA2, SlaveAddress_write, 0X78); //SEV1: (3350/8)-256=162=0XA2
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x0E, SlaveAddress_write, 0X79); //ISLC: (50*20)/7.14=14=0X0E
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x58, SlaveAddress_write, 0X7A); //DMFSD:
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x88, SlaveAddress_write, 0X7B); //TAPER: (100*20)/228 =8 ,BIT7=1
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0x70, SlaveAddress_write, 0X7C); //PKCXFG: GPIO禁止外用 4.112V -9.8UV 固定补偿
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0X16, SlaveAddress_write, 0x7D); //IMLC: (500*20)/457=22=0x16
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0X42, SlaveAddress_write, 0x7e); //DCOMP:
- write_BQ_Delay(1); //10MS
- BQ_I2C_WriteByte(0X7C, SlaveAddress_write, 0x7F); //TCOMP:
- write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X20, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0Xa9, SlaveAddress_write, BQ27200_REG_CTRL); //
- //write_BQ_Delay(1); //10MS
- //BQ_I2C_WriteByte(0X40, SlaveAddress_write, BQ27200_REG_MODE); //WRTNAC=1
- //write_BQ_Delay(1); //10MS
- }
- extern void BQ27750_Write_Design_Capacity(u16 capacity_xmah)
- {
-
- u8 set_CapPercent=1;
- u8 val_l=0,val_h=0;
- u16 val_76=0,set_capacity=0;
- float val=0;
-
- set_CapPercent=1; //100%
- //高字节值:(Design_Capacity*R)/(256*3.57) : Design_Capacity=2000mah R=20毫欧 (2000*20)/(256*3.57)=43;
- //低字节值:0X00
-
- set_capacity=capacity_xmah;
- val=set_capacity*BQ27750_RS;
- val=(val/256)/3.57;
- val=val*256;
- val_76=((int)val+0)*set_CapPercent;
-
- val_l=val_76/256; //高字节
- val_h=val_76%256; //低字节
- }
- static void BQ_I2C_DELAY_x100ns(u8 x100ns_data)
- {
- u16 i=1; // //实验调到0.2US左右
- u8 h=0;
-
- for(h=0;h<x100ns_data;h++)
- {
- for(;i>0;i--) ;
- }
- }
- static void BQ_I2C_DELAY(void)
- {
- u16 i=800; //800--1 //实验调到5-6US左右
- //u16 i=4;
- while(i) i--;
- }
- static void BQ_I2C_DELAY1(void)
- {
- u16 i=400; //400--1 //实验调到5-6US左右
- //u16 i=4;
- while(i) i--;
- }
- static void BQ_I2C_DELAY2(void)
- {
- u16 i=200; //200--1 //实验调到5-6US左右
- //u16 i=4;
- while(i) i--;
- }
- static x_sft(u8 shift_cnt)
- {
- u8 kk=2;
- for(;shift_cnt>0;shift_cnt--) {kk=kk<<1;}
- }
-
- static u8 BQ_I2C_START(void)
- {
-
- SDA_OUT(); //SDA输出
-
- BQ_SDA_H; //释放SDA总线
- BQ_I2C_DELAY();
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- //if(!BQ_SDA_READ) return 0; //SDA线低电平则总线忙 退出
-
- BQ_SDA_L; //开始信号
- BQ_I2C_DELAY();
-
- //if(BQ_SDA_READ) return 0; //SDA线高电平则总线出错 退出
- BQ_SCL_L;
- BQ_I2C_DELAY();
-
- return 1;
- }
- static void BQ_I2C_STOP(void)
- {
- SDA_OUT(); //SDA输出
- BQ_SDA_L;
- BQ_I2C_DELAY();
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- BQ_SDA_H; //停止信号
- BQ_I2C_DELAY();
- BQ_I2C_DELAY();
- }
- static void BQ_I2C_Ack(void)
- {
-
- SDA_OUT(); //SDA输出
- BQ_SCL_L;
- BQ_I2C_DELAY();
-
- BQ_SDA_L;
- BQ_I2C_DELAY();
-
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_L;
- BQ_I2C_DELAY();
- }
- static void BQ_I2C_NoAck(void)
- {
- u8 ft=2;
-
- //BQ_SCL_L; //应答脉冲形成前置0
- //x_sft(2);
- //SDA_OUT(); //SDA输出
-
- BQ_SCL_L;
- BQ_I2C_DELAY();
-
- BQ_SDA_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_L;
- BQ_I2C_DELAY();
- }
- static u8 BQ_I2C_WaitAck(void) //返回=1有ACK,=0无ACK
- {
- u8 ft=2;
- u8 ucErrTime=0;
-
- SDA_IN(); //SDA设置为输入
-
- BQ_SDA_H;
- BQ_I2C_DELAY();
-
- BQ_SCL_H;
- BQ_I2C_DELAY();
-
-
- while(BQ_SDA_READ) //检测应答的数据
- {
- ucErrTime++;
- if(ucErrTime>250)
- {
- //BQ_I2C_STOP();
- BQ_SCL_L;
- return 0;
- }
- }
-
- BQ_SCL_L;
- return 1;
-
- }
- static void BQ_I2C_SendByte(u8 SendByte) //数据从高位到低位
- {
- u8 i=8,ft=1;
-
- SDA_OUT(); //SDA输出
-
- while(i--)
- {
- BQ_SCL_L;
- BQ_I2C_DELAY1();
-
- if(SendByte&0x80) BQ_SDA_H;
- else BQ_SDA_L;
-
- SendByte<<=1;
- BQ_I2C_DELAY2();
-
- BQ_SCL_H;
- BQ_I2C_DELAY2();
- }
-
- BQ_SCL_L;
- }
- /**************************************************************
- * 功能描述:读1字节
- ** 输入参数:ack,1--发送ACK
- 0--发送nACK
- ** 输出参数: 无
- ** 返 回:返回读取的一字节数据
- ***************************************************************/
- static u8 BQ_I2C_ReceiveByte(unsigned char ack) //数据从高位到低位
- {
- u8 i=8;
- u8 ReceiveByte=0;
- SDA_IN();//SDA设置为输入
-
- BQ_SDA_H;
-
- while(i--)
- {
- ReceiveByte<<=1;
-
- BQ_SCL_L;
- BQ_I2C_DELAY1();
-
- BQ_SCL_H;
- BQ_I2C_DELAY1();
-
- if( BQ_SDA_READ) ReceiveByte|=0x01;
-
- }
-
- BQ_SCL_L;
-
- return ReceiveByte;
- }
- // 写入1字节数据 待写入数据 待写入地址 器件类型(BQ27200)
- extern u8 BQ_I2C_WriteByte(u8 SendByte, u8 WriteAddress, u16 RrgAddress)
- {
- u32 j,ft=2;
- BQ_I2C_START();
- //if(!BQ_I2C_START()) return 0;
- //BQ_I2C_SendByte( WriteAddress&0xFE);//写器件地址
- BQ_I2C_SendByte( WriteAddress);//写器件地址 AB
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等应答 为0时返回 即器件没有应答
- // { BQ_I2C_STOP();
- // return 0;
- // }
-
- BQ_I2C_SendByte((u8)((RrgAddress>>8)&0XFF)); //设置寄存器地址
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等应答 为0时返回 即器件没有应答
- // { BQ_I2C_STOP();
- // return 0;
- // }
-
- BQ_I2C_SendByte((u8)(RrgAddress&0XFF)); //设置寄存器地址
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等应答 为0时返回 即器件没有应答
- // { BQ_I2C_STOP();
- // return 0;
- // }
-
- BQ_I2C_SendByte(SendByte); //写数据
- BQ_I2C_WaitAck();
- // if(!BQ_I2C_WaitAck()) //等应答 为0时返回 即器件没有应答
- // { BQ_I2C_STOP();
- // return 0;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
bq27750.7z
(1.09 MB, 下载次数: 42)
|