Skip to content

Commit

Permalink
increase I2C timeout value for long operations
Browse files Browse the repository at this point in the history
  • Loading branch information
macphyter committed Feb 9, 2024
1 parent f21b0b2 commit a246efd
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions main/TPS546.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ static esp_err_t smb_read_byte(uint8_t command, uint8_t *data)
i2c_master_write_byte(cmd, TPS546_I2CADDR << 1 | READ_BIT, ACK_CHECK);
i2c_master_read_byte(cmd, data, NACK_VALUE);
i2c_master_stop(cmd);
i2c_set_timeout(I2C_MASTER_NUM, 20);
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
i2c_cmd_link_delete(cmd);

Expand Down Expand Up @@ -96,6 +97,7 @@ static esp_err_t smb_read_word(uint8_t command, uint16_t *result)
i2c_master_read(cmd, &data[0], 1, ACK_VALUE);
i2c_master_read_byte(cmd, &data[1], NACK_VALUE);
i2c_master_stop(cmd);
i2c_set_timeout(I2C_MASTER_NUM, 20);
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
i2c_cmd_link_delete(cmd);

Expand Down Expand Up @@ -148,6 +150,7 @@ static esp_err_t smb_read_block(uint8_t command, uint8_t *data, uint8_t len)
}
i2c_master_read_byte(cmd, &data[slave_len - 1], NACK_VALUE);
i2c_master_stop(cmd);
i2c_set_timeout(I2C_MASTER_NUM, 20);
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
i2c_cmd_link_delete(cmd);

Expand All @@ -170,6 +173,7 @@ static esp_err_t smb_write_block(uint8_t command, uint8_t *data, uint8_t len)
i2c_master_write_byte(cmd, data[i], ACK_CHECK);
}
i2c_master_stop(cmd);
i2c_set_timeout(I2C_MASTER_NUM, 20);
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
i2c_cmd_link_delete(cmd);

Expand Down Expand Up @@ -437,9 +441,10 @@ int TPS546_init(void)

/* Get voltage output (ULINEAR16) */
// This gets a timeout, don't know why. clock stretching?
// smb_read_word(PMBUS_READ_VOUT, &u16_value);
// vout = ulinear16_2_float(u16_value);
// ESP_LOGI(TAG, "Vout measured: %2.3f V", vout);
// Should take about 91 uS
smb_read_word(PMBUS_READ_VOUT, &u16_value);
vout = ulinear16_2_float(u16_value);
ESP_LOGI(TAG, "Vout measured: %2.3f V", vout);

ESP_LOGI(TAG, "-----------TIMING---------------------");
smb_read_word(PMBUS_TON_DELAY, &u16_value);
Expand Down

0 comments on commit a246efd

Please sign in to comment.