IMX890 在度信盒子上点亮调试总结

前提情况:

IMX890 在度信盒子上点不亮,在mtk6855 demothone上可以点亮。

分析原因:

可能由于两者的ISP处理能不一样,度信盒子ISP的处理能力有限导致统一一套IMX890配置参数在mtk6855 demothone上可以点亮,在度信盒子上点不亮。

调试方向:

通过降低度信盒子上的IMX890 mipi速率,来尝试点亮sensor

查看IMX890软件手册

如上IOP System Clock Divider既为IOP_SYCK_DIV

在PHY_CTRL=0的模式下(sensor默认设置PHY_CTRL=0),Mipi速率计算公式如下:

Bitrate = ( INCK/IOP_PREPLLCK_DIV)*IOP_PLL_MPY/IOP_SYCK_DIV

额外说明:

PHY_CTRL=2的模式下,并非是设置mipi 速率,而是设置mipi 数据长包短包等时序,一般情况下我们不要去动他们

我们再继续通过查看IMX890软件手册,查看得知INCK,IOP_PREPLLCK_DIV,IOP_PLL_MPY,IOP_SYCK_DIV的配置

           

平台端如果配置MIPI clock为24M,那么sensor也需要配置外部时钟为24M,相当于告诉sensor芯片,外部给了一个24M的INCK。

 

通过如上参数设置得知mipi速率设置为800Mbps :

Bitrate = ( INCK/IOP_PREPLLCK_DIV)*IOP_PLL_MPY/IOP_SYCK_DIV

       = (24M/0x03)*0x190/0x04

       = (24M/3)*400/4

       = 800Mbps

从上得知,通过降低IOP_PLL_MPY即可降低mipi速率,

将IOP_PLL_MPY从400改为200,300,350,在度信盒子和MTK demophone上都点不亮,显示黑屏

如下为MTK demophone上IOP_PLL_MPY设置为350的kernel LOG表现:

Main log

adb shell setprop vendor.debug.seninf.log 1

adb shell sentest 1 1

MTK端接收到的sensor数据为宽0xb88=2592 ,高0x1000=4096

而实际上设置sensor输出数据为3072*4096,说明sensor mipi输出数据不足

通过比特率计算公式,

Bitrate = ( INCK/IOP_PREPLLCK_DIV)*IOP_PLL_MPY/IOP_SYCK_DIV

我们试着通过降低 INCK来降低比特率,将INCK降低到22M,20M,12M,度信盒子均可点亮sensor。

通过上面的分析得出结论:

  1. 通过降低IOP_PLL_MPY来降低mipi速率,sensor点不亮
  2. 通过降低 INCK来降低mipi速率,sensor点亮

再次查看imx890 软件手册,分析下图得知:

  1. 降低IOP_PLL_MPY,只降低了其中IOPCK 一路时钟,仅仅只降低了mipi 速率
  2. 降低INCK,同时降低了IVTCK和IOPCK两路时钟,即同时降低了mipi速率和sensor内部处理图像的速度

总结:

要让sensor点亮,需要降低mipi速率的同时,还要降低sensor内部像素速率(Pixel rate),要不然前面sensor出数据太快,但是后面mipi的输出速度跟不上,导致丢掉一些数据,最后还是点不亮。

从这里也可以看出上面MTK demophone 在降低IOP_PLL_MPY时,sensor mipi输出数据不足的原因了。

一般INCK作为外部时钟,我们尽量不要去改动,那么要让sensor点亮,我们可以将IOP_PLL_MPY和IVT_PLL_MPY 同比例增加即可。

如下表一是原始寄存器配置,将IOP_PLL_MPY和IVT_PLL_MPY对应降低 ¾ ,寄存器配置为如下表二,在度信板子上和MTK demophone上都可以点亮,并且对应帧率相比之前降低 ¾ 。

                                                                 表一   

   

表二

                                

                                                              表三

两点疑问:

1.将IOP_PLL_MPY和IVT_PLL_MPY对应降低一半,即配置为上图表三,在度信板上可以点亮,在MTK demophone上点不亮分析原因可能是因为IOP_PLL_MPY减半后,IOPCK计算得到的值超出下图的范围,IOPCK=( INCK/IOP_PREPLLCK_DIV)*IOP_PLL_MPY= (24M/3)*200=1600M。

但是在度信板子上为什么可以点亮,不得而知。

2.通过降低IVTCK可以降低sensor像素输出速率,既可以通过调整IVT_PLL_MPY来调整帧率,但是如何通过IVTCK计算帧率,还未知,有知道怎么计算的可以相互交流。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值