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

相关推荐
我爱吃土豆120 小时前
Gin响应形式
驱动开发·gin
_Emma_1 天前
【QCOM】 Linux下qcom venus 编解码驱动框架分析
linux·驱动开发·视频编解码
春日见2 天前
TEST文件夹:Pytest,集成测试,单元测试
服务器·人工智能·驱动开发·单元测试·计算机外设·集成测试·pytest
清水白石0082 天前
Python 项目 CI/CD 信心模型:证据驱动部署,从“勇敢上线”到“零风险发版”实战指南
驱动开发·python·ci/cd
A.说学逗唱的Coke2 天前
【AI协同软件工程】规范驱动开发工具全景解析:OpenSpec、SpecKit与传统SDD工具深度对比指南
人工智能·驱动开发·软件工程
国医中兴2 天前
Flutter 三方库 pickled_cucumber 的鸿蒙化适配指南 - 玩转 BDD 行为驱动开发、Gherkin 自动化测试实战、鸿蒙级质量守护神
驱动开发·flutter·harmonyos
tdhao8882 天前
部署 VS2022 驱动开发环境-解决无法编译驱动的问题
驱动开发·visual studio
篮子里的玫瑰3 天前
智能天气时钟项目(二):AHT20温湿度传感器驱动开发详解
驱动开发
欲盖弥彰13143 天前
Linux设备驱动 -- TMP75AIDR驱动移植
linux·驱动开发·驱动·驱动移植·嵌入式linux驱动·tmp75aidr
ShawnLiaoking4 天前
华硕ROG LoadLibrary failed 126
驱动开发·显示器