Skip to content

Commit

Permalink
added i2c_bitaxe_register_write_addr for CLEAR_FAULTS
Browse files Browse the repository at this point in the history
  • Loading branch information
skot committed Feb 4, 2025
1 parent bb88036 commit 51b9762
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 3 deletions.
18 changes: 15 additions & 3 deletions main/TPS546.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,15 @@ static esp_err_t smb_write_byte(uint8_t command, uint8_t data)
return i2c_bitaxe_register_write_byte(tps546_dev_handle, command, data);
}

/**
* @brief SMBus write addr
* @param command The command to write
*/
static esp_err_t smb_write_addr(uint8_t command)
{
return i2c_bitaxe_register_write_addr(tps546_dev_handle, command);
}

/**
* @brief SMBus read word
* @param command The command to read
Expand Down Expand Up @@ -355,8 +364,6 @@ int TPS546_init(void)
/* Read version number and see if it matches */
TPS546_read_mfr_info(read_mfr_revision);
// if (memcmp(read_mfr_revision, MFR_REVISION, 3) != 0) {

TPS546_clear_faults();

// If it doesn't match, then write all the registers and set new version number
// ESP_LOGI(TAG, "--------------------------------");
Expand Down Expand Up @@ -423,11 +430,16 @@ int TPS546_init(void)
ESP_LOGI(TAG, "%02x %02x %02x %02x %02x", comp_config[0], comp_config[1],
comp_config[2], comp_config[3], comp_config[4]);


ESP_LOGI(TAG, "Clearing faults");
TPS546_clear_faults();

return 0;
}

esp_err_t TPS546_clear_faults(void) {
if (smb_write_byte(PMBUS_CLEAR_FAULTS, 0xFF) != ESP_OK) {
// if (smb_write_byte(PMBUS_CLEAR_FAULTS, 0xFF) != ESP_OK) {
if (smb_write_addr(PMBUS_CLEAR_FAULTS) != ESP_OK) {
ESP_LOGE(TAG, "Failed to clear faults");
return ESP_FAIL;
}
Expand Down
12 changes: 12 additions & 0 deletions main/i2c_bitaxe.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,18 @@ esp_err_t i2c_bitaxe_register_read(i2c_master_dev_handle_t dev_handle, uint8_t r
return log_on_error(i2c_master_transmit_receive(dev_handle, &reg_addr, 1, read_buf, len, I2C_DEFAULT_TIMEOUT), dev_handle);
}

/**
* @brief Just write a register address to the I2C device
*
* @param dev_handle
* @param reg_addr
* @return esp_err_t
*/
esp_err_t i2c_bitaxe_register_write_addr(i2c_master_dev_handle_t dev_handle, uint8_t reg_addr)
{
return log_on_error(i2c_master_transmit(dev_handle, &reg_addr, 1, I2C_DEFAULT_TIMEOUT), dev_handle);
}

/**
* @brief Write a byte to a I2C register
* @param dev_handle The I2C device handle
Expand Down
1 change: 1 addition & 0 deletions main/i2c_bitaxe.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ esp_err_t i2c_bitaxe_register_read(i2c_master_dev_handle_t dev_handle, uint8_t r
esp_err_t i2c_bitaxe_register_write_byte(i2c_master_dev_handle_t dev_handle, uint8_t reg_addr, uint8_t data);
esp_err_t i2c_bitaxe_register_write_bytes(i2c_master_dev_handle_t dev_handle, uint8_t * data, uint8_t len);
esp_err_t i2c_bitaxe_register_write_word(i2c_master_dev_handle_t dev_handle, uint8_t reg_addr, uint16_t data);
esp_err_t i2c_bitaxe_register_write_addr(i2c_master_dev_handle_t dev_handle, uint8_t reg_addr);

#endif /* I2C_MASTER_H_ */
6 changes: 6 additions & 0 deletions main/tasks/power_management_task.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ void POWER_MANAGEMENT_task(void * pvParameters)
vTaskDelay(500 / portTICK_PERIOD_MS);
uint16_t last_core_voltage = 0.0;
uint16_t last_asic_frequency = power_management->frequency_value;
uint16_t TPS546_status;

while (1) {

Expand All @@ -147,6 +148,11 @@ void POWER_MANAGEMENT_task(void * pvParameters)

break;
case DEVICE_GAMMA:
TPS546_check_status(&TPS546_status);
if (TPS546_status != 0) {
ESP_LOGE(TAG, "TPS546 Status error: %04x", TPS546_status);
TPS546_parse_status(TPS546_status);
}
power_management->voltage = TPS546_get_vin() * 1000;
power_management->current = TPS546_get_iout() * 1000;
// calculate regulator power (in milliwatts)
Expand Down

0 comments on commit 51b9762

Please sign in to comment.