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

相关推荐
VernonJsn17 小时前
visual studio 2022的windows驱动开发
ide·驱动开发·visual studio
嵌入式郑工1 天前
RK3566 LubanCat 开发板 USB Gadget 配置完整复盘
linux·驱动开发·ubuntu
雾削木2 天前
树莓派 ESPHome 固件编译与烧录全攻略(解决超时与串口识别问题)
驱动开发
春日见3 天前
win11 分屏设置
java·开发语言·驱动开发·docker·单例模式·计算机外设
DarkAthena3 天前
【GaussDB】手动编译不同python版本的psycopg2驱动以适配airflow
驱动开发·python·gaussdb
松涛和鸣4 天前
DAY66 SPI Driver for ADXL345 Accelerometer
linux·网络·arm开发·数据库·驱动开发
嵌入式郑工4 天前
# RK3576 平台 RTC 时钟调试全过程
linux·驱动开发·ubuntu
GS8FG4 天前
针对Linux,RK3568平台下,I2C驱动的一点小小的领悟
linux·驱动开发
一路往蓝-Anbo4 天前
第 4 篇:策略模式 (Strategy) —— 算法的热插拔艺术
网络·驱动开发·stm32·嵌入式硬件·算法·系统架构·策略模式