bq27750芯片.C .H与程序文件单片机解密
单片机解密q27750 电量计芯片,适用于手持仪器的电量管理,本次上传的为本人初步使用,供学习参考,包括有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);

芯片解密