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为主。

相关推荐
是翎10 小时前
2026 Agent Eval 全景图:从“会做”到“值得部署”
人工智能·驱动开发·深度学习·开源协议·imagen
智者知已应修善业21 小时前
【4060BD_5V应用电路图】2022-12-24
驱动开发·经验分享·笔记·硬件架构·硬件工程
码农客栈1 天前
Linux 音频驱动实验
驱动开发
码农客栈1 天前
Linux CAN 驱动
linux·驱动开发
威嵌神州1 天前
VxWorks6.9 BSP 适配:飞腾 D2000/FT2000/4 平台、驱动开发
驱动开发·嵌入式硬件·fpga开发·系统架构
mk0152 天前
电动自行车汽车工业系统电机驱动100V高压恒定导向芯片进口替代
驱动开发·单片机·硬件工程·智能硬件·pcb工艺
威嵌神州2 天前
天脉 3 开发环境与 BSP 适配:IDE license、驱动开发、飞腾平台
ide·驱动开发·嵌入式硬件·fpga开发
sukalot3 天前
windows 驱动实例分析系列: HidHide 驱动分析 - drivers 篇(四)
windows·驱动开发
DYWorker0013 天前
Linux驱动子系统:DMA-Buf —— Consumer和Provider(008)
linux·驱动开发
国产HT1621B3 天前
显示省不了电,休眠才见真章:1621 低功耗实操
驱动开发·单片机·嵌入式硬件·led驱动·lcd驱动