Linux camera驱动开发(DVP接口的camera sensor)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

很多的sensor除了支持mipi接口之外,还支持dvp接口。实际运行过程当中,开启哪一种接口,就看i2c是如何配置sensor的。对于低分辨率的camera,dvp使用还是比较多的。但是如果分辨率比较高,例如4k 800w像素以上,那么用dvp就很吃力了,这个时候一般就是mipi接口。

1、数据传输

不管是mipi接口,还是dvp接口,都是为了数据传输使用。如果只是对sensor进行属性设置,比如分辨率、帧率、传输bit数、文件格式这些,那么还是i2c实现。一旦涉及到数据传输,一般要么是mipi,要么是dvp。

2、dvp和rgb屏幕

**本身dvp和rgb屏幕非常相似,中间最大的区别就是data的方向。**其他信号部分,rgb有的,dvp也都有。所以,大家如果有类似屏幕开发的经验,那么可以很快学会dvp接口。从信号上来说,主要的接口就是数据位、使能位、场同步、行同步、复位、数据位时钟。

3、dvp数据接口和v4l2框架不冲突

不管是dvp,还是mipi,这些都是数据传输的方法,和v4l2并不冲突。在v4l2里面,有一个video device的概念,还有一个sub device的概念。这个video device,就是camera的概念。而sub device,可以是gpio、可以是sensor。实际应用中,一般都是sensor为主。

实际camera传输之前,都是v4l2配置好、mipi/dvp配置好、dma配置好、sensor配置好,然后再进行数据传输。要关闭视频流的话,反过来操作即可。

4、soc侧配置dvp

我们对sensor的配置,一般都是通过i2c来完成的,这个很容易做到。而对dvp的配置,则是需要soc来完成。比如说,起初我们得告诉sensor,配置的分辨率是多少、图像格式是什么、帧率是多少,这样sensor才能准备好。

**不光sensor要准备好,soc这一侧也要准备好数据的接收。**相关的参数也需要告诉soc。比如,得到了分辨率信息,那么就需要把clk信息设置下去;中间根据frame长、宽的信息,配置一下行同步和场同步;开启stream之后,需要打开data enable;数据位配置的时候,需要告知soc,当前是8bit还是其他的,毕竟很多sensor还支持10bit、12bit。这样所有数据都配置ok之后,soc侧就可以接收数据了。

如果要做得更好一点,一般ip还要预留一些内部queue buffer用于8 bit data数据的存放。实际运行的时候,soc侧拿到的数据都会预先放到提前准备好的buffer里面。等到buffer积累到一定程度,再用dma把数据从buffer copy到ddr里面。这样等到一张图片放满了,就可以准备存放下一张图片了。如果一张图片满了,还可以interrupt提醒一下上层应用,告知可以提取data了,当然这些都是soc侧ip的处理工作了。

上面这些内容基本上都是可以根据rgb屏幕的经验,逆向反推过来。实际运行的时候,也是根据这些交互的逻辑,去准备对应的软件驱动代码。

5、低端带isp的sensor

很多中低端的sensor,本身是带有isp的,遇到这种情况的话,其实就不需要soc带isp了,例如ov5640。那么这些sensor连接到soc之后,对soc的要求就很低了。这样只需要一些网络接口、编解码接口、屏幕接口,就可以用这些sensor来做很多的产品了。很多的mcu现在也可以连接dvp的sensor,但是由于这些mcu普遍没有编解码和网络传输,所以应用方面,带camera sensor的场景,还是以soc为主。

相关推荐
yzx9910137 小时前
从命令行到认知时代:GitHub 指令使用与自动化工作流深度实践
驱动开发·自动化·github
凉、介9 小时前
深入 LWIP:数据是如何被封装并发送出去的
网络·驱动开发·笔记·学习·嵌入式
阿拉斯攀登1 天前
第 7 篇 安卓驱动开发的灵魂:字符设备驱动框架,从原理到最简实战
android·驱动开发·rk3568·嵌入式驱动·安卓驱动
阿拉斯攀登1 天前
第 1 篇 入坑不亏!瑞芯微 RK 平台 + 安卓驱动开发,小白全维度扫盲
android·驱动开发·rk3568·嵌入式驱动
春日见2 天前
端到端大模型自动驾驶
java·开发语言·驱动开发·docker·自动驾驶·计算机外设
Lueeee.2 天前
Linux下的ULN2003驱动板与28BYJ-48步进电机驱动移植
linux·驱动开发
被遗忘的旋律.2 天前
Linux驱动开发笔记(二十六)——PWM(SG90驱动)
linux·驱动开发·笔记
棒棒的唐2 天前
你的Panther X2 (RK356x) NPU驱动
驱动开发
Saniffer_SH2 天前
【每日一题】PCIe链路协商的时候进入Polling compliance如何排错?
服务器·人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·自动化
Saniffer_SH3 天前
【高清视频】4小时带你了解Saniffer公司针对PCIe Gen6测试的最新白皮书15.X
网络·人工智能·驱动开发·嵌入式硬件·测试工具·计算机外设·压力测试