4. 接收端CSI-2控制器与PHY集成要点
在SoC或FPGA端,CSI-2接收通路并不是“把PHY和控制器接上就能出图”的简单拼接。Host Controller负责协议层解析(包边界、ECC/CRC校验、虚拟通道解复用、帧同步),D-PHY/C-PHY负责物理层接收(差分信号采样、时钟恢复、Lane对齐)。两者之间的集成质量,直接决定了链路能否稳定锁定、图像是否出现撕裂或丢帧。本节围绕Lane极性、速率匹配、时钟模式、中断与DMA通路四个要点展开。
一、Lane极性与Lane映射
CSI-2的物理Lane在PCB走线时,由于连接器方向、FPC翻转或布线便利,经常出现D-PHY的P/N反接。D-PHY的差分对本身对P/N极性不敏感(差分信号取反后仍可正确判决),因此多数PHY允许通过寄存器交换P/N极性,例如将lane0_pn_swap置1。但Lane的顺序不能随意交换:CSI-2规定Lane 0为时钟Lane(D-PHY),数据Lane 1~N有固定顺序,控制器按Lane编号重组字节流。若PCB把数据Lane 1和Lane 2走反了,必须在PHY或控制器中做Lane重映射(Lane Remap),否则解包后的像素顺序会错乱。
集成时应先确认三件事:时钟Lane是否接在PHY的Clock Lane输入;数据Lane编号与控制器Lane Map寄存器是否一致;每条Lane的P/N是否需要交换。典型配置如下:
// 示例:D-PHY Lane配置(寄存器名依平台而定)
LANE_POLARITY = 0b0001; // bit0: Lane0(CLK) P/N交换
LANE_MAP = {2,1,3,0}; // 物理Lane→逻辑Lane映射
LANE_COUNT = 4; // 1 CLK + 4 DATA
若Lane映射错误,常见现象是图像出现规律性条纹或颜色通道错位;若P/N未交换,则表现为该Lane持续报错、无法进入HS(High-Speed)状态。调试时可用测试图案(如彩条)逐Lane验证。
二、速率匹配与PHY/控制器时钟域
D-PHY的HS速率由传感器发送端决定,接收端PHY必须能覆盖该速率范围。集成时需关注两个匹配关系:一是PHY的PLL输出频率与控制器像素时钟(PCLK)的匹配;二是控制器内部AXI/DMA时钟与像素时钟的跨时钟域处理。
以4 Lane、每Lane 1.5 Gbps为例,总带宽为6 Gbps。若RAW10格式,每像素10 bit,理论像素率为600 Mpixel/s。控制器PCLK通常由PHY的byte clock分频得到,例如byte clock = 1.5 Gbps / 8 = 187.5 MHz,PCLK = 187.5 / 2 = 93.75 MHz(每时钟2像素)。若PCLK与DMA时钟(如200 MHz AXI)不一致,控制器内部需有异步FIFO做跨时钟域缓冲。集成时要确认FIFO深度是否足够吸收突发,避免溢出导致丢行。
三、时钟连续与非连续模式
D-PHY的时钟Lane有两种模式:连续时钟(Continuous Clock)和非连续时钟(Non-Continuous Clock)。连续模式下,时钟Lane在HS期间始终运行,控制器可一直保持锁定;非连续模式下,时钟Lane在行消隐期间进入LP(Low-Power)状态,控制器需在每行重新锁定。集成时需确认PHY和控制器均支持所选模式,且传感器配置一致。
连续模式适合高帧率、低抖动场景,但功耗较高;非连续模式省电,但对PHY的锁定时间要求更严。若传感器配置为非连续,而控制器期望连续时钟,会出现行同步丢失。集成时应在PHY寄存器中设置clk_continuous,并与传感器的0x480等时钟模式寄存器保持一致。
四、中断与DMA通路配置
CSI-2控制器的数据通路通常为:PHY → 字节对齐 → 包解析 → 像素重组 → DMA → 内存。中断用于通知帧开始(FS)、帧结束(FE)、行结束(LE)、ECC/CRC错误、FIFO溢出等事件。集成时要配置好中断使能、DMA描述符和缓冲区地址。
典型DMA配置:为每帧分配2~3个缓冲区做乒乓,描述符中填写物理地址、长度和下一描述符指针。控制器在FE中断中切换缓冲区,应用层从已完成缓冲区取图。若DMA未及时切换,会出现帧覆盖。中断服务程序中应清除中断标志并检查错误位,例如ERR_ECC、ERR_CRC、ERR_FIFO_OVF。
// 示例:中断使能
INT_EN = FS_EN | FE_EN | LE_EN | ERR_ECC_EN | ERR_CRC_EN;
// DMA描述符
desc[0] = {.addr = BUF0, .len = FRAME_SIZE, .next = &desc[1]};
desc[1] = {.addr = BUF1, .len = FRAME_SIZE, .next = &desc[0]};
调试时先确认FS/FE中断能正常触发,再检查DMA是否搬运了正确字节数。若FS有但FE无,可能是包解析卡住;若FE有但图像错位,检查Lane映射和像素格式。
五、集成顺序与常见问题
推荐的集成顺序是:先确认PHY能进入HS状态并锁定时钟,再验证控制器能收到FS/FE中断,然后检查DMA搬运的字节数,最后看图像内容。若PHY无法锁定,优先检查Lane极性、时钟模式、参考时钟频率;若中断正常但图像错位,检查Lane映射和像素格式;若图像有撕裂,检查DMA缓冲区切换和FIFO深度。
常见问题中,Lane映射错误和时钟模式不匹配占多数。建议在Bring-up阶段使用测试图案模式,逐Lane关闭再打开,观察图像变化,快速定位问题Lane。同时,在中断服务程序中打印错误计数器,可帮助判断是偶发干扰还是持续错误。
综上,接收端集成的核心是“物理层对齐 + 协议层匹配 + 数据通路畅通”。把Lane极性、速率匹配、时钟模式、中断与DMA这四个要点逐一确认,就能覆盖绝大多数Bring-up问题。