i2通信异常 rk628 4-0050: failed to access register: -6
问题如下图log日志中截取部分:i2c读取不到rk628d
核心板:core-3568j
行业版:aio-3568j
所驱动芯片:瑞芯微rk628d
步骤:
1.kernel config配置
2.dts配置
修改的dts为rk3568-firefly-aioj.dts
硬件连接如下:
i2c采用ic4(位于mipi_csi中),中断采用tp端子中的int脚,复位采用tp端子中的res脚。
连接如图:(rk628的开发板i2c要单独接出来,采用常供电)
参考连接(rk官方提供的连接方法):
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>;
};
};
};
编译结果:
log中i2c读取不到设备,返回错误码6.
已确定:
1.i2c地址设置没有问题,
2.硬件连接没有问题,3568与rk628的i2c相连,rk628供电正常,上电后芯片发热,系统开机是3568会给628d输入一个拉高的边沿脉冲,即供电和置为ok。FPC连接没有问题。
3.考虑过是否是dts中时序的问题,对dts中clock-frequency进行过修改,400000,40000,10000等时序都尝试过,依旧注册不上。
萌新求助 ==
排查一下是否是rk628d复位不成功 zyk 发表于 2022-3-30 09:15
排查一下是否是rk628d复位不成功
之前的628d芯片发热严重,换了个新板子没有明显发热,之前的芯片应该是坏了。
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,电压被分掉了)。
但是有人已经调通了,这个应该没有影响。
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引脚的配置,对应引脚电平有变化。
513453733 发表于 2022-4-6 16:43
但是烧录固件后依旧不行,rk628 4-0050: failed to access register: -6
检查复位端,rk628d有复位信号 ...
确定不需要3.3V吗。我记得是需要3.3V的 zyk 发表于 2022-4-6 17:29
确定不需要3.3V吗。我记得是需要3.3V的
控制io是3.3v,是电压输过去会掉电,两个板子都有这个问题而且int端口也有掉电这个现象,说明这应该是个普遍问题. 分压的话就没办法,只能尝试硬件上能否去掉分压。我司设计的RK628D模块是会转一下的,模块近期应该会上线。目前RK356X上使用RK628D,需要修改的东西不少,原厂主要维护forall版本,如果走vicap,目前库还没兼容;走isp的用4K需要进行超频 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进行清空,无效。怀疑是供电变压内边给烧掉了,请问如何检测。 rk3568-evb2-lp4x-v10的固件具体是哪个板子?
中断就算不用,rk628也是可以起来的,配置就行,所以这个可以跳过先,确保可以起来
对于第5点,只是一次有问题,还是一直有问题
页:
[1]
2