关于pixel clock的介绍

1. 什么是pixel clock.

pixel clock: sensor 处理一个pixel的frequency。

从sensor 厂的角度, 如下PLL,它叫RAMP_VT_SYS_CLK,不是叫RAMP_CLK

从MTK的角度, 它叫pclk。

从QCOM的角度,它叫VT_CLK。

多啰嗦一下,列个表吧:

注意下表的每一列并不是1:1关系,需要换算的。

pclk
mpi date rate,mipi speed
sensor厂
RAMP_VT_SYS_CLK
MIPI_Bitrate_CLK
MTK
pclk
mipi pixel rate
QCOM
VT_CLK
op_pixel_CLK

以HI-1336 来说明,其PLL如下

2.Pixel Clock 的计算

上面有提过,“注意下表的每一列并不是1:1关系,需要换算的。”,那Pixel CLock如何计算的?sensor厂与平台厂怎么换算的?

2.1 sensor厂计算RAMP_CLK的方法

正推的方法:

就是根据平台厂driver中配置的MCLK,经过PLL图第一条pipe ,对应reg计算出来的。

TODO: 后面在python中弄过程序,自动算一下,免得每次把眼睛算瞎了。

反推的方法:

这个ratio如何计算的,以hi1336 为例来说明。

  1. 首先,先说shutter 对用的reg。

我们可以先导入一个tsf到demo kit中,下1s的shutter,后面后显示对应的reg。

下1s的shutter, 对应的shuter reg value为0x1865d,转换为10进制为0d99933,约等于100*103。

解释一下0x1865d这个reg value在各个reg的分布。

reg020c 写 0x0001

reg020a 写 0x865d

  1. 再说line length

{0x0206, 0x05dd}, //line length pck

{0x020e, 0x0d02}, //frame length lines

line length value 0x5dd 等于十进制0d1501

  1. 再计算出对应的sensor的pck_clk_period, 也就是sensor的pclk的取反,也就是周期。

# result = 6.66*10-9

  1. 这个6.66*10-9 表示的是周期,取反后为150*106。就是sensor的RAMP_CLK.

2.2 平台厂要的PCLK和sensor厂的区别,计算方法

sensor厂通过2.1 已经知道sensor内部实际的RAMP_CLK, 如何翻译为平台厂要的pclk or VT_CLK 呢?

这个问题要根据没有sensor来确定。

HI846 中

for MTK: RAMP_VT_SYS_CLK*2 =pclk

for QCOM:RAMP_VT_SYS_CLK*2=VT_CLK

HI1336中

for MTK: RAMP_VT_SYS_CLK*4 =pclk

for QCOM:RAMP_VT_SYS_CLK*4=VT_CLK

这个ratio如何计算的,以hi1336 为例来说明。

还是参考上面的公式, 差异在于line_length_pclk 的变化。

hi1336 sensor 内部,line_length_pclk = 1501.

但对平台来说,是看其等效的line_length, 根据sensor RD给的值知道,其等效line_length 为6004,也就是1501 * 4.  也就是说其ratio是4.

这样,根据上述公式,计算出的等效周期就变为6.66/4 * 10-9, 对应取反后的等效pclk就是600*106. 这个就是平台厂要的pclk or VT_CLK。

© 版权声明
THE END
在时间中留下我的脚印
分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片

    暂无评论内容