
1. 为什么PDAF配置迁移值得单独拿出来讲做过高通Camera驱动的人多少都有这种体会Sensor点亮只是第一步真正耗时间的是3A调试而PDAFPhase Detection Auto Focus相位检测自动对焦又是3A里最容易“看起来配好了、实际对不上”的一块。尤其是从Type2往Type3迁移的时候很多参数不是改个名字那么简单底层的数据流路径、PDPhoto Diode像素的排布方式、以及和AF算法的对接逻辑都变了。我最近刚在一个基于高通8550平台kalama的项目上完整走了一遍Type2到Type3的PDAF配置迁移中间踩了不少坑有些是文档里没写清楚的有些是参数之间互相耦合导致的诡异现象。这篇文章就把整个过程拆开来讲从设计思路到具体配置再到问题排查尽量把每个“为什么”都说透。先明确一下适用对象如果你正在做高通平台的Camera Bring-upSensor支持PDAF而且需要从旧的Type2配置迁移到Type3那这篇内容基本可以当操作手册用。如果你只是刚接触Camera驱动也可以看看至少能理解PDAF在驱动层到底是怎么一回事。提示Type2和Type3是高通Camera框架里对PDAF数据输出方式的两种定义。Type2通常指PD数据以特定的稀疏格式输出需要额外的转换步骤Type3则更接近原始PD像素的直接输出对Sensor配置和ISP处理链路的要求不同。具体到不同平台和Sensor细节会有差异但核心逻辑一致。2. Type2与Type3的核心差异拆解2.1 数据流路径的根本区别Type2模式下PD像素的数据往往不是完整输出的。Sensor内部会把PD像素和成像像素做某种程度的合并或抽取输出的是经过压缩或重排的PD信息。这样做的好处是带宽占用小对MIPI通道数要求低但代价是驱动层和ISP需要做更多的还原工作。你经常会在Type2的配置里看到一堆关于PD sparse pattern、PD density的参数本质上就是在描述这种“非完整”的数据格式。Type3则不同。它要求Sensor把PD像素的数据以更原始的方式输出通常是完整的PD行数据或者至少是更接近原始排布的数据。这意味着MIPI带宽需求会上升但对ISP来说拿到的是更“干净”的数据后续的PD相位计算可以更直接。我一开始以为这只是配置项名字的差异实际改下来发现整个CSIDCamera Serial Interface Decoder的配置、甚至Clock频率都要跟着调。因为Type3的数据量大了原来Type2下能跑通的MIPI速率到Type3可能就不够了会出现丢帧或者CSID报错。2.2 PD像素排布与Sensor输出格式的对应关系这里要引入一个概念PD像素在Sensor上的物理排布方式决定了你配置里该怎么写。常见的排布有2x1、1x2、2x2等不同厂商的Sensor还不一样。Type2配置里你通常需要根据排布方式去设置PD pixel的抽取规则比如哪些像素被合并了、哪些被丢弃了。而Type3下因为输出更原始你更多是直接告诉ISP“PD数据在哪几行、哪几列”不需要做那么多抽取逻辑的配置。但这里有个坑不是所有Sensor都支持Type3。有些Sensor的硬件设计就是只输出Type2格式的PD数据你硬要配成Type3要么出不来数据要么出来的数据全是错的。所以在迁移之前第一件事是确认Sensor的Spec里明确支持Type3输出。我这次用的Sensor是支持的但即便如此寄存器配置上还是有不少细节要改。2.3 对AF算法的影响Type2下因为PD数据经过了压缩或重排AF算法拿到的相位信息可能已经损失了一部分精度。Type3下数据更原始理论上AF的精度和速度都会更好。但这也意味着如果你从Type2迁移到Type3原来调好的AF参数可能需要重新校准。我遇到过的情况是Type3下AF收敛速度确实快了但在低光下反而更容易犹豫后来发现是PD数据的噪声特性变了需要调整AF的滤波参数。3. 迁移前的准备工作与关键检查项3.1 确认平台与Sensor的兼容性不是所有高通平台都完整支持Type3。我这次用的8550kalama是支持的但更早的平台可能只有部分支持。你需要查两个地方一是高通平台的Camera文档里关于PDAF Type3的支持说明二是Sensor的Datasheet里关于PD输出格式的描述。两者必须匹配。另外Type3对ISP的PDAF模块也有要求。有些ISP版本对Type3的PD数据格式有特定限制比如只支持某种位宽或某种排布。这些信息通常在高通的Camera ISP文档里但藏得比较深建议直接搜“PDAF Type3”相关的寄存器说明。3.2 备份原始Type2配置这一步听起来废话但我真的见过有人直接改配置然后回不去的。Type2的配置里有很多参数是经过反复调试才稳定的比如PD的offset、gain、以及和AF的联动参数。迁移到Type3后这些参数不一定直接适用但它们是重要的参考基准。建议把整个Sensor的XML配置文件、以及相关的AF tuning参数都备份一份最好用Git管理方便对比。3.3 准备调试工具与环境PDAF调试离不开几个工具高通提供的PDAF分析工具通常叫PDAF Tool或类似名字、以及能抓取RAW图和PD数据的抓图工具。Type3下你需要确认抓图工具能正确解析PD数据否则你看到的PD图可能是错的。我一开始用旧版工具抓Type3的PD数据出来的图全是噪声后来换了新版本才正常。另外建议在调试前把Log等级调高尤其是CSID和ISP相关的Log。Type3迁移过程中最容易出问题的就是数据链路Log能帮你快速定位是Sensor没出数据还是CSID没解对还是ISP没处理。4. 配置迁移的实操步骤与参数详解4.1 Sensor寄存器配置的修改这是最核心的一步。Type2到Type3Sensor的寄存器配置通常需要改这几个地方PD输出模式寄存器从Type2模式切换到Type3模式。具体寄存器地址和值要看Sensor的Datasheet但通常是一个专门的PD control寄存器。MIPI数据速率Type3数据量更大可能需要提高MIPI clock。我这次从Type2的1.2Gbps/lane提到了1.5Gbps/lane具体计算方法是总数据量 成像数据 PD数据然后根据lane数反推每lane速率。注意要留余量否则容易出错。PD行数配置Type3下PD数据的行数可能和Type2不同需要根据Sensor的实际输出调整。这个参数会影响CSID的配置。这里有个经验改完寄存器后先别急着调AF先用抓图工具确认PD数据能正常出来。我见过有人寄存器改错了PD数据根本没输出但AF算法还在跑结果就是一直对不上焦查了半天才发现是数据源的问题。4.2 CSID与ISP的配置调整CSID的配置主要改两个地方一是数据格式Type3的PD数据格式和Type2不同需要设置对应的CSID decode格式二是buffer大小Type3数据量大原来的buffer可能不够会导致丢帧。ISP这边主要是PDAF模块的配置。Type3下你需要告诉ISP PD数据的排布方式比如是2x1还是1x2以及PD数据在RAW图里的位置。这些配置通常在ISP的PDAF tuning参数里需要和Sensor的配置保持一致。我踩过的一个坑是CSID配置改了但ISP的PDAF配置没改结果ISP拿到的PD数据是错的AF完全没法工作。后来把两边对齐后才正常。所以改配置的时候一定要Sensor、CSID、ISP三者的配置一起看确保数据格式和排布方式一致。4.3 AF tuning参数的重新校准Type3下PD数据的特性变了原来的AF tuning参数需要重新校准。主要涉及这几个PD offsetType3下PD数据的零点可能和Type2不同需要重新测。PD gainPD数据的增益也可能不同影响相位计算的灵敏度。AF滤波参数Type3下PD数据噪声特性变了滤波参数需要调整否则AF会抖动或犹豫。校准的方法通常是在标准光源下用PDAF工具抓取PD数据然后根据PD的相位差和实际对焦位置的关系反推offset和gain。这个过程比较耗时但必须做否则AF性能会大打折扣。5. 常见问题与排查技巧实录5.1 PD数据出不来或全是噪声这是最常见的问题。排查顺序建议是先确认Sensor寄存器配置是否正确尤其是PD输出模式寄存器。检查MIPI速率是否足够如果不够CSID会报错PD数据也会丢。确认CSID的decode格式是否和Sensor输出一致。检查ISP的PDAF配置是否和Sensor、CSID一致。我遇到过一次PD数据全是噪声查到最后发现是CSID的decode格式设错了改过来就好了。5.2 AF对不上焦或反复犹豫如果PD数据正常但AF还是有问题通常是AF tuning参数的问题。重点检查PD offset和gain以及AF的滤波参数。Type3下PD数据的噪声可能比Type2大如果滤波参数还是Type2的AF就会犹豫。建议适当增加滤波强度但别太过否则AF会变慢。5.3 迁移后帧率下降或丢帧Type3数据量大如果MIPI速率或ISP处理能力不够就会丢帧。先确认MIPI速率是否够然后看ISP的负载。如果ISP负载太高可能需要降低一些后处理功能的强度或者优化PD数据的处理路径。5.4 常见问题速查表问题现象可能原因排查方法PD数据全是噪声CSID decode格式错误检查CSID配置与Sensor输出格式是否一致PD数据出不来Sensor寄存器配置错误确认PD输出模式寄存器是否设为Type3AF对不上焦AF tuning参数未校准重新校准PD offset和gainAF反复犹豫滤波参数不适配Type3调整AF滤波强度帧率下降MIPI速率不足或ISP负载高提高MIPI速率或优化ISP处理6. 实操心得与避坑建议迁移过程中我最大的体会是不要孤立地改某一个模块的配置。PDAF涉及Sensor、CSID、ISP、AF算法四个环节任何一个环节的配置不匹配都会导致问题。所以改配置的时候一定要四个环节一起看确保数据格式、排布方式、参数都一致。另外Type3虽然理论上更好但并不是所有场景都适合。如果你的项目对功耗或带宽特别敏感Type2可能更合适。迁移之前先评估一下实际需求别为了“新”而迁移。最后调试PDAF一定要有耐心。有些问题不是一次性能解决的可能需要反复抓数据、对比、调整。建议每次只改一个参数改完就验证这样出了问题也容易定位。我见过有人一次改一堆参数结果出了问题根本不知道是哪个参数导致的反而浪费更多时间。