K230 Linux SDK 摄像头通道切换指南

Viewed 67

问题描述


K230 芯片支持 3 路摄像头(CSI0~CSI2),但在 Linux 操作系统下,受驱动限制目前只支持单路。本文以默认使用 CSI2 接口的 01Studio 板子为例,演示切换至 CSI1 接口的操作步骤。

一、根据你板子的硬件原理图,修改硬件配置

image.png

从硬件原理图可以看到,CSI1 使用 I2C1,需要打开 I2C1 接口,并且修改摄像头 I2C 配置信息

修改 DTS 配置文件,下面两个文件需要修改的地方是一样的

~/k230_linux_sdk/output/k230_canmv_01studio_defconfig/build/linux-7d4e1f444f461dbe3833bd99a4640e7b6c2cd529/arch/riscv/boot/dts/canaan/k230-canmv-01studio.dts

~/k230_linux_sdk/output/k230_canmv_01studio_defconfig/build/linux-7d4e1f444f461dbe3833bd99a4640e7b6c2cd529/arch/riscv/boot/dts/canaan/k230-canmv-01studio-lcd.dts

1、把右边的 i2c4 按照硬件原理图修改成 i2c1

image.png

2、使能 i2c1

image.png

3、修改 mipi0 配置信息

端口号 配置信息
CSI0 &mipi0 {
// set to csi0
id = <0>;
reg = <0x0 0x90000800 0x0 0x800>;
interrupts = <115 IRQ_TYPE_LEVEL_HIGH>;
resets = <&sysctl_reset K230_RESET_CSI0_REG_OFFSET K230_RESET_CSI0_TYPE K230_RESET_CSI0_DONE_BIT K230_RESET_CSI0_ASSERT_BIT>,
<&sysctl_reset K230_RESET_M0_REG_OFFSET K230_RESET_M0_TYPE K230_RESET_M0_DONE_BIT K230_RESET_M0_ASSERT_BIT>;
};
CSI1 &mipi0 {
// set to csi1
id = <1>;
reg = <0x0 0x90000800 0x0 0x800>;
interrupts = <118 IRQ_TYPE_LEVEL_HIGH>;
resets = <&sysctl_reset K230_RESET_CSI1_REG_OFFSET K230_RESET_CSI1_TYPE K230_RESET_CSI1_DONE_BIT K230_RESET_CSI1_ASSERT_BIT>,
<&sysctl_reset K230_RESET_M1_REG_OFFSET K230_RESET_M1_TYPE K230_RESET_M1_DONE_BIT K230_RESET_M1_ASSERT_BIT>;
};
CSI2 &mipi0 {
// set to csi2
id = <2>;
reg = <0x0 0x90000800 0x0 0x800>;
interrupts = <121 IRQ_TYPE_LEVEL_HIGH>;
resets = <&sysctl_reset K230_RESET_CSI2_REG_OFFSET K230_RESET_CSI2_TYPE K230_RESET_CSI2_DONE_BIT K230_RESET_CSI2_ASSERT_BIT>,
<&sysctl_reset K230_RESET_M2_REG_OFFSET K230_RESET_M2_TYPE K230_RESET_M2_DONE_BIT K230_RESET_M2_ASSERT_BIT>;
};

修改 Sensor 的 I2C_SLAVE_ADDRESS

例如我这边接入的是 GC2093 摄像头,需要修改驱动文件:
~/k230_linux_sdk/buildroot-overlay/package/vvcam/src/gc2093.c

image.png

需要根据自己手上的 Sensor 确定修改哪个文件。
目前我们已经适配的 Sensor 和地址对应如下:

Sensor Type I2C_SLAVE_ADDRESS
GC2093 0x7e or 0x37
GC2053 0x37
BY3238 0x6e
OV5647 0x36

注:GC2093 有两种模块,所以有两个值,两个都可以尝试一下

二、重新build并测试

在修改完上面代码之后,重新生成 IMG,重新烧写 IMG 并运行 demo 测试。

make linux-rebuild
make vvcam-rebuild
make
1 Answers