主题中讨论的其他器件:BQSTUDIO、
大家好、
我想使用 BQ769400DBT BMS IC 并借助通过 I2C 通信的 stm32\cs6\f105\cf6\lang1024微控制器来读取电池电压。 在链接(https://www.ti.com/lit/zip/sluc701)中具有 STM32_I2C 参考代码、但具有不同的 BMS IC (BQ769x2)。
在链接中存在"main_STM32F103_I2C"文件,其中提及名为"void BQ769x2_Init()"的函数。 该函数如下所述:-
void BQ769x2_Init(){
//配置器件 RAM 中的所有参数
//进入 configupdate 模式(子命令0x0090)-需要处于 CONFIG_UPDATE 模式才能对器件 RAM 设置进行编程
//有关 CONFIG_UPDATE 模式的完整说明,请参阅 TRM
CommandSubcommands (SET_CFGUPDATE);
//进入 CONFIG_UPDATE 模式后、可以对 RAM 寄存器进行编程。 对 RAM 进行编程时、校验和和长度也必须为
//编程以使更改生效。 BQ769x2 TRM 中详细介绍了所有 RAM 寄存器。
//查找说明的一种更简单的方法是在 BQStudio Data Memory 屏幕中找到。 将鼠标移到寄存器名称上时、
//屏幕上将弹出对寄存器和位的完整说明。
//“电源配置”- 0x9234 = 0x2D80
//设置 DSLP_LDO 位可使 LDO 在器件进入深度睡眠模式时保持活动状态
//将唤醒速度位设置为00以获得最佳性能
BQ769x2_SetRegister (PowerConfig、0x2D80、2);
//'re 4/0 Config'-设置 REG0_EN 位以启用前置稳压器
BQ769x2_SetRegister (REG0Config、0x01、1);
//'re4/12 Config'-启用具有3.3V 输出的 REG1 (0x0D 为3.3V、0x0F 为5V)
BQ769x2_SetRegister (REG12Config、0x0D、1);
//设置 DFETOFF 引脚以控制 CHG 和 DSG FET - 0x92FB = 0x42 (设置为0x00以禁用)
BQ769x2_SetRegister (DFETOFFPinConfig、0x42、1);
//设置 ALERT 引脚- 0x92FC = 0x2A
//这会将 ALERT 引脚配置为在启用时驱动高电平(REG1电压)。
//当触发保护或提供新的测量值时、ALERT 引脚可用作 MCU 的中断
BQ769x2_SetRegister (ALERTPinConfig、0x2A、1);
//将 TS1设置为测量电池温度- 0x92FD = 0x07
BQ769x2_SetRegister (TS1Config、0x07、1);
//将 TS3设置为测量 FET 温度- 0x92FF = 0x0F
BQ769x2_SetRegister (TS3Config、0x0F、1);
//将 HDQ 设置为测量电池温度- 0x9300 = 0x07
BQ769x2_SetRegister (HDQPinConfig、0x00、1);// EVM HDQ 引脚上未安装热敏电阻、因此设置为0x00
//'VCell Mode'-启用16节电池- 0x9304 = 0x0000;写入0x0000会设置16节电池的默认值
BQ769x2_SetRegister (VCellMode、0x0000、2);
//在"Enabled Protections A"中启用保护0x9261 = 0xBC
//启用 SCD (短路)、OCD1 (放电过流)、OCC (充电过流)、
// COV (过压)、CUV (欠压)
BQ769x2_SetRegister (EnabledProtectsA、0xBC、1);
//启用'Enabled Protections B'中的所有保护0x9262 = 0xF7
//启用 OTF (过热 FET)、OTINT (内部过热)、OTD (放电过热)、
// OTC (充电过热)、UTINT (内部欠温)、UTD (放电欠温)、UTC (充电欠温)
BQ769x2_SetRegister (EnabledProtectsB、0xF7、1);
//“默认报警掩码”- 0x0.82启用 FullScan 和 Adscan 位,默认值= 0xF800
BQ769x2_SetRegister (DefaultAlarmMask、0xF882、2);
//设置电池平衡配置- 0x9335 = 0x03 -处于静置或充电模式时的自动平衡
//另请参阅 TI.com 上的“使用 BQ769x2电池监控器实现电池平衡”文档
BQ769x2_SetRegister (平衡配置、0x03、1);
//设置 CUV (欠压)阈值- 0x9275 = 0x31 (2479mV)
// CUV 阈值是该值乘以50.6mV
BQ769x2_SetRegister (CUVThreshold、0x31、1);
//设置 COV (过压)阈值- 0x9278 = 0x55 (4301mV)
// COV 阈值是该值乘以50.6mV
BQ769x2_SetRegister (COVThreshold、0x55、1);
//设置 OCC (充电中的过流)阈值- 0x9280 = 0x05 (1m Ω 检测电阻上的10mV = 10A)单位、以2mV 为单位
BQ769x2_SetRegister (OCCThreshold、0x05、1);
//设置 OCD1阈值- 0x9282 = 0x0A (在1m Ω 检测电阻上20mV = 20A) 2mV 单位
BQ769x2_SetRegister (OCD1Threshold、0x0A、1);
//设置 SCD 阈值- 0x9286 = 0x05 (1m Ω 检测电阻上的100mV = 100A) 0x05=100mV
BQ769x2_SetRegister (SCDThreshold、0x05、1);
//µs SCD 延迟- 0x9287 = 0x03 (30us)启用、延迟为(值- 1)* 15 μ s;最小值为1
BQ769x2_SetRegister (SCDDelay、0x03、1);
//将 SCDL 锁存限制设置为1,以便仅在卸载时设置 SCD 恢复0x9295 = 0x01
//如果未设置,则 SCD 将根据时间恢复(SCD 恢复时间参数)。
BQ769x2_SetRegister (SCDLLatchLimit、0x01、1);
//退出 configupdate 模式-子命令0x0092
CommandSubcommands (EXIT_CFGUPDATE);
}
在此函数中,配置了 BQ769X2 IC 寄存器..... 在此函数中、我要设置 BQ769400DBT BMS IC 的寄存器。 但我不知道如何通过顺序逐个设置寄存器来配置 BQ769400DBT IC 以读取电池电压。 如果有人已经处理过这个问题、请帮助我解决这个问题。
此致、谢谢
Deepak