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