• MIPI CSI接口调试方法:时序调试


    关于的mipi 的规范,协议及物理接口定义,网上文章确实比较多,想必也是每个想要了解mipi的人首先会阅读的,本人也是其中之一,所以这篇短文主要是想记录自己在调试mipi这个接口时遇到的一些问题;

    1. clock lane: continue mode: non-continue mode?

    continue mode: 连续时钟模式,即无论data lane上是否有数据在传输,clock lane总是在HS状态,从不进入LP状态。

    如图:

    non-continue mode:非连续时钟模式, 即当data lane 进入LP状态时,clock lane也会进入LP状态,在下次data lane进入HS状态时 clock lane会先于 data lane进入提前进入HS状态。

    如图:

    那到底传输时采用那种模式呢?这取决于发送端,两种模式如何取舍呢?

    建议非连续模式,笔者在调试中遇到过,连续模式时传输不稳定,采用非连续模式时就稳定了。

    为何?

    后面会提到。

    2. deskew

    何为skew, 从字面意思看是倾斜了,不对齐了;

    放在mipi的传输中意思就是clock lane和data lane 及data lane与data lane间出现了相位差;

    一旦出现相位差,大家采样数据时就可能不在同一个节拍上,会出现传输错误。

    所以就要做deskew,通过做deskew来使得大家重新对齐,在同一个节奏下传输数据. 一般当data rate高于1.5G时建议开启deskew。是否开启deskew也是由发送端决定,拿某主流sensor举例:

    它就会明确告诉你要不要开启deskew及 deskew时要用多少个UI

    deskew的时机:一旦开启deskew, 在每次mipi的状态由LP-HS时都会先做一次deskew。

    即每次开始真正的数据传输前都会做一次deskew:

    在高data rate下,deskew确实必要的,笔者曾调试一款sensor的输出data rate是 2496Mbps, 不做deskew 时传输非常不稳定。

    加了deskew后就稳定了。

    deskew到底做多少个UI,也不是越大越好,合适的才是最好的,怎么是合适的,接收端的 mipi 控制器的的設計説了算。

     3. global timing

    global timing在某些情况下是有调整的余地的,毕竟硬件环境不一样,

    这些时序不会是完全都匹配的。

    所以在传出不稳定时,其他方向都调过没有效果时可试试调整global timing:

    mipi csi dphy的规范里面有定义 这些的timing的最大值及最小值及推荐值。

    同时, sensor中也会有相关描述用来调整这些timing的寄存器说明:

    调试三板斧到此结束,后续再补充

  • 相关阅读:
    【HTTP 常用的状态码及使用场景】
    带你认识工厂类设计模式——简单工厂&工厂方法&抽象工厂&简单抽象工厂&反射简单抽象工厂
    本地启动RocketMQ未映射主机名产生的超时问题
    css选择器优先级问题
    使用ZoeDepth生成深度估计图
    RecycleView缓存复用详细解析
    Java修仙传之神奇的ES(基础使用)
    回归预测 | MATLAB实现GLM广义线性模型数据回归预测
    AutoGPT目前只是成功学大师GPT版
    JDK中自带的JVM分析工具
  • 原文地址:https://blog.csdn.net/bingdund/article/details/126864039