请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:BQ28Z620 工具/软件:
您好团队:
您好团队:
我们目前在项目中遇到以下问题
(1)当多个驱动器同时工作时、逻辑分析仪捕获的波形不正确、在此过程中时钟存在延迟、并且在读取寄存器之前和之后、SDA 和 SCL 电平均为低电平、如 gaute.kvdat 中所示
(2)仅保留电量监测计驱动器时、时序图正确、如 fuel-gAUGE_comrRECT.kvdat 中所示
(3)读取数据时出错
Current:128;Cyclec_count:0;voltage:32768;temperature:128;soc:128;status:128
另一个读取结果为电流:0;cyclec_count:0;voltage:32768;temperature:0;soc:0;status:0;在 EVK 测试期间、我们使用大端模式来读取电压(小端模式未正确读取数据)其余数据在小端模式下读取
(4)我是否要与您确认 bq28z620的寄存器地址是16位?
此致!
光圈
typedef struct __attribute__((packed)) { uint8_t high_byte; /*buf[0] */ uint8_t low_byte; /*buf[1] */ } bq28z620_voltage_t; typedef struct __attribute__((packed)) { uint8_t low_byte; uint8_t high_byte; } bq28z620_reg_t; static int read_voltage(const msdk_device_t *dev, uint16_t *milli_volts) { bq28z620_voltage_t voltage_data = {0}; int res = MSDK_STATUS__ERROR; res = read_reg(dev, BQ28Z620_CMD__VOLTAGE, (uint8_t *)&voltage_data); if (MSDK_STATUS__OK == res){ *milli_volts = (voltage_data.high_byte << 8) | voltage_data.low_byte; } MSDK_LOG_DBG("milli_volts: %d", *milli_volts); return res; } static int read_relative_soc(const msdk_device_t *dev, uint16_t *percent) { bq28z620_reg_t soc_data = {0}; int res = MSDK_STATUS__ERROR; res = read_reg(dev, BQ28Z620_CMD__RELATIVE_STATE_OF_CHARGE,(uint8_t *)&soc_data); MSDK_LOG_DBG("read_relative_soc:0x%02x, 0x%02x", soc_data.high_byte, soc_data.low_byte); if (MSDK_STATUS__OK == res){ *percent = (soc_data.high_byte << 8) | soc_data.low_byte; MSDK_LOG_DBG("read_relative_soc:%d", *percent); } return res; }