Skip to content

相机接口记录

工作中有一个项目涉及到摄像头的接口转换,要用的 sensor 是按照 MIPI 接口来做的,而 esp32 不支持直接连接 MIPI 接口,所以要转成 DVP 接口。期间遇到好多接口,搞得自己也好乱,好在同事比较了解,帮我理清了好多。现在记录一下,免得以后又忘了。

USB 接口

一些商用的摄像头都会有这种接口,插在电脑上直接免驱用。但是对于 ESP32 单片机,目前仅 ESP32-S2、ESP32-S3 支持 USB 接口,USB 接口为芯片指定管脚 GPIO19(D-)GPIO20(D+)

之所以免驱,是因为大多数现代 USB 摄像头都支持 UVC(USB Video Class)协议。这是一种通用标准协议,操作系统内部都会实现 UVC 协议支持。而 ESP32 不同型号不同用途,有些型号连 USB Host 都没有,更别谈 UVC 协议支持。而支持 UVC 协议意味着单片机本身的资源能处理过来数据,所以 ESP32 一般都是相对贵一点的型号内置的系统才会支持。

DVP 接口

一般 ESP32 会支持 DVP 接口,因为这真是很老的协议,很多低分辨率嵌入式摄像头模组会使用。DVP 是并口,所以线很多,速度也很慢,抗干扰能力也差,总之缺点一大堆.. 但总之是资源和目的的权衡,现在很多摄像头都还是 DVP 接口。

MIPI (CSI) 接口

这里我当时就乱掉了,网上的资料也都很乱。其实在摄像头接口中,可以理解成 MIPI 就是 CSI。MIPI 接口(或者叫协议)有两种:MIPI CSI 和 MIPI DSI,前面是用在摄像头的,后面是用于显示屏的(camera 和 display)。

这个接口是差分串口传输,速度快,抗干扰。主流手机模组现在都是用 MIPI 传输。

LVDS 接口

另一种相对快速的接口。

接口转换

每个 sensor 支持的接口是不同的,这要看 sensor 厂商的心情,所以很有可能 『sensor 支持的接口』 和 『连接主机支持的接口』 是不匹配的。比如有个项目就是 sensor 只支持 MIPI,但是用的 ESP32 只支持 DVP,所以需要一个转换器。

比如 STM32MP1,这个转换器的手册图如下:

参考资料

1. https://blog.csdn.net/Marchtwentytwo/article/details/127214654
2. https://blog.csdn.net/quicmous/article/details/114922463

Comments