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 为例来说明。
- 首先,先说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
- 再说line length
{0x0206, 0x05dd}, //line length pck
{0x020e, 0x0d02}, //frame length lines
line length value 0x5dd 等于十进制0d1501
- 再计算出对应的sensor的pck_clk_period, 也就是sensor的pclk的取反,也就是周期。
# result = 6.66*10-9
- 这个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。
暂无评论内容