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.

[参考译文] BQ76972:Stm32G4和 BQ76972读取/写入之间的 I2C 通信失败

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1519352/bq76972-i2c-communication-between-stm32g4-and-bq76972-read-write-failing

器件型号:BQ76972

工具/软件:

大家好:

目前、我正在在 STM32G4微控制器和 BQ76972 I²C IC 之间实现 I ² C 通信。 在简单的器件扫描正确检测 IC 的地址时、每次后续读取/写入操作都会失败。 这可能是什么原因造成的、如何解决?

请提供任何建议。

HAL_StatusTypeDef BQ76972_WriteReg(uint8_t regAddr, uint8_t data)
{
    return HAL_I2C_Mem_Write(&hi2c3, BQ76972_I2C_ADDR, regAddr, I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
//    return HAL_I2C_Master_Transmit(&hi2c3, BQ76972_I2C_ADDR, TX_BUFF,sizeof(TX_BUFF), HAL_MAX_DELAY);
}


// Reads 1 byte from BQ76972 register
HAL_StatusTypeDef BQ76972_ReadReg(uint8_t regAddr, uint8_t* data)
{

    return HAL_I2C_Mem_Read(&hi2c3, BQ76972_I2C_ADDR, regAddr, I2C_MEMADD_SIZE_8BIT, data, 1, HAL_MAX_DELAY);
//	return HAL_I2C_Slave_Receive(&hi2c3, data, 1, HAL_MAX_DELAY);
}



void BMS_ReadAndSend()
{
    uint8_t regVal = 0;

    if (BQ76972_ReadReg(0x11, &regVal) == HAL_OK)
    {
        snprintf((char*)dataBuf, sizeof(dataBuf), "BQ76972 Reg 0x00 = 0x%02X\r\n", regVal);
        RS485_Transmit(dataBuf, strlen((char*)dataBuf));
    }
    else
    {
        RS485_Transmit((uint8_t *)"BQ76972 I2C Read Fail\r\n", 24);
    }
}

谢谢您、
恶劣