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.

[参考译文] UCD3138A:I2C 地址 — RADDSET

Guru**** 2812305 points

Other Parts Discussed in Thread: UCD3138A

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1623393/ucd3138a-i2c-address---raddset

器件型号: UCD3138A

UCD3138A 团队、

您能否解释一下 I2C 地址是如何基于 R-ADDSET 定义的?  数据表的图 7-13 中提到了这个问题、但我没有看到数据表或用户指南中还有任何详细信息。

谢谢、
Darren

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Darren:

    UCD3138A 器件的 AD00 和 AD01 引脚上连接了一个内部电流源。  

    要激活这些电流源、需要配置 PMBCL3 寄存器中的以下位

    该电流源可用于在连接到 AD00 和/或 AD01 的外部电阻器两端生成电压。  
    ADC12 可用于测量应用固件中 AD00 和/或 AD01 引脚上的这些电压。  
    根据测量的电压、可由应用固件为器件分配 PMBus 地址。  
    实际上、 应用固件可以 根据 AD00 和/或 AD01 上的电阻器值为器件分配 PMBus 地址

    请注意、所有 UCD3138x 器件系列(即 0xB)共用 ROM 模式下的 PMBus 地址。

    此致

    Sagar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Sagar、

    我们需要将电流映射到地址值。 这必须记录在或某处的软件示例中。  


    Darren

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Darren:

    一旦激活内部电流源、地址值就会映射到连接到 AD0 引脚的电阻器上的电压。

    根据 AD00 引脚上连接的电阻器分配从器件地址的代码逻辑如下所示:


    /*激活连接到引脚 AD00 的电流源*/


    PMBusRegs.PMBC3.bit.IBIAS_A_EN = 1;//启用地址电流源


    /*与其他中断一起初始化 ADC 中断*/

    /*配置 ADC */

    void INIT_ADC (void)

    AdcRegs.ADCCTRL.BIT.MAX_CONV = 6;//根据要启动的转换数选择 MAX_CONV
    AdcRegs.ADCCTRL.bit.single_sweep = 1;
    AdcRegs.ADCSEQSEL0.bit.SEQ0 = 0;// ADC 通道 0 置于序列 0
    AdcRegs.ADCCTRL.bit.ADC_EN = 1;//ADC 启用
    AdcRegs.ADCCTRL.bit.SW_START = 1;//触发新的测量序列
    }

    /*读取 ADC 结果并将其存储在变量*/中

    void READ_ADC (void)

    如果 (AdcRegs.ADCSTAT.bit.ADC_INT = 1)//如果 ADC 测量已完成

    ADC_ADDRESS = AdcRegs.ADCRESULT0.bit.result;//将转换结果存储在变量中

    }
    }


    / *在 PMBUS_topology.c 文件中定义函数“get_pPMBUS_ADDRESS"。“。 此函数将根据 AD00 引脚上连接的电阻器上的电压来重试 PMBUS_ADDRESS
    用户可以根据连接到 AD00 引脚的电阻值设置和修改 IF 条件中的“ADC_ADDRESS"范围“范围。
    “PMBUS_ADDRESS"也“也可以修改为用户喜欢的任何 7 位值。 以下值只是一个示例*/

    int32 get_PMBUS_ADDRESS (void)

    int32 PMBUS_ADDRESS;

    IF ((ADC_ADDRESS > 1210)&&(ADC_ADDRESS < 1450))

    PMBUS_ADDRESS = 0x5B;
    }
    否则 if ((ADC_ADDRESS > 1470)&&(ADC_ADDRESS < 1786))

    PMBUS_ADDRESS = 0x6A;
    }
    否则 if ((ADC_ADDRESS > 1804)&&(ADC_ADDRESS < 2163))

    PMBUS_ADDRESS = 0x6B;
    }
    暴露

    PMBUS_ADDRESS = 0x50;
    }

    返回 PMBUS_ADDRESS;
    }

    /*在“init_PMBus"函“函数中将“PMBUS_ADDRESS"作为“作为参数传递。 在“init_PMBus"函“函数中、初始化 PMBus、包括 PMCTRL2 寄存器中的地址分配。 */


    init_PMBus (get_PMBUS_ADDRESS ());//address assingment