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.

[参考译文] LP3943SW-Linux:由 PWM 控制的 LP3943 LED

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/951579/lp3943sw-linux-lp3943-leds-controlled-by-pwm

器件型号:LP3943SW-Linux
主题中讨论的其他器件:LP3943

你(们)好

我有3个 LED 红色、绿色、黄色连接到 LP3943的通道 LED0、1、2。

使用 SDK RTLinux SDK6.3、我们希望打开/关闭 LED、并为3个 LED 设置公共亮度。

在这里、dt:

i2c3{(&I)

状态="正常";
时钟频率=<400000>;
(笑声)

/*用于 SFP 控制和状态 LED 的 LED 驱动器*/
GPIO_SFP_Ctrl:GPIO_SFP_CONTROL@64{
 兼容="ti,lp3943";
 reg =<0x64>;

gpioex:gpio{
 兼容="ti、lp3943-GPIO";
 GPIO 控制器;
 #GPIO-cells =<2>;
};

pwm3943:PWM{
 兼容="ti、lp3943-pwm";
 #PWM-Cells =<2>;
 ti、pwm0 =<0 1 2>;
};

};

按照这些示例、我声明 了状态 LED 如下

STATUS_LED{
 兼容="PWM-LED";
 RGB{
  标签="RGB";
  PWM =<&pwm3943 0 10000>;
  最大亮度=<255>;
 };
};

我可以在/sys/class/leds.下看到名为 RGB 的新 LED

我可以设置亮度、它会影响 所有三 个 LED 的亮度。

我缺少的是分别打开和关闭3个 LED。  

如何实现这一点? 通过定义3个状态 LED、但如何将它们连接到 LED 通道?  

谢谢、Chris

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

    尊敬的 Chris:

     我们不熟悉您的代码。 请从器件树中找到相应的寄存器、并向 LED 器件发送正确的信息。

    请参考下图:

     LED 的多个可编程状态为开/关/调光0/DIM1。 寄存器02h 和03h 定义了 DIM0的状态。 寄存器04h 和05h 定义了 DIM1的状态。 寄存器 LS0可选择 LED0/1/2/3的状态。 00=off;01=on;10=DIM0;11=DIM1。

    最恰当的考虑

    徐美奈

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

    您好、Monet、

    是的、TI 为 LP3943提供驱动程序。

    请您注意。 将问题转发至 处理器论坛。 很遗憾、如果我输入"lp3943"作为 器件型号、则问题将发送到电源管理论坛。

    谢谢、Chris

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

    您好 Chris

    很抱歉告诉您、上海团队不熟悉 Linux 驱动程序、包括 LED 和处理器。

    但我认为您可以尝试以下操作:

    1.root/Documentation/devicetree/bindings/PWM/pwm-lp3943.txt

    pwm3943:PWM{
    Compatible ="ti、lp3943-PWM";
    #PWM-cells =<2>;
    ti、pwm0 =<8 9 10>ti、pwm0 =<0 2>;
    ti、pwm1 =<15>;} ti、pwm1 =<1>; 
    将以黄色标记的说明更改为红色。

    STATUS_LED{
     兼容="PWM-LED";
     RGB{
      标签="RGB";
      PWM =<&pwm3943 0 10000>;
      最大亮度=<255>;
     };
    };
    添加以下代码:
    STATUS_LED{ 
     兼容="PWM-LED";
     RGB{
      标签="RGB";
      PWM =<&pwm3943 1 10000>;
      最大亮度=<155>;
     };
    };

    最恰当的考虑
    徐美奈


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

    尊敬的 Christian:

    您是否能够使用上述 Monet Xu 的回答来完成该操作?

    此致、
    基尔西

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

    不、Monet 没有回答我的问题。 他刚刚发布了我已经知道的文档。

    我已将问题转交给 David Bell。

    BR、Chris

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

    尊敬的 Chris:

    因为我没有自己测试的板。 我将在几天内检查并返回此内容。
    感谢您的耐心等待。

    此致、
    基尔西

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

    您好!

    对此进行了任何更新?

    此致、Chris

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

    尊敬的 Chris:

    https://e2e.ti.com/support/power-management/f/196/p/951579/3517039#3517039

    您是否已经尝试过上述 DTS 更改?

    此致、
    基尔西

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

    是的。 我是这样做的。 但是、如果您阅读我的问题、您会发现我不要求三色 LED、而是要求以下 LED

    "

    我有3个 LED 红色、绿色、黄色连接到 LP3943的通道 LED0、1、2

    使用 SDK RTLinux SDK6.3、我们希望打开/关闭 LED、并为3个 LED 设置公共亮度。

    "

    谢谢、Chris

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

    尊敬的 Chris:

    三色 LED 和3单色 LED 的原理是相同的。 它们都由 LP3943的通道 LED0、1、2控制。

    "我可以在/sys/class/leds.下看到名为 RGB 的新 LED

    我可以设置亮度、它会影响 所有三 个 LED 的亮度。

    我缺少的是分别打开和关闭3个 LED。  

    如何实现这一点? 通过定义3个状态 LED、但如何将它们连接到 LED 通道? "

    我想与您确认以下事项:

    1.您要为3个 LED 设置公共亮度

    2.您需要单独打开/关闭3个 LED

    如果两者都是、则使用名为 RGB 的 LED 来控制3个 LED 的公共亮度、并 将 LP3943的地址0x06至0x09寄存器设置为打开/关闭 LED。

    最恰当的考虑

    徐美奈

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

    您好、Monet、

    是的、我确认您得到的是1和2。

    您所说的是、如果使用 PWM、则没有用于单独控制 LED 的 sysfs 包装程序。 因此、我们必须直接与 I2C 寄存器进行中间运算(失去任何抽象)。 我会将其称为不完整的驱动程序。  

    与使用 GPIOX 驱动 LED 的情况相反。 然后有  一个 sysfs 包装程序:/sys/class/leds.中显示了各个 LED

    请您注意。 确认我得到了正确的结果? 您是否与该驱动程序的维护人员 milo.kim@ti.com 核对过?

    ----

    您建议直接写入芯片不起作用:由于驱动程序控制 lp3943,我无法将数据传送到芯片:

    root@CPM:/sys/class/leds # i2cdetect -y -r 5.

    0 1 2 3 4 5 6 7 8 9 A b c d e f
    00:------------ ------------ ------
    10:------------ ------------ ------------ --
    20:------------ ------------ ------------ --
    30:---- UU ------------ ------------ ------
    40:------------ ------ UU UU -- UU -- UU ----------
    50:UU 51 52 53 UU 55 56 57 -------- ------
    60:61 -- -- UU ------------ ------------ --
    70:UU ---------- ----

    以粗体显示的地址0x64上的 lp3943标记为"UU"=由驱动程序占用。

    因此、我将在读取或写入时获得该值

    i2cget -y 5 0x64

    错误:无法将地址设置为0x64:设备或资源忙

    请提供解决方案吗?

    谢谢、Chris

    此致、Chris

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

    尊敬的 Chris:

    对于 Q1:

    是的。 每次我们只能选择一个打开/关闭/调光(PWM)状态。 当您选择调光(PWM)状态时、sysfs 包装程序会起作用。 因此、为了将调光状态更改为单独关闭三个 LED 的状态、 我们必须直接与 I2C 寄存器进行中间操作。 我还没有与驾驶员的维修人员核实过。

    对于 Q2:

    读取器件所有寄存器数据的1.instruction:i2cdump -f -y 5 0x64

    读取器件特定寄存器数据的2.instruction:i2cget -f -y 5 0x64 (寄存器地址)

    向器件的特定寄存器写入数据的3.instruction:i2cset -f -y 5 0x64 (寄存器地址)(数据)

    请尝试上述说明并反馈结果、谢谢。

    最恰当的考虑

    徐美奈

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

    Monet、

    正如我之前所写的、如果驱动程序占用芯片、您将无法在芯片中注册"i2cset"。

    那么、再说一次:  

    我可以按如下方式设置公共亮度:echo 200 >/sys/class/leds/rgb/brightness

    如何打开/关闭连接到通道0、1、2的 LED?  i2cset 返回设备正忙状态。

    感谢你的帮助。

    -Chris

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

    尊敬的 Chris:

    如果无法使用"i2cset"寄存 器、则无法单独打开/关闭连接到通道0、1、2的三个 LED。 LP3943的 PWM 控制功能最多仅支持单独控制2个 LED 开/关。 您可能可以考虑使用 LP50xx。

    最恰当的考虑  

    徐美奈