1. 从零开始:全志V3S与摄像头、屏幕的硬件连接与选型
如果你手头有一块全志V3S的开发板,比如荔枝派Zero,想用它来做个简单的摄像头监控、图像识别或者只是玩玩实时图像显示,那么OV2640和OV7725这两款经典的摄像头模组绝对是性价比极高的选择。它们价格便宜,资料也多,搭配一块小巧的ST7789V驱动的LCD屏,就能组成一个完整的嵌入式视觉小系统。我刚开始玩V3S的时候,也是从这两个摄像头入手的,实测下来,OV7725对新手更友好,驱动简单,帧率稳定;OV2640则像素更高,功能更丰富,但调起来需要多花点心思。
在动手写代码之前,硬件连接是第一步,也是最容易踩坑的地方。全志V3S的CSI(摄像头串行接口)引脚主要集中在PE口。你需要将摄像头的D0-D7数据线、行场同步信号、像素时钟等引脚,一一对应连接到V3S的CSI接口上。这里有个关键点:电源和时钟。OV2640和OV7725通常都需要一个24MHz的主时钟(XCLK),这个时钟需要由V3S的CSI_MCLK引脚(通常是PE1)来提供。我遇到过好几次图像采集全是噪点或者干脆没数据的情况,最后查下来都是这个24MHz时钟没供上或者不稳定。确保在设备树里正确配置了CSI_MCLK的引脚复用和时钟源,这是后续一切工作的基础。
至于ST7789V屏幕,它通常通过SPI接口与主控通信。V3S的SPI0引脚(PC0-PC3)就可以用来驱动它。连接时,除了SPI的MOSI、SCLK,别忘了还有至关重要的DC(数据/命令)和RESET引脚,它们需要用普通的GPIO来控制。硬件连接看似是体力活,但每一个接触不良的杜邦线,都可能让你在调试软件时多花好几个小时。我的经验是,焊接排针和FPC座比用杜邦线插接要可靠得多,尤其是需要移动的场景。
2. 内核与设备树:为摄像头和屏幕铺平道路
硬件连好了,接下来就得让Linux内核认识它们。全志V3S在主线Linux内核(比如5.10及以上版本)中已经有了很好的支持,我们需要做的就是在设备树(Device Tree)里正确地描述我们的硬件连接。这个过程就像是给内核画一张“硬件地图”。
首先,确保内核配置包含了必要的驱动。 在内核源码目录下,执行 make menuconfig,你需要找到并开启以下关键选项:
Device Drivers -> Multimedia support -> V4L platform devices -> sun8i A83T CSI controller(这是V3S的CSI控制器驱动)Device Drivers -> Multimedia support -> Video capture adapters -> V4L USB devices以及OV2640 camera sensor和OV7725 camera sensor(把摄像头传感器驱动编译进内核,或者编译成模块)。Device Drivers -> Staging drivers -> Support for small TFT LCD display modules -> Sitronix ST7789V LCD controller(ST7789V的驱动可能在Staging目录下,需要启用)。- 非常重要的一点:确保
V4L2 (Video for Linux 2)框架和Memory-to-memory multimedia devices下的Videobuf2被启用。没有Videobuf2,/dev/video0节点就不会出现,你的应用程序将无法申请图像缓冲区。
接下来是重头戏:修改设备树。 通常我们需要修改两个文件:sun8i-v3s.dtsi(定义SoC级的外设)和对应的板级设备树文件(如 sun8i-v3s-licheepi-zero-dock.dts)。在 sun8i-v3s.dtsi 的 pinctrl 节点中,我们需要添加CSI接口的引脚复用配置。就像原始文章里那样,定义 csi1_8bit_pins、csi1_mclk_pi
1万+



被折叠的 条评论
为什么被折叠?



