本文介绍Jetson Nano通过CSI接口连接外部Sensor驱动调试注意事项。
1.I2C配置
Jetson Nano默认I2C采用的是CAM_I2C,但有时候硬件设计时采用的是其他I2C,如:
i2c0 = "/i2c@7000c000";
i2c1 = "/i2c@7000c400";
i2c2 = "/i2c@7000c500";
i2c3 = "/i2c@7000c700";
i2c4 = "/i2c@7000d000";
i2c5 = "/i2c@7000d100";
i2c6 = "/host1x/i2c@546c0000";
这里要注意在配置设备树时I2C的路径是不一样的,CAM_I2C采用的是编号为6的I2C,那么它的路径就是:/host1x/,而其他路径都是在根目录下,编写设备树时尤其注意。
如采用CAM_I2C设备树配置:
/ {
host1x {
i2c@546c0000 {
rbpcv2_ov9734_a@10 {
reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
};
};
};
gpio@6000d000 {
camera-control-output-low {
gpio-hog;
output-low;
gpios = < CAM1_PWDN 0 >;
label = "cam1-pwdn";
};
};
};
而采用I2C1时设备树配置:
/ {
i2c@7000c400 {
rbpcv2_os08a10_a@36 {
clocks = <&tegra_car TEGRA210_CLK_CLK_OUT_3>;
clock-names = "clk_out_3";
clock-frequency = <24000000>;
mclk = "clk_out_3";
reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
};
};
gpio@6000d000 {
camera-control-output-low {
gpio-hog;
output-high;
gpios = < CAM1_PWDN 0 >;
label = "cam1-pwdn";
};
};
};
可以明显看出路径的不同。
同时注意:proc-device-tree = "/proc/device-tree/host1x/i2c@546c0000/rbpcv2_ov9734_a@10";这个地方也需作相应的修改。
2.MCLK配置
如果Sensor没有外接晶振,想使用Jetson Nano的MCLK输出作为时钟源,可在相应的块中,加入如下配置:
i2c@7000c400 {
rbpcv2_ov9734_a@36 {
clocks = <&tegra_car TEGRA210_CLK_CLK_OUT_3>;
clock-names = "clk_out_3";
clock-frequency = <24000000>;
mclk = "clk_out_3";
reset-gpios = <&gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
};
};
这里可以看出,MCLK采用的是clk_out_3进行输出的,这里设置的是24MHz输出,添加完此配置,MCLK0,MCLK1都是有输出的(相机启动时才有)。
3.port-index
port-index:0-5
分别对应CSI_A,B,C,D,E,F
如采用CSI_C,则port-index=2,DTS中相关配置:
tegra_sinterface = "serial_c";
port-index = <2>;