This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ76940:BQ76940

Guru**** 2516170 points
Other Parts Discussed in Thread: BQSTUDIO, BQ76940

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1192959/bq76940-bq76940

器件型号:BQ76940
主题中讨论的其他器件: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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Deepak、您好!

    BQ76940与新的 BQ769x2系列有很大不同、因此从 BQ769x2代码开始不是一个好主意、因为它没有太多相似性。 如果您在线搜索、其他用户已经使用 BQ76940和 STM32创建了项目-有一个称为 LibreSolar 的开源参考设计同时使用这两个器件。

    BQ76940的唯一示例代码是使用 MSP430微控制器。

    此致、

    Matt