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.

[参考译文] SK-AM62B-P1:如何通过 I2C 控制 LED (使用 TPIC2810D)

Guru**** 2482205 points
Other Parts Discussed in Thread: TPIC2810, SK-AM62B-P1, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1436492/sk-am62b-p1-how-to-control-leds-via-i2c-use-of-tpic2810d

器件型号:SK-AM62B-P1
主题中讨论的其他器件:TPIC2810、、 SysConfig

工具与软件:

您好、TI:

这是我第一次制作贵公司的产品,我有许多简单的问题,我想问你:

参考译文:了[μ s] TMDX654IDKEVM 控制器 I2C LED 处理器(参考译文帖)-μ s (只读)-处理器(参考译文帖)μ s - E2E 设计支持 、发现如果您要通过 I2C 控制 LED、则需要执行以下操作

(1)打开 CONFIG_GPIO_TPIC2810

(2) k3-am654-base-board.dts 配置相应的器件树

(3)改进驱动程序代码(ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti/drivers/gpio/tpic2810.c)

然而、论坛中的描述仍然有点难以理解、因此存在以下问题:

如果我在 SK-AM62B-P1上实现它、还可以使用此宏 CONFIG_GPIO_TPIC2810来打开控制编译吗?

2. SK-AM62B-P1器件上是否有用于 TPIC2810D 控制的参考器件树? 您能指出这一点吗? 我不知道该怎么说

3.还有 GPIO 封装在接口宏中的 pinctrl 控件、我怎么看具体设置了哪些 GPIO (GPIO 编号)、宏中只有一个类似地址数据的值(例如0x1e0)

AM62X_IOPAD (0x1e0、PIN_INPUT_PULLUP、0)/*(B16/E12) I2C0_SCL */

4.由于 LED 是通过 I2C 控制的、为什么要在 TPIC2810D 将数据写入芯片时控制不同的 LED 状态? 是否有描述它的文档? 我没有找到相应的信息

谢谢

明星

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

    尊敬的 Mingx:

    我将把您的主题发送给 TPIC2810团队进行评论。 如果您在几个工作日内未收到回复、请随意 ping 该主题。

    此致、

    Nick

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

    您好、Nick J ü:

    除了 TPIC2810的问题之外、您能否帮助我回答在器件树中设置 GPIO 状态宏的地址偏移问题?

    谢谢

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

    您好、Nick。

    我认为您的问题与 LED 驱动器的使用在某种程度上无关? 所以我  先把它交给 SK-AM62B-P1团队。

    BR、Gracie

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

    您好、黄

    您是使用 AM62x (您在标题中放置了 AM62x 入门套件 EVM)还是使用 AM65x (您在原始问题中提到了 AM65x IDK EVM)。

    此致、

    Nick

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

    您好、Nick

      我正在使用 AM62x 、并且正在查看使用 TPIC2810D 芯片的 I2C 原理图

    谢谢

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

    您好、Nick。

    我们稍后将为您提供更新

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

    尊敬的 Mingxin:

    我不知道 您的确切问题。 这是一款相当传统的器件、因此除了数据表之外、我几乎没有其他文档。 您的终端应用是什么? 为什么选择具有如此大的 RDSon 的 LED 驱动器? 是否适用于汽车应用?

    BR、Gracie

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

    您好!

    我将从 AM62x 角度评论。 请注意、我的处理器团队不是该特定部分的专家、但我们可以提供一些一般指导。

    是否有 Linux devicetre 节点模板?  

    有。 TPIC2810似乎包含在 AM64x SK 中。 您可以将该 devicetre 文件作为模板进行引用:

    arch/arm64/boot/dts/ti/k3-am642-sk.dts
        exp2: gpio@60 {
            compatible = "ti,tpic2810";
            reg = <0x60>;
            gpio-controller;
            #gpio-cells = <2>;
            gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
        }; 

    有任何有关如何测试 LED 的指导吗?  

    配置内核模块后加载 tpic 模块后、可以从终端(即用户空间)通过 sysfs 接口控制 LED。 但据我所知、我们没有任何文档。 您应该会看到 LED 在 /sys/class/leds 下显示 /

    TI 能否帮助您修改驱动程序代码?  

    我们不支持内核驱动程序开发问题、也不支持对我们的驱动程序进行修改。

    此致、

    Nick

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

    您好、Gracie:á lez

    我不知道最终的应用,但我的老板要求我能够自由控制 LED 灯,例如,如果我照亮所有的 LED 灯或只有一个 LED 灯,我应该怎么操作

    谢谢

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

    您好、Nick J ü:

    不是通过 TPIC2810D 芯片的 IIC 来控制 LED 光矩阵吗? 它是如何成为节点控制的? 您封装了吗?

    我的理解是相应的寄存器数据值可以通过 IIC 发送到芯片、控制 TPIC2810D 的 LED 矩阵

    这些节点是您所讨论的节点吗? 如何使用这些节点? 另外、我在驱动程序文件 gpio-tpic280.c 中没有看到用于创建这些节点的代码

    谢谢

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

    您好、黄

    我不会再提供任何指导。 我怀疑3个标记为"MMC"的 LED 与您的8个 TPIC2810 LED 没有关系。 MMC 接口可能会使用它们。

    如果是您、我会尝试将 TBIC2810添加到 AM62x Linux devicetree 文件中、并确保在内核配置中启用该驱动程序。

    然后、重新构建内核、内核模块和 linux devicetree、然后将所有这些更新后的文件复制到文件系统 中、如 AM62x linux Foundational_Components_Kernel_Users_Guide 文档 https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_00_07_04/exports/docs/linux/中所述

    然后查看 LED 是否亮起。

    此致、

    Nick

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

    您好、Nick:

    你似乎误解了我的意思

    我已经尝试配置器件树(TPIC2810D)、但到目前为止尚未成功。

    2.总结一下有两个需求、一个是如何配置 TPIC2810D 芯片;第二个是成功配置后如何控制 TPIC2810D、以便按照我的想法控制 LED 灯的工作

    谢谢

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

    您好!

    请再次查看 AM64x devicetree 文件示例并重试。 您要将应该在 tpic2810节点中运行的代码与应该在 I2C 节点中运行的代码混合在一起。

    如果您希望有人查看您的 devicetree 设置、则应将 I2C 和 TBIC 器件树节点复制并粘贴到响应中的代码块中。 就像这样:
    插入>代码

    此致、

    Nick

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

    +++ b/board-support/ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    @@ -8,6 +8,7 @@
     /dts-v1/;
    
     #include "k3-am62x-sk-common.dtsi"
    +#include <dt-bindings/leds/common.h>
    
     / {
            compatible = "ti,am625-sk", "ti,am625";
    @@ -28,7 +29,73 @@ memory@80000000 {
                    reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
            };
    +       led-controller {
    +               compatible = "gpio-leds";
    +
    +               led-0 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <1>;
    +                       gpios = <&exp2 0 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-1 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <2>;
    +                       gpios = <&exp2 1 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-2 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <3>;
    +                       gpios = <&exp2 2 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-3 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <4>;
    +                       gpios = <&exp2 3 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-4 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <5>;
    +                       gpios = <&exp2 4 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    
    +               led-5 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <6>;
    +                       gpios = <&exp2 5 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-6 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <7>;
    +                       gpios = <&exp2 6 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-7 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_HEARTBEAT;
    +                       function-enumerator = <8>;
    +                       linux,default-trigger = "heartbeat";
    +                       gpios = <&exp2 7 GPIO_ACTIVE_HIGH>;
    +               };
    +       };
            vmain_pd: regulator-0 {
                    /* TPS65988 PD CONTROLLER OUTPUT */
                    compatible = "regulator-fixed";
    @@ -204,7 +271,12 @@ AM62X_IOPAD(0x128, PIN_INPUT, 7) /* (B23) MMC2_SDWP.GPIO0_72 */
     };
    
     &main_i2c1 {
    -       exp1: gpio@22 {
    +               status = "okay";
    +       pinctrl-names = "default";
    +               pinctrl-0 = <&main_i2c1_pins_default>;
    +               clock-frequency = <400000>;
    +
    +               exp1: gpio@22 {
                    compatible = "ti,tca6424";
                    reg = <0x22>;
                    gpio-controller;
    @@ -230,6 +302,13 @@ exp1: gpio@22 {
                    pinctrl-names = "default";
                    pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
            };
    +       exp2: gpio@60 {
    +        compatible = "ti,tpic2810";
    +        reg = <0x60>;
    +        gpio-controller;
    +        #gpio-cells = <2>;
    +        gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    +       };
     };
    

    这是我修改的设备树、但通过 i2cdetect 命令、我找不到 IIC 地址、并且在 sys/class/led 路径下没有与 LED 相关的节点

    LEDS-GPIO.o 和 GPIO-tpic2810.o 文件可以顺利生成

    请告诉我应如何配置器件树、以便 TPIC2810D 顺利运行

    谢谢

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

    您好、 Nick:

    我似乎成功添加了它、SYS/CLASS/LED 似乎具有生成的节点、但您如何控制这些节点? 我正在设置其中的一些节点、但仍然无法点亮 LED

    谢谢

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

    您好、Nick:

    static struct platform_driver gpio_led_driver = {
    	.probe		= gpio_led_probe,
    	.shutdown	= gpio_led_shutdown,
    	.driver		= {
    		.name	= "leds-gpio",
    		.of_match_table = of_gpio_leds_match,
    	},
    };

    该驱动程序似乎没有设置的接口、因此我们需要编写驱动程序函数来在用户空间中设置 LED

    谢谢

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

    您好!

    按照 SYSFS 指南中的指示灯: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/ABI/testing/sysfs-class-led?h=ti-linux-6.6.y 进行操作

    您应该回显 X >/sys/class/leds / 用户空间控制。

    此致、
    Anshu

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

    嗨  Anshu:

    我查看了您所说的文档、根据文档中的说明设置亮度和 max_brightness、但 LED 指示灯仍然不亮、我的配置是否有问题?

    ++ b/board-support/ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti/arch/arm64/boot/dts/ti/k3-am625-sk.dts
    @@ -8,6 +8,7 @@
     /dts-v1/;
    
     #include "k3-am62x-sk-common.dtsi"
    +#include <dt-bindings/leds/common.h>
    
     / {
            compatible = "ti,am625-sk", "ti,am625";
    @@ -28,7 +29,77 @@ memory@80000000 {
                    reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
            };
    +       led-controller {
    +               compatible = "gpio-leds";
    +
    +               led-0 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <1>;
    +                       gpios = <&tpic2810 0 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-1 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <2>;
    +                       gpios = <&tpic2810 1 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-2 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <3>;
    +                       gpios = <&tpic2810 2 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-3 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <4>;
    +                       gpios = <&tpic2810 3 GPIO_ACTIVE_HIGH>;
    +                       default-state = "off";
    +               };
    +
    +               led-4 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <5>;
    +               //      gpios = <&tpic2810 4 GPIO_ACTIVE_HIGH>;
    +               //      default-state = "off";
    +                       gpios = <&tpic2810 4 GPIO_ACTIVE_LOW>;
    +                       default-state = "on";
    +               };
    +
    +               led-5 {
    +                       color = <LED_COLOR_ID_RED>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <6>;
    +               //      gpios = <&tpic2810 5 GPIO_ACTIVE_HIGH>;
    +                       gpios = <&tpic2810 5 GPIO_ACTIVE_LOW>;
    +                       default-state = "off";
    +               };
    +
    +               led-6 {
    +                       color = <LED_COLOR_ID_GREEN>;
    +                       function = LED_FUNCTION_INDICATOR;
    +                       function-enumerator = <7>;
    +                       gpios = <&tpic2810 6 GPIO_ACTIVE_HIGH>;
    +                       //default-state = "off";
    +                       default-state = "on";
    +               };
    
    +               led-7 {
    +                       color = <LED_COLOR_ID_AMBER>;
    +                       function = LED_FUNCTION_HEARTBEAT;
    +                       function-enumerator = <8>;
    +                       linux,default-trigger = "heartbeat";
    +                       gpios = <&tpic2810 7 GPIO_ACTIVE_HIGH>;
    +               };
    +       };
            vmain_pd: regulator-0 {
                    /* TPS65988 PD CONTROLLER OUTPUT */
                    compatible = "regulator-fixed";
    @@ -201,6 +272,27 @@ main_wlirq_pins_default: main-wlirq-pins-default {
                            AM62X_IOPAD(0x128, PIN_INPUT, 7) /* (B23) MMC2_SDWP.GPIO0_72 */
                    >;
            };
    +       wkup_i2c0_pins_default: wkup-i2c0-pins-default {
    +               pinctrl-single,pins = <
    +                       AM62X_IOPAD(0x04c, PIN_INPUT_PULLUP, 0) /* (B9/E9) I2C0_SCL */
    +                       AM62X_IOPAD(0x050, PIN_INPUT_PULLUP, 0) /* (A9/A9) I2C0_SDA */
    +               >;
    +       };
    +};
    +
    +&main_i2c0 {
    +       status = "okay";
    +       pinctrl-names = "default";
    +       pinctrl-0 = <&wkup_i2c0_pins_default>;
    +       clock-frequency = <400000>;
    +
    +       tpic2810: gpio@60 {
    +               compatible = "ti,tpic2810";
    +               reg = <0x60>;
    +               gpio-controller;
    +               #gpio-cells = <2>;
    +               gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    +       };
     };
    
     &main_i2c1 {
    

    谢谢

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

    您好!

    您能解释一下 tpic 节点为什么在 main_i2c1下吗? 您是否使用定制硬件?

    对于 AM64x EVM、它连接到主 i2c1:

    但对于 SK-AM62B-P1、它连接到唤醒 I2C0:

    如果使用 SK-AM62B-P1而不是定制硬件、则需要将其更改为 Wakeup Domain I2C0。 请参阅 SysConfig 以生成示例器件树引脚多路复用:

    https://dev.ti.com/sysconfig/#/config/?args=--device%20AM62x%20--package%20ALW


    此致、

    Anshu

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

    您好、 Anshu

    我使用的 main_i2c0、请看我最近发送的代码、

    如何使用 SysConfig(https://dev.ti.com/sysconfig/#/config/?args=--device%20AM62x%20--package%20ALW)?我以前没有使用过、我似乎没有在内部找到 SK-AM62B-P1模型的选项

    谢谢

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

    为何要修改 pinmux 设置?

    AM62x SK 板的 I2C0引脚多路复用已设置:

    arch/arm64/boot/dts/ti$ vi k3-am62x-sk-common.dtsi
    
    &main_i2c0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        clock-frequency = <400000>;

    此致、

    Nick

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

    您好、Nick:

    我尝试了新的修改,仍然是相同的现象,在输入命令后 LED 仍然不亮

    arch/arm64/boot/dts/ti$ vi k3-am62x-sk-common.dtsi
    
    / {
    
    
    ++	led-controller {
    ++		compatible = "gpio-leds";
    ++
    ++		led-0 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <1>;
    ++			gpios = <&tpic2810d 0 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-1 {
    ++			color = <LED_COLOR_ID_RED>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <2>;
    ++			gpios = <&tpic2810d 1 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-2 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <3>;
    ++			gpios = <&tpic2810d 2 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-3 {
    ++			color = <LED_COLOR_ID_AMBER>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <4>;
    ++			gpios = <&tpic2810d 3 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-4 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <5>;
    ++			gpios = <&tpic2810d 4 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-5 {
    ++			color = <LED_COLOR_ID_RED>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <6>;
    ++			gpios = <&tpic2810d 5 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-6 {
    ++			color = <LED_COLOR_ID_GREEN>;
    ++			function = LED_FUNCTION_INDICATOR;
    ++			function-enumerator = <7>;
    ++			gpios = <&tpic2810d 6 GPIO_ACTIVE_HIGH>;
    ++			default-state = "off";
    ++		};
    ++
    ++		led-7 {
    ++			color = <LED_COLOR_ID_AMBER>;
    ++			function = LED_FUNCTION_HEARTBEAT;
    ++			function-enumerator = <8>;
    ++			linux,default-trigger = "heartbeat";
    ++			gpios = <&tpic2810d 7 GPIO_ACTIVE_HIGH>;
    ++		};
    ++	};
    
    &main_pmx0 {
    	/* First pad number is ALW package and second is AMC package */
    	main_uart0_pins_default: main-uart0-pins-default {
    ++
    ++	wkup_i2c0_pins_default: wkup-i2c0-pins-default {
    ++		pinctrl-single,pins = <
    ++			AM62X_IOPAD(0x04c, PIN_INPUT_PULLUP, 0) /* (B9/E9) I2C0_SCL */
    ++			AM62X_IOPAD(0x050, PIN_INPUT_PULLUP, 0) /* (A9/A9) I2C0_SDA */
    ++		>;
    ++	};
    }	
    
    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    ++	pinctrl-0 = <&main_i2c0_pins_default>,<&wkup_i2c0_pins_default>;
    	clock-frequency = <400000>;
    ++	tpic2810d: tpic2810@60 {
    ++		compatible = "ti,tpic2810";
    ++		reg = <0x60>;
    ++		gpio-controller;
    ++		#gpio-cells = <2>;
    ++		gpio-line-names = "LED1","LED2","LED3","LED4","LED5","LED6","LED7","LED8";
    ++	};
    	typec_pd0: tps6598x@3f {	
    	

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

    请参阅我10天前的回复:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1436492/sk-am62b-p1-how-to-control-leds-via-i2c-use-of-tpic2810d/5519223#5519223

    我们已向您介绍了一个有关如何将  TPIC2810添加到 I2C 接口的示例。

    你不断地进行代码更改、但这些更改看起来与我们所指的示例中的任何内容都不一样。 如果您忽略 TI 的示例、我们实际上无法为您提供帮助。

    此致、

    Nick

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

    您好、Nick J ü:

    我刚刚根据您的建议修改了代码、可以顺利生成 i2c 和 LED 节点的地址、但是我发现当 LED 灯设置为通过 LED 节点亮起时并不起作用。

    请帮帮我

    谢谢

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

    您好、 Nick J ü:

    通过添加日志、我发现当我设置/sys/class/leds/green:indicator-1/brightness 时、会调用 tpic2810_set_mask_byte_data 函数来传输数据、该函数成功运行。

    为什么在成功的 i2c 通信后 LED 灯不亮?

    static void tpic2810_set_mask_bits(struct gpio_chip *chip, u8 mask, u8 bits)
    {
    	struct tpic2810 *gpio = gpiochip_get_data(chip);
    	u8 buffer;
    	int err;
    	printk("tpic2810_set_mask_bits++++++++++++++++++++++++++++\n");
    
    	mutex_lock(&gpio->lock);
    
    	buffer = gpio->buffer & ~mask;
    	buffer |= (mask & bits);
    
    	err = i2c_smbus_write_byte_data(gpio->client, TPIC2810_WS_COMMAND, buffer);
    	if (!err)
    		gpio->buffer = buffer;
    
    	mutex_unlock(&gpio->lock);
    }

    谢谢

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

    尊敬的 明星:

    tpic 器件的 I2C 地址是什么?


    您能否分享"cat /sys/kernel/debug/gpio "的输出?

    您能否分享"cat /sys/kernel/debug/pinctrl/f4000.pinctrl-pinctrl-single/pinmux-pins "的输出?

    此致!

    Anshu

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

    嗨 Anshu:

    I2C 添加:0x60

    日志文本太多、我会将文件发送给您

     e2e.ti.com/.../kernrl_2D00_debug_2D00_gpio.txt

    e2e.ti.com/.../pinmux_2D00_pins.txt

    谢谢

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

    嗨 Anshu:

    我提供的数据是否有问题?

    谢谢

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

    尊敬的明星:

    因为我从美国度假回来后的延迟,我们对此深表歉意。

    您能否尝试复制我提出的此 E2E 常见问题解答? https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1447811/faq-processor-sdk-am62x-how-to-enable-and-use-tpic2810-on-am62x-evms

    请在您的最后尝试此操作 我最后能够在 AM62x EVM 上做到这一点

    此致、

    Anshu

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

    嗨 Anshu:

    我根据您的设备树对其进行了完全修改、LED 仍然不会变亮。

    更改后、UART 不断打印 omap_i2c 2b2000.i2c:控制器超时

    3.我不知道如何进入和修改您提供的内核模块、但我修改了解配置文件(board-support\ti-linux-kernel-6.1.80+gitAUTOINC+2e423244f8-ti\arch\arm64\configs)

    谢谢

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

    尊敬的明星:

    从错误消息来看、它似乎来自该 I2C 驱动程序: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/i2c/busses/i2c-omap.c?h=ti-linux-6.1.y#n753

    下面列出了配置内核的指令: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html#configuring-the-kernel

    defconfig 仅用于获取默认配置、设置 ARCH 和交叉编译器后、通过 menuconfig 完成任何其他更改。

    WKUP_I2C 总线上有其他器件吗? DM R5 (或另一个内核)上是否有应用正在运行并可能访问该 I2C 总线?

    此致、

    Anshu

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

    嗨 Anshu:

    这是我的 menuconfig。 它似乎与您的略有不同、

    关于配置宏的信息、还是它仅添加到 debugconfig 中。 Menuconfig 如何添加、仍然不明白、

    我在 tpic2810_probe 函数的末尾添加了打印日志、打印日志可以正常打印、我想驱动程序的加载应该是正常的

    谢谢

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

    嗨 Aanshu:

    除了 LED、我们没有对 WKUP_I2C 添加任何内容、所有代码都未经修改。

    我已尝试关闭任何与 WKUP_I2C 相关的设备树描述、但问题仍然存在

    谢谢

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

    尊敬的明星:

    我在 tpic2810_probe 函数的末尾添加了打印日志、打印日志打印正常、我猜驱动程序加载应该正常

    如果正在打印、则应能正常工作。

    我已尝试关闭任何与 WKUP_I2C 相关的设备树描述、但问题仍然存在

    唯一重要的器件树文件是编译到 k3-am625-sk.dtb 时使用的文件。

    我将请另一名工程师查看 I2C 超时日志、因此请留出1-2天的时间进行响应。

    此致、

    Anshu

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

    嗨 Anshu:

       谢谢、我会等您的消息。

    谢谢

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

    尊敬的 Mingx:

    为了进行确认、您是否使用  SK-AM62B-P1? 或者您是否使用了定制电路板?

    此致、

    Nick

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

    您好、Nick J ü:

     是的、我正在使用 SK-AM62B-P1的开发板。

    谢谢

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

    尊敬的 Mingx:

    如 E2E 常见问题解答中所示、我们证明 TPIC2810可以在 TI EVM (也支持 SK-AM62B-P1)上正常工作。 此时此刻、我们无法提供更多的支持。

    我们可以建议从新安装或分支进行尝试、而不进行其他更改。 也许尝试单独安装 SDK、以便您可以保留所做的所有其他更改。 确认 TPIC 模块正常工作后、您可以将其他更改重新添加到中。

    为简化此过程、请在内核配置中添加 TPIC 模块、对器件树进行更改、并编译和启动 EVM。 您可以使用 SD 卡引导模式、并将新的 Linux 映像和 dtb 文件复制到 SD 卡分区。

    有关启动新 SD 卡的说明、请参阅 Linux SDK 文档: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/Overview/Processor_SDK_Linux_create_SD_card.html

    有关更改 Linux SDK 的说明、请参阅 E2E 常见问题解答: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1447811/faq-processor-sdk-am62x-how-to-enable-and-use-tpic2810-on-am62x-evms

    完成编译步骤的所有指令都在 Linux SDK 文档: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_10/exports/docs/linux/SDK Foundational_Components_Kernel_Users_Guide .html 中提供

    然后、将 Linux 映像和 k3-am625-sk.dtb 复制到 SD 卡的根分区中。 使 TPIC 正常工作、然后缓慢添加其他更改。

    此致、

    Anshu

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

    此外、请不要忘记、我们在 Linux SDK 下载中包含 git 存储库。 我建议将所有更改放在一个单独的特征分支上、以便仍然将主分支作为一个简洁的起点。 就像这样:

    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch
    * ti-linux-6.1.y-jailhouse
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch add_tpic_leds
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch
      add_tpic_leds
    * ti-linux-6.1.y-jailhouse
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git checkout add_tpic_leds
    git branch
    M       arch/arm64/configs/defconfig
    Switched to branch 'add_tpic_leds'
    ~/sdks/ti-processor-sdk-linux-am62xx-evm-09.02.01.10/board-support/linux-extras-6.1.83+gitAUTOINC+ffc2ff4d45-ti$ git branch
    * add_tpic_leds
      ti-linux-6.1.y-jailhouse
    

    此致、

    Nick

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

    您好、Nick J ü:

    您不知道如何解决这个问题、对吧?

    您是否有此芯片的芯片手册或文档? 一般来说芯片都有芯片手册、能不能寄给我?

    谢谢

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

    尊敬的明星:

    所有公开提供的文档将在 TPIC2810的产品页面上: https://www.ti.com/product/TPIC2810

    谢谢!

    Anshu