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.

[参考译文] AM625SIP:I2C 已设置、但不输出任何内容

Guru**** 2478765 points
Other Parts Discussed in Thread: TCA8418, SK-AM62-SIP

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1455331/am625sip-i2c-gets-set-up-but-does-not-output-anything

器件型号:AM625SIP
主题中讨论的其他器件:TCA8418SK-AM62-SIP

工具与软件:

尊敬的 TI

我想使用 I2C2总线、但无法在引脚上测量任何值。

我将此函数添加到了 devicetree 文件中:

&main_i2c2 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_i2c2_pins_default>;
	clock-frequency = <100000>;

	keypad@34 {
		compatible = "ti,tca8418";
		reg = <0x34>;
		interrupt-parent = <&main_gpio1>;
		interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
		linux,keymap = <0x0000000a
		                0x0100000b
		                0x0200000c
		                0x0300000d>;
		keypad,num-rows = <4>;
		keypad,num-columns = <1>;
		status = "okay";
	};
};

其中我将引脚定义为

	main_i2c2_pins_default: main-i2c2-pins-default {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x0b0, PIN_INPUT_PULLUP, 1) /* (K22) I2C2_SCL */
			AM62X_IOPAD(0x0b4, PIN_INPUT_PULLUP, 1) /* (K24) I2C2_SDA */
			AM62X_IOPAD(0x1b8, PIN_INPUT_PULLUP, 7) /* (C13) GPIO1_16 */
		>;
	};

节点 main_pmx0中。 我使用的是内核6.1.69。

已创建器件文件/dev/i2c-2、并且根据/proc/device-tree.、似乎正确解析了 devicetree TCA8418的探头功能也称为。

但是、我在 I2C 总线上看不到任何发生的情况、即使我使用 I2C 工具写入一些内容(在 I2C0和 I2C1上它有效)也是如此。 我正在使用 SK-AM62-SIP 评估模块、我的分析仪连接到40引脚连接器上的引脚3、5和6 (GND)。

我可能会做错什么?

此致

Leon Rigoni.

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

    尊敬的 Leon:

    我们的域专家目前不在办公室,请预计响应时间会有所延迟。

    此致、

    Nitika

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

    您好、Leon、

    我认为适合使用 I2C 引脚多路复用。 I2C2引脚多路复用与我们在 k3-am62x-sk-common.dtsi 中看到的相同。

    验证一下、您没有使用40引脚自动化接头、对吧? 才能使用40引脚用户扩展连接器。

    您能否在启动时附加终端输出、以便我们了解 I2C 驱动程序在初始化时正在做什么?

    当您执行 i2cdetect -y -r 时、您可以从终端看到什么 ? 我怀疑 BUS_NUMBER 未固定、即您的硬件 I2C0实例可能与/dev/i2c-0实例不一致。

    此致、

    Nick

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

    您好、Nick。

    是的、我使用40引脚用户扩展连接器。

    请在附件中查找其他信息。

    此致、

    Leon

    e2e.ti.com/.../i2cdetect.txte2e.ti.com/.../5023.dmesg.txt

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

    您好、Leon、

    我重新看了一下原理图。 如需查看用户扩展连接器处的 I2C 信号、需要启用一个内联 I2C 开关:

    默认情况下会禁用所有 I2C 输出、因此我们需要将该开关添加到 Linux devicetree 并启用输出0:

    请参阅摄像头板的其中一个器件树覆盖文件。 例如、  
    /linux-5.10.168+gitAUTOINC+2c23e6c538-g2c23e6c538/arch/arm64/boot/dts/ti/k3-am625-sk-csi2-ov5640.dts

    请注意、这会启用 CSI 接头的输出1、而不是输出0。 因此、我首先将这2行更改为0、而不是1:

    &main_i2c2 {
            pinctrl-names = "default";
            pinctrl-0 = <&main_i2c2_pins_default>;
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";
    
            clock-frequency = <400000>;
    
            i2c-switch@71 {
                    compatible = "nxp,pca9543";
                    #address-cells = <1>;
                    #size-cells = <0>;
                    reg = <0x71>;
    
                    /* CAM port */
                    i2c@1 {   <<---------------------change to @0
                            #address-cells = <1>;
                            #size-cells = <0>;
                            reg = <1>; <-------------change to <0>
    
                            // put your peripheral here
    
                            };
                    };
            };
    };
    

    此致、

    Nick

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

    您好、Nick。

    非常感谢、这很有效!

    此致、

    Leon

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

    您好、Leon、

    很高兴听到您能够使其正常工作! 除了将 I2C 外设节点放置在 i2c-switch{i2c@0{peripheral_node}内之外、是否还需要执行其他步骤?

    我 将 根据您的输入创建一个常见问题解答、因为如果不深入到原理图、这一额外的步骤并不明显。

    此致、

    Nick

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

    您好、Nick。

    我没有使用器件树进行尝试、而是编写了一个启动脚本来启用输出0开关(i2cset -y 2 0x71 1)-我发现这样更简单。

    此致、

    Leon