This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

UCD3138: Checksum read error

Part Number: UCD3138

Tool/software:

Hello, everyone. I have a question I hope you can help me with. I wrote the checksum in the following way, but the program could not be powered on and started, I executed 0xD6 instruction, unexpected numbers appeared. May I ask you what the problem is? Thank you very much.

  • Every time I go back to rom mode, will the checksum be cleared? If so, how can I get the program to power on and start up?

  • Hello,

    Yes, if choose to go to ROM mode, then the checksum will be cleared and the UCD3138 will jump to ROM mode. If you want the program to execute immediately after startup, then use the "Write program checksum" option. 

    Your second screenshot shows the UCD3138 responding to the DEVICE_ID pmbus command. That means that your UCD3138 is correctly executing its program flash.

    Regards,

    Jonathan Wong

  • Thank you for your reply. I have another problem. If the program runs correctly, UCD3138 will respond to the DEVICE_ID pmbus command. Conversely, if UCD3138 does not respond to the DEVICE_ID pmbus command,it means the program is not running?

    If the program executes "pmbus_read_write_rom_mode(PMBUS_WRITE)"(backdoor), does it automatically jump to rom mode and does not execute the program?

    I will now ground the FAULT0 pin and download the program, unchecked to run the situation below. You can find that the program has been downloaded successfully but has not been executed. If execution at this time triggers later, the result is no DEVICE_ID.

    If the following conditions occur.

    If No PMBus devices responded to a DEVICE_ID request, is the backdoor of the program triggered? Is there any other situation where the program is downloaded successfully but no DEVICE_ID is available?

    	if((MiscAnalogRegs.GLBIOREAD.bit.FAULT0_IO_READ == 0) || (PMBusRegs.PMBCTRL1.bit.SLAVE_ADDR == 0x7e))//0x7e
    	{
    		pmbus_read_write_rom_mode(PMBUS_WRITE);
    	}

  • Hello,

    Yes, if you have the hardware backdoor enabled, then the first code that gets executed is a "jump to ROM mode" code. Thus, it will never reach the pmbus_handler() and respond to the DEVICE_ID request. It will appear that the UCD3138 is only in ROM mode.

    Regards,

    Jonathan Wong

  • Thank you very much