CM4-IO-BASE-A - Waveshare Wiki
原理图描述
CM4上有2个摄像头接口:2线CAM0和4线CAM1,每个摄像头需要一个I2C来控制。在CM4IO板子上,CAM0使用的是ID_I2C(PIN0,PIN1),CAM1使用的是I2C0(PIN44, PIN45)。
CM4中的这两路I2C通常用于控制摄像头,也可以用来控制DSI输出。(也可以选择其他I2C来控制它们)
SENSORKIT上只用了CMA1,并使用I2C0(PIN44, PIN45)控制它。
摄像头设备树
CM4使用OVERALY动态配置摄像头的设备树,这里有不同型号的摄像头所用的设备树文件。设备树文件用来描述硬件,即CSI0和CSI1所用引脚和寄存器。
在CONFIG.TXT中添加dtoverlay=imx219,cam1选项,内核会自动加载设备树。cam1是参数,表明我们用了CSI1这个口(引脚和寄存器)。
Note:如果不加后面的参数,将不起作用
I2C接口
通过CONFIG.TXT文件,加载了IMX219设备树,从而启动了驱动。这里会自动打开I2C,我不知道为什么。
摄像头测试
根据原理图可知,我们的IMX219摄像头连接在了树莓派的CSI1引脚上,并且通过CONFIG.TXT文件中加载了IMX219,CAM1的设备树,这样它会自动匹配并加载驱动。完成后,我们便可以使用它。
总结
1. 配置CONFIG.TXT,添加dtoverlay=imx219,cam1
2.测试CAM1,执行libcamera-hello --list-cameras, libcamemra-jpeg -o test.jpg