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.

[参考译文] TPS55288:TPS55288不工作

Guru**** 2442090 points
Other Parts Discussed in Thread: TPS55288, TPS552882

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1062036/tps55288-tps55288-not-working

器件型号:TPS55288

尊敬的专家:

我设计的原理图基于 TPS55288、但它不起作用。

TPS55288 总线上的地址为0x74。 但是 、我无法使用正确的值写入或读取寄存器。

TPS55288不提供输出电压、但引脚19 VCC 为5.1V。

请详细查看附件文件。

原理图

终端

和源代码:

#define BUCK_BOOST_ADDR					0x74

#define BUCK_BOOST_REF_LSB				0x00
#define BUCK_BOOST_REF_MSB				0x01
#define BUCK_BOOST_IOUT_LIMIT			0x02
#define BUCK_BOOST_VOUT_SR				0x03
#define BUCK_BOOST_VOUT_FS				0x04
#define BUCK_BOOST_CDC					0x05
#define BUCK_BOOST_MODE					0x06
#define BUCK_BOOST_STATUS				0x07

void buck_boost_converter_run(void) {
	uint8_t Buffer[128] = { 0 };
	uint8_t reg_addr;
	uint8_t reg_value;

	uint8_t reg_vref_lsb;
	uint8_t reg_vref_msb;
	uint8_t reg_iout_limit;
	uint8_t reg_vout_sr;
	uint8_t reg_vout_fs;
	uint8_t reg_cdc;
	uint8_t reg_mode;
	uint8_t reg_status;

	// Write the configure
	// VREF = 1200mV
	reg_addr = BUCK_BOOST_REF_LSB;
	reg_value = 0xC6;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_REF_MSB;
	reg_value = 0x02;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	// Iout limit 5A
	reg_addr = BUCK_BOOST_IOUT_LIMIT;
	reg_value = 0xE4;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	// Slew 128us
	reg_addr = BUCK_BOOST_VOUT_SR;
	reg_value = 0x01;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	// FB use external resistor divider
	reg_addr = BUCK_BOOST_VOUT_FS;
	reg_value = 0x83;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	// CDC default
	reg_addr = BUCK_BOOST_CDC;
	reg_value = 0xE0;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_MODE;
	reg_value = 0xA0;
	HAL_I2C_Mem_Write(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_value, 1,
			1000);
	HAL_Delay(100);

	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Write all register Buck-Boost\r\n");
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 10000);


	// Read configure
	reg_addr = BUCK_BOOST_REF_LSB;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_vref_lsb, 1,
			1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register VREF_LSB\r\n", reg_vref_lsb);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_REF_MSB;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_vref_msb, 1,
			1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register VREF_MSB\r\n", reg_vref_msb);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);


	reg_addr = BUCK_BOOST_IOUT_LIMIT;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_iout_limit, 1,
			1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register IOUT_LIMIT\r\n",
			reg_iout_limit);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_VOUT_SR;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_vout_sr, 1,
			1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register VOUT_SR\r\n", reg_vout_sr);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_VOUT_FS;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_vout_fs, 1,
			1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register VOUT_FS\r\n", reg_vout_fs);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_CDC;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_cdc, 1, 1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register CDC\r\n", reg_cdc);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_MODE;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_mode, 1, 1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register MODE\r\n", reg_mode);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 1000);
	HAL_Delay(100);

	reg_addr = BUCK_BOOST_STATUS;
	HAL_I2C_Mem_Read(&hi2c1, BUCK_BOOST_ADDR, reg_addr, 1, &reg_status, 1,
			1000);
	memset(Buffer, 0, sizeof(Buffer));
	sprintf(Buffer, "Read Data: 0x%X from register STATUS\r\n", reg_status);
	HAL_UART_Transmit(&huart2, Buffer, sizeof(Buffer), 10000);

}

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

    尊敬的 Kevin:

    请确保您使用的是 TPS55288而不是 TPS552882。 TPS552882 (非 I2C 版本)是 TPS55288 (I2C 版本)的引脚2引脚。

    您是否已检查 SCL、SDA 上拉电压为3.3V?  

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

    我将 TPS55288RPMR 与 SDA/SCL 上拉3.3V 电阻配合使用。

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

    尊敬的 Kevin:

    您能否检查 MODE 引脚电阻是否为6.19k Ω?

    您可以使用 I2C 读取 IC 默认寄存器值吗?  

    另请共享布局。