Tool/software:
Hi expert,
My customer would like to adjust the UVP setting of UCD3138RJA. Can you please comment how to adjust the UVP setting thru the PMBus?
Best regards,
Randy
Tool/software:
Hi expert,
My customer would like to adjust the UVP setting of UCD3138RJA. Can you please comment how to adjust the UVP setting thru the PMBus?
Best regards,
Randy
Hello Randy,
I will provide a response by Friday.
Regards,
Jonathan Wong
Hello Colin,
Do you want to change the UV in the Fusion GUI or the PMBus code? Changing the UV threshold in the Fusion GUI is fairly straightforward.
If you want to change how the UV handling is done in the UCD3138, then you can go to pmbus_topology.c to see how the UCD3138 will respond to a UV command. For example, if the Fusion GUI or some PMBus controller sends the 0x44 pmbus command (defined as VOUT_UV_FAULT_LIMIT per the PMBus spec), then the UCD3138 will execute the pmbus_read_write_vout_uv_fault_limit() function. If you want to change what the UCD3138 will do in response to this command, then you can do so here.
Below is a snippet of the code related to the UV Fault in the UCD3138 LLC code, as an example. The below is located in pmbus_topology.c.
//UV Fault inline Uint8 pmbus_write_vout_uv_fault_limit(void) { pmbus_dcdc_config[0].vout_uv_fault_limit = pmbus_buffer[1] + (pmbus_buffer[2] << 8); configure_fault_levels(); return PMBUS_SUCCESS; } inline Uint8 pmbus_read_vout_uv_fault_limit(void) { pmbus_read_two_byte_handler(pmbus_dcdc_config[0].vout_uv_fault_limit); return PMBUS_SUCCESS; } Uint8 pmbus_read_write_vout_uv_fault_limit(Uint8 pmbus_read) { if(pmbus_read) return pmbus_read_vout_uv_fault_limit(); else return pmbus_write_vout_uv_fault_limit(); } //UV fault response inline pmbus_read_vout_uv_fault_response(void) { pmbus_read_one_byte_handler(pmbus_dcdc_config[0].vout_uv_fault_response); return PMBUS_SUCCESS; } inline pmbus_write_vout_uv_fault_response(void) { pmbus_dcdc_config[0].vout_uv_warn_limit= pmbus_buffer[1]; return PMBUS_SUCCESS; } Uint8 pmbus_read_write_vout_uv_fault_response(Uint8 pmbus_read) { if(pmbus_read) return pmbus_read_vout_uv_fault_response(); else return pmbus_write_vout_uv_fault_response(); } //UV Warn inline Uint8 pmbus_write_vout_uv_warn_limit(void) { pmbus_dcdc_config[0].vout_uv_warn_limit = pmbus_buffer[1] + (pmbus_buffer[2] << 8); configure_warning_levels(); return PMBUS_SUCCESS; } inline Uint8 pmbus_read_vout_uv_warn_limit(void) { pmbus_read_two_byte_handler(pmbus_dcdc_config[0].vout_uv_warn_limit); return PMBUS_SUCCESS; } Uint8 pmbus_read_write_vout_uv_warn_limit(Uint8 pmbus_read) { if(pmbus_read) return pmbus_read_vout_uv_warn_limit(); else return pmbus_write_vout_uv_warn_limit(); }
Regards,
Jonathan Wong