将树莓派摄像头模块连接到计算模块 IO 板
开始之前的注意事项
这些说明适用于专业用户,如果不清楚,请使用树莓派 Camera论坛寻求技术帮助。
除非另有明确说明,否则这些说明将在计算模块 IO 板上连接的计算模块和计算模块 3 上完全相同。
计算模块板功能
计算模块具有两个 CSI -2摄像机接口。 CAM0是两通道接口,CAM1是四通道接口。计算模块 IO 板公开了这两个接口,请注意,标准树莓派设备使用 CAM1 ,但仅公开了两个通道。
更新系统
摄像头软件正在不断开发中。在使用这些说明之前,请确保您的系统是最新的。
sudo apt update
sudp apt full-upgrade
加密芯片
当使用计算模块驱动相机时,将 OM5647 ,IMX219或 HQ 相机模块直接连接到计算模块载板上时,无需整合树莓派设计的相机板上使用的加密芯片。 树莓派固件将自动检测 CM ,并允许在不存在加密芯片的情况下与相机模块进行通信。
快速开始
1.在计算模块上,运行" sudo raspi-config"并启用相机。 1.接下来,运行 sudo wget http://goo.gl/U4t12b -O /boot/dt-blob.bin 1.将 RPI -CAMERA板和摄像机模块连接到 CAM1 端口。或者,可以使用 Pi Zero相机电缆。
![连接适配器板](images/CMAIO-Cam-Adapter.jpg)
1.如下所示将 GPIO 引脚连接在一起。
![单个摄像机的 GPIO 连接](images/CMIO-Cam-GPIO.jpg)
1.(可选)要添加其他摄像机,请对 CAM0 重复步骤 3 ,并连接第二个摄像机的 GPIO 引脚。
![与其他摄像机的 GPIO 连接](images/CMIO-Cam-GPIO2.jpg)
1.最后,重新启动以读取 dt -blob.bin文件。
软件支持
随附的相机应用程序" raspivid"和" raspistill"具有-cs(--camselect)选项,用于指定应使用的相机。
如果您要基于 MMAL API编写自己的相机应用程序,则可以使用 MMAL _PARAMETER_CAMERA_NUM参数设置当前相机。例如。
MMAL_PARAMETER_INT32_T camera_num = {{MMAL_PARAMETER_CAMERA_NUM,sizeof(camera_num)},CAMERA_NUMBER};
状态= mmal_port_parameter_set(camera-> control,&camera_num.hdr);
高级
计算模块 IO 板的每个摄像头端口均具有 22 路 0 .5mm FFC,CAM0为两通道接口,CAM1为完整的四通道接口。标准的树莓派使用 15 通 1mm FFC电缆,因此您将需要适配器(零件号 RPI -CAMERA)或 Pi Zero摄像机电缆。
在计算模块 IO 板上,有必要将树莓派 OS所需的 GPIO 和 I2C 接口桥接到 CAM1 连接器。这是通过使用跨接线将 GPIO 从 J6 GPIO连接器连接到 J5 连接器上的 CD1 _SDA/SCL和 CAM1 _IO0/1引脚来完成的。此外,还需要提供一个 dt -blob.bin文件来覆盖默认的引脚状态(dt-blob.bin文件是一个文件,告诉 GPU 控制相机时使用哪些引脚。有关此信息,请参阅将外围设备连接到计算模块的指南中的相关部分此处)。
下面的引脚号仅作为示例提供。如果需要,两个摄像机可以共享 LED 和 SHUTDOWN 引脚。 SDA和 SCL 引脚必须是 GPIO0 和 GPIO1 或 GPIO28 和 29 ,并且对于每个摄像机都必须是单独的。
将树莓派相机连接到 CAM1 的步骤
1.将 0 .5mm 22W FFC flexi(RPI-CAMERA板随附)连接到 CAM1 连接器(柔性触点面朝下)。或者,可以使用 Pi Zero相机电缆。 1.将 RPI -CAMERA适配器板连接到 0 .5mm柔性电缆的另一端(柔性触点面朝下)。 1.将树莓派摄像机与 RPI -CAMERA适配器板上的另一个更大的 15W 1mm FFC相连( 树莓派 Camera flex上的触点必须朝上)。 1.将 CD1 _SDA(J6引脚 37 )连接到 GPIO0 (J5引脚 1 )。 1.将 CD1 _SCL(J6引脚 39 )连接到 GPIO1 (J5引脚 3 )。 1.将 CAM1 _IO1(J6引脚 41 )连接到 GPIO2 (J5引脚 5 )。 1.将 CAM1 _IO0(J6引脚 43 )连接到 GPIO3 (J5引脚 7 )。
注意,括号中的数字是常规的物理针脚编号,从左到右,从上到下编号。丝网印刷上的数字与 Broadcom SoC GPIO编号相对应。
配置默认引脚状态我们用于相机的 GPIO 默认为计算模块上的输入模式。要覆盖这些默认设置并告诉系统这些是相机要使用的引脚,我们需要创建一个dt-blob.bin系统启动时由固件加载的
。此文件从包含要求的设置的源 dts 文件构建,并放置在引导分区上。
本文档底部提供了一些示例设备树源文件。
源 dts 的" pins_cm {}"(计算模块)或" pins_cm3 {}(计算模块 3 )"部分中的" pin_config"部分需要将摄像机的 LED 和电源启用引脚设置为输出:
pin @ p2 {function =" output";终止=" no_pulling"; };
pin @ p3 {function =" output";终止=" no_pulling"; };
要告诉固件使用哪个引脚以及要查找多少个摄像机,请在" pin_defines"部分中添加以下内容:
pin_define @ CAMERA_0_LED {类型="内部";数字= <2>; };
pin_define @ CAMERA_0_SHUTDOWN {类型="内部";数字= <3>; };
pin_define @ CAMERA_0_UNICAM_PORT {type =" internal";数字= <1>; };
pin_define @ CAMERA_0_I2C_PORT {type =" internal";数字= <0>; };
pin_define @ CAMERA_0_SDA_PIN {类型="内部";数字= <0>; };
pin_define @ CAMERA_0_SCL_PIN {类型="内部";数字= <1>; };
如何安装两个相机
像以前一样将第二个摄像机连接到(CAM0)连接器。
连接 I2C 和 GPIO 线。
1.将 CD0 _SDA(J6引脚 45 )连接到 GPIO28 (J6引脚 1 )。 1.将 CD0 _SCL(J6引脚 47 )连接到 GPIO29 (J6引脚 3 )。 1.将 CAM0 _IO1(J6引脚 49 )连接到 GPIO30 (J6引脚 5 )。 1.将 CAM0 _IO0(J6引脚 51 )连接到 GPIO31 (J6引脚 7 )。
计算模块的 pin_config 部分需要配置第二个摄像头的 LED 和电源使能引脚:
pin @ p30 {function =" output";终止=" no_pulling"; };
pin @ p31 {function =" output";终止=" no_pulling"; };
在 dts 文件的计算模块的 pin_defines 部分中,将 NUM _CAMERAS **参数更改为 2 并添加以下内容:
pin_define @ CAMERA_1_LED {类型="内部";数字= <30>; };
pin_define @ CAMERA_1_SHUTDOWN {类型="内部";数字= <31>; };
pin_define @ CAMERA_1_UNICAM_PORT {type =" internal";数字= <0>; };
pin_define @ CAMERA_1_I2C_PORT {type =" internal";数字= <0>; };
pin_define @ CAMERA_1_SDA_PIN {类型="内部";数字= <28>; };
pin_define @ CAMERA_1_SCL_PIN {类型="内部";数字= <29>; };
示例设备树源文件
将 DTS 文件编译为设备树 blob
对 dts 文件进行所有必需的更改后,需要对其进行编译并将其放置在设备的启动分区中。
可以在Pin Configuration页面上找到执行此操作的说明。