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.

UCD3xxx系列芯片, 如何操作内部的DFlash!!

Other Parts Discussed in Thread: UCD3028

大家好!

我想问下, 如何对UCD3xxx系列芯片的内部DFlash进行操作!

我司有电源使用该系列芯片, 在生产过程中, 发现有些参数由于器件离散性比较大, 造成某些指标不合适,

比如VIN过,欠压保护点, 不合格!

想通过在生产过程中, 通过软件调整到合格范围, 但不是很清楚, 该芯片内部对DFlash的操作,

所以, 请高手指点一下!

最好详细些! 或者有pdf文件最好!

先谢过!!

  • 我看到TI操作DFlash的程序是:

    1. 定义

    //初始化存储在DFlahs中存储的ADC采样结构体的常量值为0
    #pragma DATA_SECTION(threshold_constants_dflash,".dflash")
    const    struct    ADC_VALUES_STRUCT_SIGNED    threshold_constants_dflash =
    {
        //LDG700模块代码
        0,    // Sint32 isec;                    //adc采样值:iout,     RESULT0~AD02;
        0,    // Sint32 temp_sense;    //adc采样值:基板温度,RESULT1~AD03;
        0,    // Sint32 vin;                      //adc采样值:Vin,     RESULT2~AD04;
        0,    // Sint32 VO;                      //adc采样值:Vout,     RESULT3~AD05;
        0,    // Sint32 device_temp;    //adc采样值:芯片温度,RESULT4~AD15;
        0,    // Sint32 ishare_mon;     //adc采样值:跟踪电压,RESULT6~AD07
        0,    // Sint32 trim;                    //adc采样值:Trim电压,RESULT7~AD08
        0,    // Sint32 tracking;             //adc采样值:均流电压,RESULT5~AD06
        0,    // Sint32 power_out;        //计算值   :输出功率=Vout*Iout
        0,    // Sint32 current_temp;   //adc采样值:电流温度
        0     // Sint32 i_pri_a;               //adc采样值:原边电流
    };

     

    2. 相应的头文件定义: 

        extern    struct    ADC_VALUES_STRUCT_SIGNED    threshold_constants_dflash;

     

    3. 相应的.cmd文件中有

        .dflash  : {} > (DFLASH align(32))

    4. 结果是:

    对Dflash进行设置的, 然后在项目的.out文件中会出现相应的链接:

       ".\debug\LDG700.out"   ==> .dflash

     

    我照猫画虎进行如下定义:

    1. 定义

    #pragma DATA_SECTION(PMBus_CMD, ".dflash")
    PMBUS_CMD    PMBus_CMD =
    {
        //PMBus_Std_CMD
        {
            //PMBus_config
            {
                //PMBUS_CTRL_CMD
                {
                    0,                    //page                    : 0x00
                    HARD_OFF,            //operation                : 0x01
                    PWR_ON_DIRECT,        //on_off_config            : 0x02
                    NO_WRITE_PROTECTION    //write protect            : 0x03
                },

                //PMBUS_VOUT_CONFIG_CMD
                {
                    0,                    //VOUT_MODE                : 0x20
                    0,                    //VOUT_COMMAND            : 0x21
                    0,                    //VOUT_TRIM                : 0x22
                    0,                    //VOUT_CAL_OFFSET        : 0x23
                    0,                    //VOUT_MAX                : 0x24
                    0,                    //VOUT_MARGIN_HIGH        : 0x25
                    0,                    //VOUT_MARGIN_LOW        : 0x26
                    0,                    //VOUT_TRANSITION_RATE    : 0x27
                    0,                    //VOUT_DROOP            : 0x28
                    0                    //VOUT_SCALE_LOOP        : 0x29
                },

                //PMBUS_MODEL_CONFIG_CMD
                {
                    0,                    //COEFFICIENTS            : 0x30
                    0,                    //POUT_MAX                : 0x31
                    0,                    //MAX_DUTY                : 0x32
                    0,                    //FERQUENCE_SWITCH        : 0x33
                    0,                    //VI_ON                    : 0x35
                    0,                    //VI_OFF                : 0x36
                    0,                    //INTERLEAVE            : 0x37

                    0,                    //TON_DELAY                : 0x60
                    0,                    //TON_RISE                : 0x61
                    0,                    //TON_MAX_FAULT_LIMIT    : 0x62
                    0,                    //TON_MAX_FAULT_RESPONSE: 0x63
                    0,                    //TOFF_DELAY            : 0x64
                    0                    //TOFF_FALL                : 0x65
                },

                //PMBUS_IOUT_CONFIG_CMD
                {
                    0,                    //IOUT_CAL_GAIN            : 0x38
                    0                    //IOUT_CAL_OFFSET        : 0x39
                }
            },

            //PMBus_fault
            {
                //PMBUS_VOUT_FAULT_CMD
                {
                    0,                    //VOUT_OV_FAULT_LIMIT    : 0x40
                    0,                    //VOUT_OV_FAULT_RESPONSE: 0x41
                    0,                    //VOUT_OV_WARN_LIMIT    : 0x42
                    0,                    //VOUT_UV_WARN_LIMIT    : 0x43
                    0,                    //VOUT_UV_FAULT_LIMIT    : 0x44
                    0                    //VOUT_UV_FAULT_RESPONSE: 0x45
                },

                //PMBUS_IOUT_FAULT_CMD
                {
                    0,                    //IOUT_OC_FAULT_LIMIT    : 0x46
                    0,                    //IOUT_OC_FAULT_RESPONSE: 0x47
                    0,                    //IOUT_OC_WARN_LIMIT    : 0x48
                    0,                    //IOUT_OC_LV_FAULT_LIMIT: 0x49
                    0,                    //IOUT_OC_LV_FAULT_RESPONSE    : 0x4A
                    0,                    //IOUT_UC_FAULT_LIMIT    : 0x4B
                    0                    //IOUT_UC_FAULT_RESPONSE: 0x4C
                },

                //PMBUS_TEMP_FAULT_CMD
                {
                    0,                    //OT_FAULT_LIMIT        : 0x4F
                    0,                    //OT_FAULT_RESPONSE        : 0x50
                    0,                    //OT_WARN_LIMIT            : 0x51
                    0,                    //UT_WARN_LIMIT            : 0x52
                    0,                    //UT_FAULT_LIMIT        : 0x53
                    0                    //UT_FAULT_RESPONSE        : 0x54
                },

                //PMBUS_MODEL_FAULT_CMD
                {
                    0,                    //VIN_OV_FAULT_LIMIT    : 0x55
                    0,                    //VIN_OV_FAULT_RESPONSE    : 0x56
                    0,                    //VIN_OV_WARN_LIMIT        : 0x57
                    0,                    //VIN_UV_WARN_LIMIT        : 0x58
                    0,                    //VIN_UV_FAULT_LIMIT    : 0x59
                    0,                    //VIN_UV_FAULT_RESPONSE    : 0x5A
                    0,                    //IIN_OC_FAULT_LIMIT    : 0x5B
                    0,                    //IIN_OC_FAULT_RESPONSE    : 0x5C
                    0,                    //IIN_OC_WARN_LIMIT        : 0x5D
                    0,                    //POWER_GOOD            : 0x5E
                    0,                    //POWER_GOOD_OFF        : 0x5F
                    0,                    //TOFF_MAX_WARN_LIMIT    : 0x66
                    0,                    //POUT_OP_FAULT_LIMIT    : 0x67
                    0,                    //POUT_OP_FAULT_RESPONSE: 0x68
                    0,                    //POUT_OP_WARN_LIMIT    : 0x69
                    0                    //PIN_OP_WARN_LIMIT        : 0x6A
                }
            },

            //PMBus_status
            {
                0,                        //STATUS_BYTES            : 0X78
                0,                        //STATUS_WORD            : 0x79
                0,                        //STATUS_VOUT            : 0X7A
                0,                        //STATUS_IOUT            : 0x7B
                0,                        //STATUS_INPUT            : 0X7C
                0,                        //STATUS_TEMP            : 0x7D
                0,                        //STATUS_CML            : 0X7E
                0,                        //STATUS_OTHER            : 0x7F
                0                        //STATUS_MFR_SPECIFIC    : 0x80
            },

            //PMBus_read
            {
                0,                        //Vin                    : 0x88
                0,                        //Iin                    : 0x89
                0,                        //VCAP                    : 0x8A
                0,                        //Vout                    : 0x8B
                0,                        //Iout                    : 0x8C
                0,                        //Temp1                    : 0x8D
                0,                        //Temp2                    : 0x8E
                0,                        //Temp3                    : 0x8F
    //            0,                        //FanSpeed1                : 0x90
    //            0,                        //FanSpeed2                : 0x91
    //            0,                        //READ_FAN_1            : 0x92
    //            0,                        //READ_FAN_2            : 0x93
                0,                        //DutyCycle                : 0x94
                0,                        //Freq                    : 0x95
                0,                        //POUT                    : 0x96
    //            0                        //PIN                    : 0x97
            }
        },

        //PMBus_MFR_CMD
        {
            //PMBUS_MFR_Info
            {
                0,                                    //PMBUS_REVISION        : 0x98
            },

            //PMBus_MFR_Param
            {
                0,                        //MFR_VIN_MIN            : 0xA0
                0,                        //MFR_VIN_MAX            : 0xA1
                0,                        //MFR_IIN_MAX            : 0xA2
                0,                        //MFR_PIN_MAX            : 0xA3
                0,                        //MFR_VOUT_MIN            : 0xA4
                0,                        //MFR_VOUT_MAX            : 0xA5
                0,                        //MFR_IOUT_MAX            : 0xA6
                0,                        //MFR_POUT_MAX            : 0xA7
                0,                        //MFR_TAMBIENT_MAX        : 0xA8
                0,                        //MFR_TAMBIENT_MIN        : 0xA9
                0,                        //MFR_EFFICIENCY_LL        : 0xAA
                0                        //MFR_EFFICIENCY_HL        : 0xAB
            }
        },
    };

    2.相应头文件中定义

        extern PMBUS_CMD    PMBus_CMD;

    3. .dflash本身就已定义

     

    结果下载程序后无法执行程序,  现象是无法切换到PFlash中!

    请高手指点!!!!

  • 您好,

    UCD3028的DFlash只存储一些数据,比如欠压保护电,过压保护点的默认值等。但您的程序中却包含了PMBus的指令,这是不合适的。

    回到您的问题,如果是产品加工完毕后,因为硬件参数有漂移,打算通过软件进行calibration,可以通过TI 免费提供的Fusion design online软件在线进行。
    附件是操作的步骤,请参考。
    当然,通过该软件实现在线的修改,前提是UCD3028的程序代码做好了定义,以实现UCD3028通过PMBus“接收”用户新写入的参数。
    软件代码因涉及太多操作,建议您参考TI提供的EVM代码程序。
    如果您打算索取TI免费提供的代码程序,可以联系我。 Neil-li@ti.com
    谢谢。
  • hello neil,

    你可能误会了, 我在DFlash中并未包括PMBus命令!!

    包括的只是PMBus命令的数据!!

    注释是我用来将数据与PMBus命令进行对应而做的!!

    你的建议和可以考虑! 但是把这么复杂的操作交到产线, 可能会出错, 这可能是产线生产不允许的!!

    这是我的邮箱, 欢迎一起讨论!!!

    mr.leeyou@hotmail.com