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:如何从'LLCHBFirmware-1.2&#39启动项目;

Guru**** 664280 points
Other Parts Discussed in Thread: UCD7138, UCD3138A, UCD3138
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1011250/ucd3138a-how-to-start-a-project-from-llchbfirmware-1-2

器件型号:UCD3138A
主题中讨论的其他部件:UCD7138UCD3138

您好!

感谢你能抽出时间。

我的目标是使用 UCD3138A 和 UCD7138来控制 LLC 电路。

最近、我通过培训1~4对其进行了研究。 并在闭环中实现了输出振荡频率 PWM 信号的功能。

n`t traininglab 不支持 UCD3138A、除了从 LLCHBFirmware-1.2开始之外、似乎没有其他选项。  

`s 修改  LLCHBFirmware-1.2非常困难。

您是否会向我展示这种方式、尤其是具体细节?

我是说  LLCHBFirmware-1.2代码的哪些部分。 应首先删除、使其仅针对 EVM149运行(不含 EVM150)。

是否需要为此进行任何硬件设置?

然后、我可以逐步添加任何需要的函数。

我n`t 很多开发人员都迫切需要这些信息、而我在这个论坛上没有找到答案。

非常感谢您的热情支持!

此致!

吴晓峰

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

    Xiaofeng、我们在此处提供了 UCD3138 LLC EVM 板:

    https://www.ti.com/tool/UCD3138ALLCEVM150#overview 它不是很贵、大多数人开始了解 UCD 和7138的时候都使用它。  它是一个完整的电源、包括两个7138s。  这就是标准 TI 固件的设计工作方式。  这样、您就不必构建自己的测试硬件、从而可以更快地开始设计。  我们强烈建议您在最终的硬件设计中使用相同的引脚排列。  UCD 上有很多配置位、如果您决定使用与 EVM 不同的 DPWM 和滤波器、则很容易在更改固件时出错、有时很难找到您的错误。   

    如果您确实想使用控制卡上的 LLC 固件、最好的方法是禁用所有故障检测。  这样、代码将始终进入运行状态、并且滤波器和 DPWM 将运行。  然后、您可以使用实验中的 CPU 采样技术、或者在滤波器输出上设置高钳位和低钳位以控制 LLC。  这样、您至少可以观察到 LLC 频率变化。  您可能会在各种故障引脚上伪造信号、然后重新启用固件并对其进行测试。  但是、进行某种硬件仿真来测试7138的想法似乎非常复杂。  我认为 EVM 是您的不可错过之处。   

    如果您确实要禁用故障、则在 standard_interrupt.c 中有一个状态机   

    您可以在文件末尾附近的 case 语句中看到如下所示的状态:

    开关(SUPPLY_STstate)

    案例 State_Idle:
    handle_idle_state();
    中断;
    案例 State_check_ram_up:
    handle_check_ram_up ();
    中断;
    案例 State_High_Current_During_Rama_Up:
    handle_high_current_during _ram_up ();
    中断;
    案例 State_Bounce_TO_RAMP_UP_After 等待:
    handle_bounce_TO_ram_up_after_waiting();
    中断;
    案例 State_Rama_Up:
    handle_ram_up_state ();
    中断;
    案例 State_Ramn_Down:
    handle_ram_down_state ();
    中断;
    用例 State_regated:
    handle_region_state ();
    中断;
    案例 State_VOUT_TRANSITION:
    Handle_Vout_Transition ();
    中断;
    案例 State_light_load:
    Handle_light_load_state ();
    中断;
    案例 State_CPCC:
    Handle_CPCC_state ();
    中断;
    案例 State_HICCUP:
    handle_hICCUP 状态();
    中断;
    案例 State_FAULT:
    Handle_FAULT_STUARE();
    中断;

    您无需进入所有状态、只需进入启动序列中的状态。   

    大多数状态将具有如下所示的内容:

    否则(PSON &&高于 VIN_ON_LIMIT)

    您可能只需要将每个位的#defines 更改为1、因此 Vin 始终为高电平、PSON 为真。   

    然后、代码中将进行类似这样的检查 、以检查该级别的特定例外情况:

    if (ram_complete &&(adc_values.io_sense > PMBus_DCDC_CONFIG_ENMODE[0].Iout_oc_warn_limit))

    SUPPLY_STATUS=State_HIGH_CURRENT_During_RAMP_UP;

    将这些注释掉。   

    还有 Handle_Faults、它从调节状态调用。  您需要在此处注释掉测量值。  您还需要找到启用 DPWM 故障及其中断的代码并将其注释掉。   

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

    您好、Ian

    非常感谢您的回答。

    我们将考虑购买 EVM150。

    但我认为也只需要 EVM149的软件、因为我们需要在连接到自己的电路之前确认信号。

    首先、我将尝试您展示的方法来禁用故障。

    虽然我 对您的回答中的详细信息有更多问题:

    1.当你说"你不需要进入所有状态、只需要进入启动序列中的状态。  '

      请告诉我哪些是启动顺序?

    2.当你说"

      然后、代码中将进行类似这样的检查 、以检查该级别的特定例外情况:

       if (ram_complete &&(adc_values.io_sense >PMBus_DCDC_CONFIG_ENMODE[0].Iout_oc_warn_limit))
       {
       SUPPLY_STATUS=State_HIGH_CURRENT_During_RAMP_UP;

       }

       将这些注释掉。   '

       你请告诉我所有需要评论的检查吗?

      对于像您这样的专家来说、这可能非常简单、但您知道我对该 IC 不是很熟悉。

    最后、我对硬件还有另一个问题、因为 main.c 中有一些代码、如下所示:

    //检查 FAULT2是否被拉高,FAULT0是否被拉低。
    //如果它们被转到 ROM。
    IF (杂波模拟 Regs.GLBIOREAD.bit.fault2_IO_read &!杂波模拟 Regs.GLBIOREAD.bit.FAULT3_IO_Read)

    PMBus_READ_WRITE_ROM_MODE (PMBus_WRITE);

    这是否意味着我需要将 fault2连接到 hign、将 FAULT3连接到 GND?

    非常感谢您的帮助!

    相关信息

    吴晓峰

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

    我认为这些国家是:

    State_Idle

    State_check_ram_up

    State_ram_up

    State_regated

    如果您遇到比查看 DPWM 波形更复杂的情况、尤其是当您遇到 UCD7138等情况时、您将确实需要在硬件上进行测试。  由于这是一个反馈系统、因此您需要反馈、这很难进行仿真。   

    为了安全地启动电路板、最好的方法是一次启用一个器件。  该序列与我们在培训实验中所做的操作类似。  首先启动 LLC 输出开环、并验证输出部分是否正常工作、以及 UCD 输入上的信号是否正确。  然后、您可能需要启动故障逻辑以保护电路板。  然后启动反馈环路和其他功能。   

    如果您有 LLC EVM、并且您的电路非常靠近 EVM 电路-使用相同的引脚实现相同的功能、则可以首先测试其上的启动代码以验证其是否正常工作。  这样、如果您的电路板有问题、您就知道这可能是硬件问题、而不是固件问题。   

    对于故障2和3、您需要将故障2设为低电平或故障3设为高电平。  如果它们符合注释中的描述、它将清除校验和并通过清除校验和将代码返回到 ROM 模式。  这样做是为了在代码具有无限循环的情况下保护您。  将校验和写入经修改的未测试代码非常容易锁定 UCD。  通常、我不会在开发过程中编写校验和。   

    确实、我列出所有需要更改的位置要容易一些、但这仍然需要时间。  我将在明天尝试为您提供一个更完整的列表。   

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

    您好、Ian

    非常感谢您提供的详细信息、期待我们提供完整的修改地点列表、 这将大有帮助。

    实际上、我们今天根据您的建议订购了 EVM150、而这需要几周的时间。

    在此之前、我将按照您列出的步骤进行修改。 我正在使用 FPGA + DA 系统模拟真实的 LLC 电路以进行闭环测试。 希望它能正常工作。  

    很满意!

    小芬

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

    这里是我看到的其他代码更改。  我没有测试过这些、因此可能缺少一些东西。   

    我已经介绍了对 PSON 和 LEST_VIN_OFF_LIMIT 的更改。  对空闲状态的唯一其他更改是注释掉此行:

    Dpwm0Regs.DPWMIT.bit.PRD_INT_EN = 1;

    这将禁用 CPCC 的中断。 此外、在 init_filter_States 中注释掉同一行、该行从空闲模式调用。  一点冗余。

    在检查斜升状态下、您只需 忽略 Iout 读数、并在斜升完成时进入斜升状态:

    // if (ram_complete &&(adc_values.io_sense > PMBus_DCDC_CONFIG_ENMODE[0].Iout_oc_warn_limit))

    //SUPPLY_STATUS=State_HIGH_CURRENT_RAMP_UP

    if (ram_complete);//&(adc_values.io_sense < PMBus_DCDC_CONFIG_ENMODE[0].Iout_oc_warn_limit))

    红色字符显示了一种简单的实现方法。  如果您感觉更勤勉、则可以将所有这些更改设置为条件、例如使用#define FAULT_DISABLE 或其他操作。   

    对于斜升状态、我看不到任何需要的额外更改。   

    对于句柄调节状态、我认为您可以注释掉所有内容。  只需将其设为空函数即可。  我不确定 SR 驱动器是否默认打开。  如果没有、请告诉我、我们可以打开它们。   

    您还需要转到 init_FAULT_mux.c、并注释掉 init_FAULT_mux 和 init_OVP 函数中的所有内容。  这应防止悬空的 ADC 引脚关闭 DPWM。   

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

    您好、Ian

    非常感谢您的帮助、我将按照您的指南进行修改。

    而在 main.c 中、还有另一个问题

    有一段代码:

    //初始化 PMBus
    init_PMBus (get_PMBus_address ());

    当我查看'get_PMBus_address()'时,将读取 ADC 输入以确定值为0x59或0x5A 的结果。  

    我不理解这些数字的含义、在培训实验室中、代码是:

    init_PMBus (0x58);//初始化 PMBus 处理程序

    由于我的调试中 ADC 端子上没有输入、我应该使用哪个数字?   0x59或0x5A?

    谢谢!

    此致!

    吴晓峰  

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

    您可以使用任一地址。  GUI 将扫描所有地址并查找其位置。  I2C 和 PMBus 中保留了一些地址、但50年代不在该范围内。   

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

    这一个问题已经存在了一段时间没有客户的回应、因此我将假定它已解决并将其关闭。