mirror of
https://github.com/skot/ESP-Miner.git
synced 2025-04-10 12:59:25 +02:00
create data structure to hold TPS546 settings
This commit is contained in:
parent
da126941d8
commit
253a968c2f
114
main/TPS546.c
114
main/TPS546.c
@ -199,8 +199,10 @@ void TPS546_init(void)
|
||||
uint8_t data[6];
|
||||
uint8_t u8_value;
|
||||
uint16_t u16_value;
|
||||
int i_value;
|
||||
int millivolts;
|
||||
int vmax;
|
||||
float f_value;
|
||||
float iout;
|
||||
|
||||
ESP_LOGI(TAG, "Initializing the core voltage regulator");
|
||||
@ -212,34 +214,34 @@ void TPS546_init(void)
|
||||
smb_read_byte(PMBUS_REVISION, &u8_value);
|
||||
ESP_LOGI(TAG, "PMBus revision: %02x", u8_value);
|
||||
|
||||
/* Get temperature (SLINEAR11) */
|
||||
|
||||
/* Show temperature (SLINEAR11) */
|
||||
ESP_LOGI(TAG, "--------------------------------");
|
||||
ESP_LOGI(TAG, "Temp: %d", TPS546_get_temperature());
|
||||
|
||||
/* Get voltage setting (ULINEAR16) */
|
||||
ESP_LOGI(TAG, "--------------------------------");
|
||||
smb_read_word(PMBUS_VOUT_COMMAND, &u16_value);
|
||||
ESP_LOGI(TAG, "VOUT_COMMAND: %04x", u16_value);
|
||||
millivolts = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout set to: %d mV", millivolts);
|
||||
|
||||
u16_value = int_2_ulinear16(millivolts);
|
||||
ESP_LOGI(TAG, "Converted back: %04x", u16_value);
|
||||
/* Show voltage settings */
|
||||
TPS546_show_voltage_settings();
|
||||
|
||||
/* Test changing value */
|
||||
// u16_value = int_2_ulinear16(1300);
|
||||
// smb_write_word(PMBUS_VOUT_MAX, u16_value);
|
||||
// ESP_LOGI(TAG, "Vout Max changed to 1300");
|
||||
|
||||
// smb_read_word(PMBUS_VOUT_MAX, &u16_value);
|
||||
// ESP_LOGI(TAG, "VOUT_MAX: %04x", u16_value);
|
||||
// vmax = ulinear16_2_int(u16_value);
|
||||
// ESP_LOGI(TAG, "Vout Max set to: %d mV", vmax);
|
||||
|
||||
ESP_LOGI(TAG, "-----------CURRENT---------------------");
|
||||
|
||||
/* Get output current (SLINEAR11) */
|
||||
smb_read_word(PMBUS_READ_IOUT, &u16_value);
|
||||
iout = slinear11_2_float(u16_value);
|
||||
ESP_LOGI(TAG, "Iout measured: %2.2f", iout);
|
||||
|
||||
ESP_LOGI(TAG, "--------------------------------");
|
||||
smb_read_word(PMBUS_VOUT_MAX, &u16_value);
|
||||
ESP_LOGI(TAG, "VOUT_MAX: %04x", u16_value);
|
||||
vmax = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout Max set to: %d mV", vmax);
|
||||
|
||||
u16_value = int_2_ulinear16(1300);
|
||||
smb_write_word(PMBUS_VOUT_MAX, u16_value);
|
||||
ESP_LOGI(TAG, "Vout Max changed to 1300");
|
||||
|
||||
smb_read_word(PMBUS_VOUT_MAX, &u16_value);
|
||||
ESP_LOGI(TAG, "VOUT_MAX: %04x", u16_value);
|
||||
vmax = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout Max set to: %d mV", vmax);
|
||||
|
||||
/* Get voltage output (ULINEAR16) */
|
||||
// This gets a timeout, don't know why. clock stretching?
|
||||
@ -248,12 +250,6 @@ void TPS546_init(void)
|
||||
// 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);
|
||||
|
||||
}
|
||||
|
||||
int TPS546_get_temperature(void)
|
||||
@ -275,5 +271,69 @@ void TPS546_set_vout(int millivolts)
|
||||
ESP_LOGI(TAG, "Vout changed to %d mV", millivolts);
|
||||
}
|
||||
|
||||
void TPS546_show_voltage_settings(void)
|
||||
{
|
||||
uint16_t u16_value;
|
||||
int i_value;
|
||||
float f_value;
|
||||
int millivolts;
|
||||
|
||||
ESP_LOGI(TAG, "-----------VOLTAGE---------------------");
|
||||
/* VIN_ON SLINEAR11 */
|
||||
smb_read_word(PMBUS_VIN_ON, &u16_value);
|
||||
f_value = slinear11_2_float(u16_value);
|
||||
ESP_LOGI(TAG, "VIN ON set to: %f", f_value);
|
||||
|
||||
/* VIN_OFF SLINEAR11 */
|
||||
smb_read_word(PMBUS_VIN_OFF, &u16_value);
|
||||
f_value = slinear11_2_float(u16_value);
|
||||
ESP_LOGI(TAG, "VIN OFF set to: %f", f_value);
|
||||
|
||||
/* VOUT_MAX */
|
||||
smb_read_word(PMBUS_VOUT_MAX, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout Max set to: %d mV", i_value);
|
||||
|
||||
/* VOUT_OV_FAULT_LIMIT */
|
||||
smb_read_word(PMBUS_VOUT_OV_FAULT_LIMIT, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout OV Fault Limit: %d mV", i_value);
|
||||
|
||||
/* VOUT_OV_WARN_LIMIT */
|
||||
smb_read_word(PMBUS_VOUT_OV_WARN_LIMIT, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout OV Warn Limit: %d mV", i_value);
|
||||
|
||||
/* VOUT_MARGIN_HIGH */
|
||||
smb_read_word(PMBUS_VOUT_MARGIN_HIGH, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout Margin HIGH: %d mV", i_value);
|
||||
|
||||
/* --- VOUT_COMMAND --- */
|
||||
smb_read_word(PMBUS_VOUT_COMMAND, &u16_value);
|
||||
millivolts = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout set to: %d mV", millivolts);
|
||||
//u16_value = int_2_ulinear16(millivolts);
|
||||
//ESP_LOGI(TAG, "Converted back: %04x", u16_value);
|
||||
|
||||
/* VOUT_MARGIN_LOW */
|
||||
smb_read_word(PMBUS_VOUT_MARGIN_LOW, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout Margin LOW: %d mV", i_value);
|
||||
|
||||
/* VOUT_UV_WARN_LIMIT */
|
||||
smb_read_word(PMBUS_VOUT_UV_WARN_LIMIT, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout UV Warn Limit: %d mV", i_value);
|
||||
|
||||
/* VOUT_UV_FAULT_LIMIT */
|
||||
smb_read_word(PMBUS_VOUT_UV_FAULT_LIMIT, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout UV Fault Limit: %d mV", i_value);
|
||||
|
||||
/* VOUT_MIN */
|
||||
smb_read_word(PMBUS_VOUT_MIN, &u16_value);
|
||||
i_value = ulinear16_2_int(u16_value);
|
||||
ESP_LOGI(TAG, "Vout Min set to: %d mV", i_value);
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,60 @@
|
||||
#ifndef TPS546_H_
|
||||
#define TPS546_H_
|
||||
|
||||
#define TPS546_I2CADDR 0x24 ///< TPS546 i2c address
|
||||
#define TPS546_MANUFACTURER_ID 0xFE ///< Manufacturer ID
|
||||
#define TPS546_REVISION 0xFF ///< Chip revision
|
||||
#define TPS546_I2CADDR 0x24 //< TPS546 i2c address
|
||||
#define TPS546_MANUFACTURER_ID 0xFE //< Manufacturer ID
|
||||
#define TPS546_REVISION 0xFF //< Chip revision
|
||||
|
||||
struct tps546_settings_t
|
||||
{
|
||||
int switch_frequency;
|
||||
|
||||
/* vin voltage */
|
||||
int vin_on; /* voltage level to start power conversion */
|
||||
int vin_off; /* voltage level to stop power conversion */
|
||||
int vin_uv_warn_limit;
|
||||
int vin_ov_fault_limit;
|
||||
int vin_ov_fault_response;
|
||||
|
||||
/* vout voltage */
|
||||
int vout_transition_rate;
|
||||
int vout_scale_loop;
|
||||
int vout_trim;
|
||||
int vout_max;
|
||||
int vout_ov_fault_limit;
|
||||
int vout_ov_warn_limit;
|
||||
int vout_margin_high;
|
||||
int vout_command;
|
||||
int vout_margin_low;
|
||||
int vout_uv_warn_limit;
|
||||
int vout_uv_fault_limit;
|
||||
int vout_min;
|
||||
|
||||
/* iout current */
|
||||
int iout_oc_warn_limit;
|
||||
int iout_oc_fault_limit;
|
||||
int iout_oc_fault_response;
|
||||
int iout_cal_gain;
|
||||
int iout_cal_offset;
|
||||
|
||||
/* temperature */
|
||||
int ot_warn_limit;
|
||||
int ot_fault_limit;
|
||||
int ot_fault_response;
|
||||
|
||||
/* timing */
|
||||
int ton_delay;
|
||||
int ton_rise;
|
||||
int ton_max_fault_limit;
|
||||
int ton_max_fault_response;
|
||||
int toff_delay;
|
||||
int toff_fall;
|
||||
|
||||
};
|
||||
|
||||
void TPS546_init(void);
|
||||
int TPS546_get_temperature(void);
|
||||
void TPS546_set_vout(int millivolts);
|
||||
void TPS546_show_voltage_settings(void);
|
||||
|
||||
#endif /* TPS546_H_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user