Firefly开源社区

12
发表新贴

[技术讨论] i2通信异常 rk628 4-0050: failed to access register: -6

123

积分

0

威望

0

贡献

技术小白

积分
123
发表于 2022-3-29 21:46:28     
  • 固件类型: 自行编译的固件
  • SDK包名称: Firefly-RK356X_Android11.0_git_20210824
  • SDK更新到哪个COMMIT: 0000-00-00 00:00:00
  • SDK修改内容: rk3568-firefly-aioj.dts中添加了rk628d的设备节点
  • Log日志: log (2).zip
问题描述及复现步骤:
问题如下图log日志中截取部分:
e45a95237db27e9528c7287890d8267.png

i2c读取不到rk628d

核心板:core-3568j
行业版:aio-3568j
所驱动芯片:瑞芯微rk628d

步骤:
1.kernel config配置
5ae30f121500aec7246e104311fdbe3.png 579c34eec13b4ef05b9488f6546d3d2.png

2.dts配置
修改的dts为rk3568-firefly-aioj.dts

硬件连接如下:
i2c采用ic4(位于mipi_csi中),中断采用tp端子中的int脚,复位采用tp端子中的res脚。
a8e1f99327108e51f30b71b35dd7239.jpg

74e963d5fa288ca8d2a9f2d3138f23c.jpg

d679a851b305da481ef58f0f71d3ba9.png

44da5342cbb82afe8ca6e4263af5d8f.png

a66e21440adfa5cd8e01f5eaad3343a.jpg

连接如图:(rk628的开发板i2c要单独接出来,采用常供电)
eda092d285ae4495ce0a6fbc7e352f4.jpg

参考连接(rk官方提供的连接方法):
310ad534c12144dff2cddc2ac7a8f3c.jpg


dts代码如下:其中部分代码参考子rk官方提供的节点配置以及安卓内核中部分其他主板的rk628驱动dts
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2020 Rockchip Electronics Co., Ltd.
*
*/


#include "rk3568-firefly-aioj.dtsi"
/*
*                               Select one of the three
* using single camera xc7160 ----> rk3568-firefly-aioj-cam-8ms1m.dtsi
* using dual camera gc2053/gc2093   ----> rk3568-firefly-aioj-cam-2ms2m.dtsi
* using hdmi-in module rk628d   ----> rk3568-firefly-aioj-tf-hdmi-mipi-rk628.dtsi
*/
#include "rk3568-firefly-aioj-cam-8ms1m.dtsi"
//#include "rk3568-firefly-aioj-cam-2ms2m.dtsi"
//#include "rk3568-firefly-aioj-tf-hdmi-mipi-rk628.dtsi"



/ {
    model = "AIO-3568J HDMI (Android)";
    compatible = "rockchip,rk3568-firefly-aioj", "rockchip,rk3568";

};

&route_hdmi {
    status = "okay";
    connect = <&vp0_out_hdmi>;
};

&i2c4{
    clock-frequency = <400000>;
    status = "okay";

    rk628: rk628@50{
        reg = <0x50>;
        interrupt-parent = <&gpio3>;
        interrupts = <RK_PA3 IRQ_TYPE_LEVEL_HIGH>;

        reset-gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>;
        status = "okay";

    };
};

#include <arm/rk628.dtsi>

&rk628_combtxphy{
    status = "okay";
};

&rk628_combrxphy{
    status = "okay";
};

&rk628_csi {
    status = "okay";
    /** If the hpd output level is inverted on the circuit, * the following configuration needs to be enabled. */
    /* hpd-output-inverted; */
    plugin-det-gpios = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>; //
    //power-gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
    rockchip,camera-module-index = <0>;
    rockchip,camera-module-facing = "back";
    rockchip,camera-module-name = "RK628-CSI";
    rockchip,camera-module-lens-name = "NC";

    port {
        hdmiin_out0: endpoint {
            remote-endpoint = <&mipi_in>;
            data-lanes = <1 2 3 4>;
        };
    };
};

&csi2_dphy_hw {
    status = "okay";
};

&csi2_dphy0 {
    status = "okay";

    ports {
        #address-cells = <1>;
        #size-cells = <0>;
        port@0 {
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;

            mipi_in: endpoint@0 {
                reg = <0>;
                remote-endpoint = <&hdmiin_out0>;
                data-lanes = <1 2 3 4>;
            };
        };

        port@1 {
            reg = <1>;
            #address-cells = <1>;
            #size-cells = <0>;

            csidphy0_out: endpoint@0 {
                reg = <0>;
                remote-endpoint = <&isp0_in>;
            };
        };
    };
};

&rkisp {
    status = "okay";
};

&rkisp_mmu {
    status = "okay";
};

&rkisp_vir0 {
    status = "okay";

    port {
        #address-cells = <1>;
        #size-cells = <0>;

        isp0_in: endpoint@0 {
            reg = <0>;
            remote-endpoint = <&csidphy0_out>;
        };
    };
};


编译结果:
1648560526(1).jpg


log中i2c读取不到设备,返回错误码6.
e45a95237db27e9528c7287890d8267.png


已确定:
1.i2c地址设置没有问题,
1648560682(1).png

2.硬件连接没有问题,3568与rk628的i2c相连,rk628供电正常,上电后芯片发热,系统开机是3568会给628d输入一个拉高的边沿脉冲,即供电和置为ok。FPC连接没有问题。
3.考虑过是否是dts中时序的问题,对dts中clock-frequency进行过修改,400000,40000,10000等时序都尝试过,依旧注册不上。

萌新求助 ==

1648555758(1).png
54629f8cc569ebe882075f162581a64.jpg
a8e1f99327108e51f30b71b35dd7239.jpg

log (2).zip

27.82 KB, 下载次数: 0, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-3-30 09:15:27     
排查一下是否是rk628d复位不成功
回复

使用道具 举报

123

积分

0

威望

0

贡献

技术小白

积分
123
发表于 2022-4-6 16:28:16     
zyk 发表于 2022-3-30 09:15
排查一下是否是rk628d复位不成功

之前的628d芯片发热严重,换了个新板子没有明显发热,之前的芯片应该是坏了。
回复

使用道具 举报

123

积分

0

威望

0

贡献

技术小白

积分
123
发表于 2022-4-6 16:43:14     
zyk 发表于 2022-3-30 09:15
排查一下是否是rk628d复位不成功

但是烧录固件后依旧不行,rk628 4-0050: failed to access register: -6
检查复位端,rk628d有复位信号输入,其低电平有效,系统正常运行的情况下为3.3v,检测控制io输出3.3v,到rk628d芯片上就只有1v了(即杜邦线两端一端3.3v一端1v,电压被分掉了)。
但是有人已经调通了,这个应该没有影响。
回复

使用道具 举报

123

积分

0

威望

0

贡献

技术小白

积分
123
发表于 2022-4-6 16:56:19     
362412a3a8236f749f2b0129f0c930b.png
62264aeef0fc3443ae6f9283a4d3192.png

46f4f7f8915245367b09d2360d49403.png

817133fdaa99166313a7a5f634fcb7f.png

cat /sys/kernel/debug/pinctrl/pinctrl-rockchip-pinctrl/pinmux-pins
检查gpio口功能,结果如上,3-3和3-5gpio无主,把我写的dts注释掉后编译烧录,gpio口功能设置没有发生变化。
怀疑是否是3-3和3-5gpio口功能设置有问题
但是修改dtsgpio3-3和gpio3-5引脚的配置,对应引脚电平有变化。
回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-4-6 17:29:02     
513453733 发表于 2022-4-6 16:43
但是烧录固件后依旧不行,rk628 4-0050: failed to access register: -6
检查复位端,rk628d有复位信号 ...

确定不需要3.3V吗。我记得是需要3.3V的
回复

使用道具 举报

123

积分

0

威望

0

贡献

技术小白

积分
123
发表于 2022-4-6 22:20:00     
zyk 发表于 2022-4-6 17:29
确定不需要3.3V吗。我记得是需要3.3V的

控制io是3.3v,是电压输过去会掉电,两个板子都有这个问题而且int端口也有掉电这个现象,说明这应该是个普遍问题.
回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-4-6 23:10:39     
分压的话就没办法,只能尝试硬件上能否去掉分压。我司设计的RK628D模块是会转一下的,模块近期应该会上线。目前RK356X上使用RK628D,需要修改的东西不少,原厂主要维护forall版本,如果走vicap,目前库还没兼容;走isp的用4K需要进行超频
回复

使用道具 举报

123

积分

0

威望

0

贡献

技术小白

积分
123
发表于 2022-4-19 10:21:51     
zyk 发表于 2022-4-6 23:10
分压的话就没办法,只能尝试硬件上能否去掉分压。我司设计的RK628D模块是会转一下的,模块近期应该会上线。 ...

您好,我昨天又看了一下,有以下几个疑问。
1.关于之前分压的问题,我换了个rk3568-evb2-lp4x-v10的固件,连接杜邦线两端分压问题消失,原因不知道。
2.rk628d int端一直是0.72v,原本的控制中断的GPIO口设置为高电平输出3.3v时,int端也为0.72v。
3.rk628d int端不与主控芯片连接时,628复位端一直是0V(控制复位端的GPIO输出3.3v),只有将int端口与主控芯片连接到一起的时候,628d复位端才会变成3.3v,正常芯片中复位端与int端不应该是独立的吗?
4.3568的控制中断的GPIO口无论设置IRQ_TYPE_LEVEL_HIGH还是IRQ_TYPE_LEVEL_LOW常状态下检测都是0v。
5.我在一次登录load模式时,上电后3568没有反应,正常上电后也没有反应,3568板载上power端子12v脚有电,3.3v和5v没电,目前尝试过对emmc和nor flash进行清空,无效。怀疑是供电变压内边给烧掉了,请问如何检测。
回复

使用道具 举报

1万

积分

18

威望

20

贡献

神级创客

Rank: 8Rank: 8

积分
10850

突出贡献

发表于 2022-4-21 11:53:14     
rk3568-evb2-lp4x-v10的固件具体是哪个板子?
中断就算不用,rk628也是可以起来的,配置就行,所以这个可以跳过先,确保可以起来
对于第5点,只是一次有问题,还是一直有问题
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表