大家好,又见面了,我是你们的朋友全栈君。
What is a digital video port?
Camera的并口传输方式很多地方叫做dvp接口,但是并没有统一的标准。
As far as I know, there is no DVP spec but the pinout seems to be something of a de facto standard, even though part manufacturers doesn’t always call it DVP.
结合《Advance Information AR0144AT Developer Guide1/4−Inch CMOS Digital Image Sensor》深入探究一下DVP的通信协议。
Protocol
The AR0144AT image data is read out in a progressive scan(逐行扫描).
Valid image data is surrounded by horizontal(水平的) and vertical(垂直的) blanking (see Figure 1). The amount of horizontal row time (in clocks) is programmable through R0x300C(1488).The amount of vertical frame time (in rows) isprogrammable through R0x300A(827). Line_Valid (LV) is HIGH during the shaded(阴影区域)region of Figure 1.
DVP的信号脚名称及作用:
PCLK:pixel clock ,像素时钟,每个时钟对应一个像素数据;
HSYNC:horizonal synchronization,行同步信号
VSYNC:vertical synchronization,帧同步信号;
DATA:像素数据,视频数据,具体位宽要看ISP是否支持;
XCLK:或者MCLK,ISP芯片输出给驱动sensor的时钟;
DVP的时序图FV为帧同步信号,LV为行同步信号(LV为高时,传输有效的像素数据)。
从ar0144的图像读出的空间插图中可以结合时序图分析:
- FV为高电平时为一帧数据的传输开始信号
- LV为高电平的为一行数据的传输开始信号(只传输有效数据)
- FV在低电平的时候传输vertical blanking
- LV在低电平的时候传输vertical blanking和horizontal blanking
- Blanking并不是像素数据,而是浪费的pclk,是一种时间上的概念,ISP或者BB也不会收到像素数据。
A为1280传输有效的行数据;
P1,P2是固定的6个clk的blank;
Q为horizontal blanking 1488-1280=208 pixel clock
V一帧低电平的时间:(827+5-800)*1488=47616 pixel clock
所以我们可以计算:
已知:PCLK = 74.25M sensor有效的像素是1280×800
计算一帧消耗的pixel clock?
一帧高电平的时间Vvalid:
(A+Q)*800-Q+P1+P2 = 1488*800-208+6+6 = 1190204 pixel clock
所以一帧的时间是Tf = V+Vvalid = 47616 + 1190204 = 1237820 pixel clock
那么每一帧的时间 = 1237820/74250000 = 0.01667s=16.67ms
帧率:1/16.67ms = 60fps
结合ar0144的图像读出的空间插图可以看出如果要改变帧率只需要调整blank的时间就可以了。
并口的传输速度(如果使用10bit的数据):74.25M*10bit = 742.5Mbps,转换成mipi对应每lane的传输的数据量:742.5/4=185.625M bps
那么对应的mipi clock为:185.625/2 = 92.8Mhz (除以二因为mipi的clock双边沿采样)。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134555.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...