mirror of
https://github.com/skot/ESP-Miner.git
synced 2025-04-09 20:39:14 +02:00
create dedicated conversion functions
This commit is contained in:
parent
628d3ac3de
commit
c1b031ab36
@ -40,14 +40,16 @@ esp_err_t smb_read_byte(uint8_t command, uint8_t *data)
|
||||
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
|
||||
i2c_cmd_link_delete(cmd);
|
||||
|
||||
// TODO get an actual error status
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SMBus read word
|
||||
*/
|
||||
esp_err_t smb_read_word(uint8_t command, uint8_t *data)
|
||||
esp_err_t smb_read_word(uint8_t command, uint16_t *result)
|
||||
{
|
||||
uint8_t data[2];
|
||||
esp_err_t err = ESP_FAIL;
|
||||
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
@ -62,6 +64,8 @@ esp_err_t smb_read_word(uint8_t command, uint8_t *data)
|
||||
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
|
||||
i2c_cmd_link_delete(cmd);
|
||||
|
||||
*result = (data[1] << 8) + data[0];
|
||||
// TODO get an actual error status
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -91,6 +95,7 @@ static esp_err_t smb_read_block(uint8_t command, uint8_t * data, uint8_t len)
|
||||
ESP_ERROR_CHECK(i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, SMBUS_DEFAULT_TIMEOUT));
|
||||
i2c_cmd_link_delete(cmd);
|
||||
|
||||
// TODO get an actual error status
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -102,6 +107,8 @@ void TPS546_init(void)
|
||||
uint16_t u16_value;
|
||||
float temp;
|
||||
int mantissa, exponent;
|
||||
int millivolts;
|
||||
float iout;
|
||||
|
||||
ESP_LOGI(TAG, "Initializing the core voltage regulator");
|
||||
|
||||
@ -114,39 +121,27 @@ void TPS546_init(void)
|
||||
|
||||
/* Get temperature (SLINEAR11) */
|
||||
ESP_LOGI(TAG, "--------------------------------");
|
||||
smb_read_word(PMBUS_READ_TEMPERATURE_1, data);
|
||||
u16_value = (data[1] << 8) + data[0];
|
||||
ESP_LOGI(TAG, "Temperature raw: %04x", u16_value);
|
||||
if (u16_value & 0x400) {
|
||||
// mantissa is negative
|
||||
mantissa = -1 * ((~u16_value & 0x07FF) + 1);
|
||||
} else {
|
||||
mantissa = (u16_value & 0x07FF);
|
||||
}
|
||||
if (u16_value & 0x8000) {
|
||||
// exponent is negative
|
||||
exponent = -1 * (((~u16_value >> 11) & 0x001F) + 1);
|
||||
} else {
|
||||
exponent = (u16_value >> 11);
|
||||
}
|
||||
ESP_LOGI(TAG, "exp: %04x, mant: %04x", exponent, mantissa);
|
||||
temp = mantissa * powf(2.0, exponent);
|
||||
smb_read_word(PMBUS_READ_TEMPERATURE_1, &u16_value);
|
||||
temp = slinear11_2_float(u16_value);
|
||||
ESP_LOGI(TAG, "Temp: %2.1f", temp);
|
||||
|
||||
/* Get voltage setting (ULINEAR16) */
|
||||
ESP_LOGI(TAG, "--------------------------------");
|
||||
smb_read_byte(PMBUS_VOUT_MODE, &u8_value);
|
||||
//ESP_LOGI(TAG, "VOUT mode: %02x", u8_value);
|
||||
float mode_exponent = -1 * ((~u8_value & 0x1F) + 1);
|
||||
//ESP_LOGI(TAG, "mode_exponent: %f", mode_exponent);
|
||||
smb_read_word(PMBUS_VOUT_COMMAND, &u16_value);
|
||||
millivolts = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout set to: %d mV", millivolts);
|
||||
|
||||
smb_read_word(PMBUS_VOUT_COMMAND, data);
|
||||
u16_value = (data[1] << 8) + data[0];
|
||||
//ESP_LOGI(TAG, "VOUT: %d", u16_value);
|
||||
float scaler = powf(2.0, mode_exponent);
|
||||
//ESP_LOGI(TAG, "scaler: %f", scaler);
|
||||
int voltage = (u16_value * scaler) * 1000;
|
||||
ESP_LOGI(TAG, "Vout: %d mV", voltage);
|
||||
/* Get voltage output (ULINEAR16) */
|
||||
// ESP_LOGI(TAG, "--------------------------------");
|
||||
// smb_read_word(PMBUS_READ_VOUT, &u16_value);
|
||||
// millivolts = ulinear16_2_int(u16_value);
|
||||
// ESP_LOGI(TAG, "Vout measured: %d mV", millivolts);
|
||||
|
||||
/* Get output current (SLINEAR11) */
|
||||
ESP_LOGI(TAG, "--------------------------------");
|
||||
smb_read_word(PMBUS_READ_IOUT, &u16_value);
|
||||
iout = slinear11_2_float(u16_value);
|
||||
ESP_LOGI(TAG, "Iout measured: %2.2f", iout);
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user