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