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.

[参考译文] AM5728:关于摄像机设备的 i2c-tools (i2cdump、i2cget、i2cset)用法

Guru**** 2538960 points
Other Parts Discussed in Thread: AM5728, TMDSEVM572X

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/982578/am5728-regarding-i2c-tools-i2cdump-i2cget-i2cset-usage-for-camera-device

器件型号:AM5728
主题中讨论的其他器件: TMDSEVM572X

您好!

我使用的是 TI AM5728 EVM、其中包含 Linux PSDK 6.03。 我在上面连接了一个 TI 的摄像头器件。 摄像机设备是一个基于 ov10635传感器的摄像机模块。

摄像头模块的器件树条目如下-

i2c5{(&I)
ov10635@30{
兼容="ovti、ov10635";
时钟名称="xvclk";
时钟=<&clk_ov10635>;
POWERDOT-GPIOs =<&GPIO5 11 GPIO_ACTIVE_HIGH_>;
reg =<0x30>;
RESET-GPIO =<&GPIO4 17 GPIO_ACTIVE_HIGH_>;

端口{
CAM:端点{
HSYNC-ACTIVE =<1>;
pclk-sample =<1>;
远程端点=<&V vin3a_EP>;
vsync-active =<1>;
};
};
};
};

vin3a{
vin3a_EP:端点{
远程端点=<凸轮>;
从模式;
};
};

我在这里学习如何使用 i2c-tools 测试摄像机设备是否正确配置。 我在运行以下命令时获得以下输出-

root@am57xx-EVM:~# i2cdetect -y 4.
警告:无法使用 SMBus 快速写入命令、将跳过一些地址
0 1 2 3 4 5 6 7 8 9 A b c d e f
00:
10:
20:
30:UU ---------- ----
40:
50:50 ---------- ------------ -- UU --
-- 60:
70: 

根据我的理解、"UU"代表我的摄像机设备、可能内核正在使用该设备。

root@am57xx-EVM:~# i2cdump -f -y 4 0x30
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50:01 00 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00?。 ?。 ?。
60:9A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00..........
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0:24 29 ff D2 f2 3a 00 92 04 00 90 B6 87 00 00 $)??????????????????
d0:5e df a0 21 cc 89 00 67 C5 ce b9 22 6F 54 F6 00 ^???????????????oT?。
E0:88 00 B1 00 26 00 00 a0 00 00 44 BA 03 00 00?????????????D??。
F0:B9 bf 55 9a 9a 01 3f 8e ae 59 12 D3 90 25 18 00????????? 是???%?。

我使用了0X30、具有芯片地址信道、这是在器件树文件中配置的。 执行 i2cget 命令后、该 i2cdump 输出会不断变化。

例如-如果我在 i2cget 命令之后执行、我会得到-

root@am57xx-EVM:~# i2cget -f -y 4 0x30 0xd0
0x3c

在0xd0地址处获得的值与我在 i2cdump 中看到的值不同。 现在、如果我再次执行 i2cdump 命令、我将获得不同的输出。

root@am57xx-EVM:~# i2cdump -f -y 4 0x30
未指定大小(使用字节数据访问)
0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
00:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50:00 00 00 00 00 C8 00 00 00 16 00 27 00 00 00 00 00...... ?????????????
60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
C0:02 28 45 ff 8f 00 16 80 00 bc B7 99 2c EB 00 ?(e?.???????,?..
D0:19 F4 1e E4 73 94 ff af 89 24 02 8d 95 0e ff 14???????????????
E0:00 04 8d BA 00 0A 00 1a 2D 00 29 CA F5 e0 00 .????????????????????
F0:6B 72 40 67 B7 4c 99 b1 8f 74 0d 0e 10 2f 20 00 kr@g?L?t??/。

我无法理解这里的情况是如何工作的。 请解释这种行为。

此致、

Devashish Tiwari

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

     您好 Devashish、

    请浏览器件的数据表、了解这些寄存器的含义以及每个位字段的 RESPNT。
    它们可能会随着时间的推移而变化。 您能否在电路板上附加完整的引导日志。

    我们需要将 i2c5与 Linux 上的实例相匹配。

    此致、
    基尔西

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

    您好!

    我没有相机的数据表。 您能否附加数据表链接? 我正在使用 TI 的摄像头模块。

    请查找附加的引导日志。

    e2e.ti.com/.../5353.bootlog.txt

    此致、

    Devashish

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

    您好 Devashish、

    我在数据表中看不到寄存器说明。

    我可以在此处找到一些寄存器说明:drivers/media/i2c/ov1063x_regs.h 在 Linux 目录中。

    请仔细检查。

    我确认您使用的是 i2c 用户空间命令的正确实例。 即:

    "[0.614799]   OMAP_i2c 4807c000.i2c:400kHz 时的总线4修订版0.12 "

    i2cget -f -y 4 0x30 0xd0

    是正确的命令。

    此致、
    基尔西

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

    您好!

    感谢您的回复。  

    我在互联网上搜索了 OV1063X 数据表、找到了一个。 谨随函附上,供你查阅。

    我想使用 i2c-tools 读取任何随机寄存器的值、并根据数据表中的值进行验证。

    数据表中有一个名为"寄存器表"的部分(第7节)。 我尝试使用 i2cget 读取一些值、但无法将其与数据表值匹配。

    我应该读出哪些值与数据表中的值匹配? 请共享命令以从寄存器读取值。

    e2e.ti.com/.../OV10633_2C00_OV10133.pdf

    此致、

    Devashish

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

    您好!

    这是关于此帖子回复的提醒。

    此致、

    Devashish

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

    您好!

    这是一个提醒,我仍在等待你对这一帖子的答复。

    此致、

    Devashish

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

    Devashish、

    抱歉。 我正在进行内部检查、并将很快回答。

    此致、
    基尔西

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

    您好 Devashish、

    有关 OV10635数据表、请联系 OmniVision。

    此致、

    Brijesh

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

    您好!

    我将等待您的回复。

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

    您好!

    我所附的数据表来自 OmniVision。

    请检查一下。

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

     ov10635是否直接连接到 EVM 板? 连接方式如何? 请帮帮我。  

    Rgds、

    Brijesh

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

    您好!

    我有一个 AM572x 评估模块 TMDSEVM572X。   我正在使用 TI 摄像头模块(TMDSCM572X AM57XX 摄像头板修订版 C)。 摄像机与 EVM 一起连接。

    它通过 EVM 上的并行接口(CPI)进行连接、i2c5总线用作控制路径。

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

    您好!

    您使用的是什么串行器和解串器?  还是摄像头直接连接到电路板?  

    摄像头是否还需要任何其他板模块进行设置?  

    此致、

    Brijesh

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

    您好!

    查看此链接: https://www.ti.com/tool/TMDSEVM572X

    我 有 相同的 EVM、它附带了连接摄像头的 EVM。

    此致、

    Devashish

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

    您好!

    请尝试使用为此电路板发布的标准 SDK。

    此致、

    Brijesh

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

    您好、Brijesh、

    我不知道“试用标准 SDK”是什么意思? 似乎我们一直在从原始查询中挖掘出来。 最初跟我一起跟进、然后你接手了。

    宜家检查原始问题。 我在原始文章中提到、我将 AM5728 EVM 与 TI Linux PSDK 6.03搭配使用。 PSDK 由 TI 提供、符合标准。 我的问题是使用 i2c-tools 从摄像头模块的寄存器中读取寄存器值、并将其与摄像头模块的数据表进行匹配。

    我先前已向您发送了包含寄存器信息的数据表。  

    我应该读出哪些值与数据表中的值匹配?  此外、共享从寄存器读取值的命令。

    此致、

    Devashish

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

    您好 Devashish、

    1、根据 您共享的规格、地址大小为16位。 因此、使用8位地址并不正确、因此需要为地址提供正确的数据。 您需要在  i2c 命令中额外提供模式以 指定大小。  

    2、我不是读取任何随机寄存器、而是建议读取一些标准寄存器、例如偏移量0x300A/B 的 PID 寄存器 这应该每次都给出固定值。  

    此致、

    Brijesh

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

    您好!

    从器件树文件中、我发现摄像头连接到 i2c5、芯片地址为0x30。

    &i2c5 {
            ov10635@30 {
                    compatible = "ovti,ov10635";
                    clock-names = "xvclk";
                    clocks = <&clk_ov10635>;
                    powerdown-gpios = <&gpio5 11 GPIO_ACTIVE_HIGH>;
                    reg = <0x30>;
                    reset-gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
    
                    port {
                            cam: endpoint {
                                    hsync-active = <1>;
                                    pclk-sample = <1>;
                                    remote-endpoint = <&vin3a_ep>;
                                    vsync-active = <1>;
                            };
                    };
            };
    };

    我使用以下命令读取寄存器、但收到无效值错误。  

    root@am57xx-evm:~# i2cget -f -y -a 4 0x30 0x300A
    Error: Data address invalid!
    

    此致、

    Devashish

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

    Devashish、

    您可以在结尾添加"W"吗? 根据 i2cget 文档、您可以通过添加"w"来指定16位的大小。

    Rgds、

    Brijesh

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

    我 将获得以下输出-

    i2cget -f -y -a 4 0x30 0x300A w
    Error: Data address invalid!
    Usage: i2cget [-f] [-y] [-a] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
      I2CBUS is an integer or an I2C bus name
      ADDRESS is an integer (0x03 - 0x77, or 0x00 - 0x7f if -a is given)
      MODE is one of:
        b (read byte data, default)
        w (read word data)
        c (write byte/read byte)
        Append p for SMBus PEC
    

    此致、

    Devashish

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

    您好!

    这是一个提醒,我正在等待你的答复。

    此致、

    Devashish

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

    您好!

    这是一个提醒、我正在等待您对 i2c-tools 用法的回复。

    此致、

    Devashish

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

    您好!

    这是一个重复的提醒、我正在等待您对此帖子的回复。

    此致、

    Devashish

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

    您好!

     我使用的 i2cget 命令出错。  

    请检查并恢复。

    此致、

    Devashish

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

    您好 Devashish、

    此问题是否仍然存在? 您是否能够使用 i2c 写入16位寄存器/值?

    此致、

    Brijesh