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.

[参考译文] LP3944:无法使用DIM0或DIM1设置使LED变暗

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1098648/lp3944-cannot-make-the-leds-dim-using-dim0-or-dim1-settings

部件号:LP3944
主题: LP5569中讨论的其他部件

我尝试遵循此示例

编程示例:
在25 % 占空比下,1 Hz时LED指示灯变暗0至7
1.将PSC0设置为1的DIM0
2.将PWM0占空比设置为25 %
3.将PSC1设置为DIM1的0.2秒
4.将LED 0至7设置为指向DIM0
在规格表中。
此编程示例下面是一个包含寄存器值的表。 运行我获得的代码
占空比0x3f PWM0
句点0x9f PSC0
周期0x1f PSC1
占空比0x3f PWM1
与表中给出的预期值一致。
我不设置所有LED,只设置LED1。 但是,所有这些LED都闪烁。 不会调光。 此外,即使我设置了DIM1,也不清楚它的角色是什么。
示例是否错误? 如果在示例中设置了DIM1,但未使用,是否缺少信息。
否则,我可以为每个LED设置两个独立的闪烁速率。 奏效了。 但我不能让任何LED变暗。 请提供帮助并完成示例中缺少的内容。
我可以通过每隔几个百分之一秒在一个for循环中不断更改占空比来使LED变暗。 但这与LP3944的原因是完全不一致的,因为它显然给I2C总线和处理器带来了巨大的负载。
请让我再举几个例子
以下是我的python代码(在Raspberry PI上),用于通过预计算器和PWM寄存器设置DIMM0和DIMM1:
def lp3944_dim_set_period(self, dim0_or_dim1: boolean, period: int) ->int:
        
        psc_reg = LP3944_REG_PSC0 if dim0_or_dim1 else LP3944_REG_PSC1

        # Convert period to Prescaler value */
        if (period > LP3944_PERIOD_MAX):
            return -1

        psc_value = (period * 255) // LP3944_PERIOD_MAX
        psc_dim = "PSC0" if dim0_or_dim1 else "PSC1"
        print("Period " + str(hex(psc_value)) + " " + psc_dim)

        err = self.lp3944_reg_write(psc_reg, psc_value)

        return err;
    
    def lp3944_dim_set_dutycycle(self, dim0_or_dim1: boolean, duty_cycle: int) ->int:
        
        pwm_reg = LP3944_REG_PWM0 if dim0_or_dim1 else LP3944_REG_PWM1

        # Convert duty cycle to PWM value */
        if (duty_cycle > LP3944_DUTY_CYCLE_MAX):
            return -1

        pwm_value = (duty_cycle * 255) // LP3944_DUTY_CYCLE_MAX
        pwm_dim = "PWM0" if dim0_or_dim1 else "PWM1"
        print("Duty cycle " + str(hex(pwm_value)) + " " + pwm_dim)

        return self.lp3944_reg_write(pwm_reg, pwm_value)
它是预扩展器寄存器,其行为不符合我的预期。 我可以执行简单的回路,连续设置PWM寄存器,并以这种方式使其变暗/变亮。 因此PWM寄存器的运行方式符合我的预期。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们负责这一问题的专家目前正在庆祝中国国庆节,他们将在下周作出答复。

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

    您好,Brian,

    请向我指出更多示例

    唯一可用的编程示例是用于LED闪烁的示例。  

    3944 -me-th-lidS-dim-use-dim0-or-dim1-settings"],但这与LP3944的原因是完全不符的,因为LP3944显然会给处理器总线和I2C/报价 带来巨大的负载。

    呼吸效应要求在回路功能中持续增加/减少占空比,这是正确的。 这就是为什么我会推荐LP5569作为更好的解决方案,在这种情况下提高调光灵活性,而不是将LED映射到DIMM0/1,并通过发动机控制功能减轻I2C总线上的负载。

    此致,

    亚伦

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

    亚伦,

    因此 LP3944 RGB/白色/蓝色8-LED Fun Light Driver规格表中的此文本不正确:


    LP3944具有在中调暗LED的功能
    需要减少总线流量的应用。
    传统上,要使用串行移位寄存器(如74LS594/5)来调暗LED,需要大量的
    通信将位于串行总线上。 而是LP3944
    仅需要设置频率和占空比
    为每个输出引脚循环。 从那时起,只有一个
    需要从主机发出命令才能将每个都打开
    打开,关闭单个漏极开路输出或循环A
    编程频率和占空比。

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

    您好,Brian,

    根据您对此处DIM功能的理解,数据表上的陈述是正确的。 这是LED动画的广泛概念;根据我的理解,您需要的是LED呼吸效果。 因此,我建议更新的LP5569更好地满足您的设计要求。

    此致,

    亚伦

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

    Aaron,感谢您提供信息。 使用哪种芯片不是我的决定,但我觉得在作出LP3944功能的决策时,一定会有误解。 现在,我已经对LP3944进行了编程,我对它的功能和不功能有了很好的了解。 我必须承认,当我第一次阅读数据表时,我认为我可以在每个LED上单独设置这种'呼吸效果'。 我认为每个LED都有一对DIMM0和DIMM1。 不管怎样,它就是它的样子。 如果那些在硬件上做出决定的人希望硬件变暗,那么他们就需要更换硬件!

    我还应该提到,家用照明中的市场术语'可变LED '普遍用于表示LED (或任何其他灯泡)在关闭和最大亮度之间的任何强度设置的能力,通常通过滑块或刻度盘来实现。 因此很容易看到对该术语的误解。

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

    您好,Brian,

    如果您对部件选择有任何疑问,请随时在e2e论坛上发帖,以便我们可以提前找到最合适的候选人。

    此致,

    亚伦

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

    亚伦,

    我将推迟那些设计硬件的决策。 我不知道他们到底期待什么。