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:Pak 当前垃圾读数和第一个 NTC 热敏电阻 TS1 未读数问题

Guru**** 2589265 points
Other Parts Discussed in Thread: BQ76940

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1567073/bq76940-pak-current-junk-reading-and-first-ntc-thermistor-ts1-not-reading-issue

器件型号:BQ76940


工具/软件:

尊敬的 TI 团队:

我们目前正在使用与 STM32 微控制器连接的 BQ76940 IC 开发电池管理系统 (BMS)。 我们的目标是读取和控制电芯电压、电池包电流、电池包电压和温度等关键参数。 到目前为止、我们已经成功读取了单个电芯电压和电池组电压。

但是、我们在读取电池组电流和温度 (TS1) 时会遇到问题:

1. 电池包电流

  • 从 CC 寄存器中读取的值几乎是恒定的0xFFB1,通常情况下,并且偶尔0x0042

  • 根据数据表、我们已应用给定的公式来计算电流、但 ADC 值不会随负载条件的变化而变化。

  • 此外、 CC_READY 仅在上电后设置一次该位。 我们正在启用这两者 ADC_EN CC_EN 但 CC 值不会更新。

//我们的代码供您参考

HAL_I2C_ADD_SIZE_8 Mem_Read 位 (&hi2c1、0x08<<<1、PACKCURR_REG_ADD、I2C_MEMADD_SIZE_8 位、Read_Arr、2、 100);//电池组电流
Pack_curre_ADC_RAW=((Read_Arr [0]<< 8)| Read_Arr [1]);
Pack_cur_SIG_value=(int16_t) Pack_curre_adc_raw;
PACK_CUR_uVolt=(float) Pack_cur_SIG_VALUE*8.44;
PACK_CUR_Volt=PACK_CUR_uVolt*0.000001;
Pack_Current_ A=PACK_CUR_Volt/0.005;     //i=V/R A
PACK_MICROA=PA*1000000 Pack_Current_;    //微安

您能否请确认我们的计算方法是否正确、并阐明了读取 CC 寄存器值的正确过程? 是否需要任何额外步骤来确保库仑计持续更新?

2. 温度 (TS1)

  • 我们将读取 TS1、TS2 和 TS3 寄存器以进行 NTC 热敏电阻温度测量。 TS2 和 TS3 寄存器会返回正确的值。 然而,当我们读取 TS1 寄存器时,我们始终收到一个常数值0x21A5,而 TS2 和 TS3 返回值,如0x0F6F.
  • 转换后、TS2 和 TS3 值对应于大约 29°C、这是正确的。 相比之下、TS1 值不会改变并保持不变。
  • 我们已附上以下相关代码供您参考。 您能否回顾一下、并就我们实施过程中可能导致 TS1 保持不变的任何错误或缺失步骤提供建议?

#define TS1_REG_ADD 0x2C
#define TS2_REG_ADD 0x2E
#define TS3_REG_ADD 0x30

BQ769x0_BlockRead (&hi2c1、TS1_REG_ADD、gread_arr、2);
HAL_I2C_ADD_SIZE_8 Mem_Read 位 (&hi2c1、0x08<<<1、TS1_REG_ADD、I2C_MEMADD_SIZE_8 位、Read_Arr、2、 100);//热敏电阻 1
THERMST_RAW_VAL[0]=(((FFF[0]<< 8)| Read_Arr [1])& Read_Arr;
ThermisTemp[0]=ConvertRawToTemp (THERMST_RAW_VAL[0]);

HAL_I2C_ADD_SIZE_8 Mem_Read 位 (&hi2c1、0x08<<1、TS2_REG_ADD、I2C_MEMADD_SIZE_8 位、Read_Arr、2、 100);//热敏电阻 2
THERMST_RAW_VAL[1]=((FFF[0]<< 8)| Read_Arr [1])& Read_Arr;
ThermisTemp[1]=ConvertRawToTemp (THERMST_RAW_VAL[1]);

HAL_I2C_HI2c1 Mem_Read (&hi2c1、0x08<<<1、TS3_REG_ADD、I2C_MEMADD_SIZE_8 位、Read_Arr、2、 100);//热敏电阻 3
THERMST_RAW_VAL[2]=((FFF[0]<< 8)| Read_Arr [1])& Read_Arr;
ThermisTemp[2]=ConvertRawToTemp (THERMST_RAW_VAL[2]);

我们之前提出了有关从中读取参数的过程的查询 BQ76940 IC 但不幸的是、我们没有收到答复。 这种清晰度使我们很难在我们的项目中继续评估和实施此器件。

为了在我们的 BMS 设计中做出有关购买和使用该 IC 的明智决策、我们恳请及时寻求支持和帮助。 如果有人能解决这些问题并就解决我们所面临的问题提供指导、我们将不胜感激

 

谢谢、

Priyadharshini S.