微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > UCD3xxx系列芯片, 如何操作内部的DFlash!

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

时间:10-02 整理:3721RD 点击:

大家好!

我想问下, 如何对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

上一篇:UCC28220
下一篇:UCC25710

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top