请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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, ®Val) == 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); } }
谢谢您、
恶劣