博尔塔拉蒙古自治州网站建设_网站建设公司_Python_seo优化
2025/12/20 13:10:56 网站建设 项目流程

美信GMSL3加解串器家族

GMSL3(Gigabit Multimedia Serial Link Generation 3)是 Analog Devices(ADI,收购 Maxim Integrated 后)推出的第三代高速串行链路技术,专为汽车高级驾驶辅助系统(ADAS)、智能座舱、工业视觉等高带宽、长距离、强抗干扰场景设计。其核心器件包括串行器(Serializer, Ser) 和 解串器(Deserializer, Des).

Serializer -- Camera/adas盒子 端

MAX96793/MAX96793G

MAX96793 GMSL串行器通过MIPI CSI-2接口接收视频信号,并将其输出至GMSL2或GMSL3串行链路收发器。同时,它通过同一GMSL链路进行双向控制通道数据的收发。GMSL2或GMSL3数据可通过同轴电缆或屏蔽双绞线传输。GMSL2链路正向传输速率固定为3Gbps或6Gbps,反向传输速率为187.5Mbps。

GMSL3链路正向固定速率为12Gbps,反向为187.5Mbps。该器件可通过本地I2C/UART接口编程,或通过链路由匹配的解串器进行编程。MAX96793集成两个I2C/UART直通通道、灵活GPIO、SPI隧道、内置ADC、温度传感器及全面的功能安全诊断功能。

  • 接口输入:4通道和2通道MIPI CSI-2 v1.3输入端口
    • MIPI D-PHY v1.2 标准,每通道速率达2.5Gbps
    • MIPI C-PHY v1.0 标准,每通道速率达3.42Gbps
    • 极性翻转与数据通道重新分配
    • 支持16个虚拟通道
  • 单GMSL3输出
    • 12Gbps GMSL3 前向链路速率
    • 向后兼容 GMSL2 的 6Gbps / 3Gbps 链路速率
    • 187.5Mbps 反向链路速率
  • 双向控制通道支持
    • 11个可配置GPIO接口
    • 1个I2C/UART端口,最高支持1MHz
    • 2个直通端口
    • UART模式下最高支持2M波特率
    • I2C模式下最高支持1Mb/s传输速率
    • 1个SPI端口,最高支持25MHz
  • 符合ASIL-B等级

Deserializer -- 主控端(Soc侧)

MAX96792A

MAX96792A可将双GMSL3/2串行输入转换为MIPI CSI-2。该器件接收前向通道视频数据,并通过同轴电缆或屏蔽双绞线(STP)同时接收和传输双向控制通道数据。基于PAM-4技术的GMSL串行链路在正向传输方向上运行速率为12Gbps,反向传输方向为187.5Mbps。MAX96792A向下兼容GMSL2标准,可搭配6Gbps或18Gbps速率的GMSL2设备使用。正向传输速率达12Gbps,反向传输速率为187.5Mbps。该器件向下兼容GMSL2标准,可与6Gbps或3Gbps GMSL2串行器配对使用。

两个GMSL输入通道独立工作,支持接收不同时序和分辨率的视频信号。两个GMSL链路可支持不同数据速率。

双输入端的视频数据可聚合至单个CSI-2端口输出,并可复制至第二个输出端口实现冗余处理。设备通过I2C或UART接口配置,提供GPIO、I2C、UART及SPI隧道功能。

  • 输出:两个MIPI CSI-2 v1.3输出端口
    • 2个4通道D-PHY v1.2,每通道速率2.5Gbps
    • 2个2通道C-PHY v1.0,每通道速率4.57Gbps
    • 支持16个虚拟通道
  • 双GMSL3输入
    • 12Gbps GMSL3前向链路速率
    • 向后兼容GMSL2的6Gbps/3Gbps链路速率
    • 187.5Mbps反向链路速率
  • 支持隧道传输和像素模式视频传输
  • 双向控制通道支持
    • 11个可配置通用输入输出引脚
    • 1个I2C/UART端口(最高1MHz)
    • 2个直通端口
      • UART模式下最高2M波特率
      • I2C模式下最高1Mbps速率
    • 1个SPI端口(最高25MHz)

Demo平台

种类 型号
SOC 高通QCX架构平台(8255,8775)
Des max96792A
Ser max96793

简化框图:

image

Soc 读写解串器命令:

# ccidbgr:IIC调试应用   2:CCI节点2  0x27(Des 7Bit CCI addr)  0x0a:读取Des上的寄存器地址  3:以0x0a为起始地址,连读3个寄存器
ccidbgr 2 0x27 read21 0x0a 3
# 将0x06寄存器写成0xff
ccidbgr 2 0x27 write21 0x06 0xff

调试步骤

1.信息收集

GMSL协议 - GMSL2/GMSL3

GMSL速率 - 12G/6G/3G

GMSL传输模式 - TUNNEL/PIXEL
PIXEL : 需要配置mapping关系
TUNNEL : 视频数据透传

加串输出分辨率

加串输出VC通道

加串输出VC Stream ID

加串输出帧率

Link Lock是Ser - Des之前物理链路链路是否通畅的表现方式,如果存在则表示解串已经识别到了加串器的接入,如果不存在则表明GMSL3物理链路不通,可能原因:

1.GMSL2协议不匹配 - 比如解串配成了GMSL3,Camera端加串输出的是GMSL2
2.GMSL2速率不匹配 - 比如Camera加串输出速率为6G,而解串器配的12G
3.Camera模模块供电有问题,不是POC供电,需要单独供电
4.线束问题

以max96792寄存器为例

ccidbgr 0 0x6a read21 0x13     # GMSL Link A的Link lock,如果有link lock,bit3应该为1(0xc8)
ccidbgr 0 0x6a read21 0x5009   # GMSL Link B的Link lock,如果有link lock,bit3应该为1(0xc8)

specify_settings

    .gmsl_speed_sel = {{0x0003, 0x57, 0}, // default disable remote control disabled for B port{0x0001, 0x10, 0}, // default disable remote control disabled for A port, A port gmsl speed to reserved (0b00){0x0004, 0x00, 0}  // default set A,B port to GMSL_2, , B port gmsl speed to reserved (0b00)},.video_pipe_sel = {{0x0161, 0x20, 0}}, //pipe y for A-0; pipe z for B-0.yuv_mux_mode = {{0x0322, 0xF0, 0}},  //Default enable YUV_8_10 MUX mode.soft_dt_bpp = {{0x0316, 0x5E, 0}, {0x0317, 0x7E, 0}, {0x0318, 0x7A, 0},   //Default dt as YUV422{0x0319, 0x00, 0}, {0x031A, 0x48, 0}},                     //Default bpp as YUV422

3.Camera模块Pclk确认

pclk是Camera模块的时钟信号,可以通过pclk是否存在来判断Camera是否在输出图像,可以通过解串的反控IIC接口来反向读取加串器(一般为max96793))的pclk寄存器

ccidbgr 0 0x50 read21 0x112   回读远端Camera的Pclk,pclk存在,bit7应为1
ccidbgr 0 0x51 read21 0x112   回读远端Camera的Pclk,pclk存在,bit7应为1

一般max96724可以接2个Camera模块,它们的IIC地址可以都是0x80,所以在主机启动初始化的时候,需要将2路Camera重新alias一下它们的IIC地址,向加串的0x00写入alias后的地址。以上地址是将加串按顺序从0xa0开始alias后的地址

4.Video Lock确认

Video Lock是判断Camera模块的视频数据是否输出到解串,并被解串lock住的标志,如果解串上读不到说明解串上没有正确解析到视频流,需要核对以下关键点

ccidbgr 0 0x6a read21 0x1fc   # GMSL Link A Video lock,如果有video lock,bit0应该为1(0x81)
ccidbgr 0 0x6a read21 0x21c   # GMSL Link B Video lock,如果有video lock,bit0应该为1(0x81)

4.1 Tunnel Mode

需要先确定硬件连线,接在soc上的是PortA还是PortB,比如:

1.soc接在max96792的Port A上

2.加串接在GMSL3 LinkB上

3.加串输出的Stream ID为2

image

完整的隧道模式配置:

  
/* 禁用 MIPI CSI 输出 */{ 0x0313, 0x00, 0 },/* 链接初始化 *//* LinkA RX_RATE_A=12Gbps,LINK-A/B:GMSL3(bit6/7)*//* (保留以确保 LinkB GMSL3 模式正确) */{ 0x0001, 0x03, 0 },/* LinkB RX_RATE_B=12Gbps,TX_RATE_B=187.5Mbps */{ 0x0004, 0x83, 0 },/* 视频管道选择 *//* 从 Link-B 拉出的管道 Z,流 ID:0x2(max96793 管道 Z)*/{ 0x0161, 0x20, 0 },/* 管道到控制器寄存器空间:*//* 管道 2(Z):MIPI_TX 2:0x481-0x4B7 *//* 管道 Z(MIPI TX2) 映射 *//* 映射到 MIPI 端口 B *//* MIPI CSI2:DPHY/4Lanes/使能 VC 扩展 */{ 0x048A, 0xC0, 0 },/* 启用调谐模式:Pipe-Z */{ 0x04B4, 0x09, 0 },/* 启用管道 Z */{ 0x0160, 0x02, 0 },/* 配置 MIPI DPHY *//* Port-B:DPHY通道速度2500Mbps,禁用override_bpp_vc_dt y z */{ 0x0320, 0x39, 0 },{ 0x0323, 0x39, 0 },/* MIPI CSI2:PortA关闭,PortB使用所有的lane */{ 0x0330, 0x04, 0 },/* LINKB:一次性重置,启用 Link-B */{ 0x0012, 0x20, 100000 },

4.2 Pixel Mode

3mapping_settings

// Pipe to Controller Mapping Configuration{ 0x044B, 0x07, 0x00 }, // MIPI_TX__1 : MIPI_TX11 | MAP_EN_L (MAP_EN_L Pipe Y): 0x7{ 0x044C, 0x00, 0x00 }, // MIPI_TX__1 : MIPI_TX12 | (Default) MAP_EN_H (MAP_EN_H Pipe Y): 0x0{ 0x044D, 0x1E, 0x00 }, // MIPI_TX__1 : MIPI_TX13 | MAP_SRC_0 (MAP_SRC_0 Pipe Y DT): 0x1E | (Default) MAP_SRC_0 (MAP_SRC_0 Pipe Y VC): 0x0{ 0x044E, 0x1E, 0x00 }, // MIPI_TX__1 : MIPI_TX14 | MAP_DST_0 (MAP_DST_0 Pipe Y DT): 0x1E | (Default) MAP_DST_0 (MAP_DST_0 Pipe Y VC): 0x0{ 0x044F, 0x00, 0x00 }, // MIPI_TX__1 : MIPI_TX15 | (Default) MAP_SRC_1 (MAP_SRC_1 Pipe Y DT): 0x0 | (Default) MAP_SRC_1 (MAP_SRC_1 Pipe Y VC): 0x0{ 0x0450, 0x00, 0x00 }, // MIPI_TX__1 : MIPI_TX16 | (Default) MAP_DST_1 (MAP_DST_1 Pipe Y DT): 0x0 | (Default) MAP_DST_1 (MAP_DST_1 Pipe Y VC): 0x0{ 0x0451, 0x01, 0x00 }, // MIPI_TX__1 : MIPI_TX17 | MAP_SRC_2 (MAP_SRC_2 Pipe Y DT): 0x1 | (Default) MAP_SRC_2 (MAP_SRC_2 Pipe Y VC): 0x0{ 0x0452, 0x01, 0x00 }, // MIPI_TX__1 : MIPI_TX18 | MAP_DST_2 (MAP_DST_2 Pipe Y DT): 0x1 | (Default) MAP_DST_2 (MAP_DST_2 Pipe Y VC): 0x0{ 0x046D, 0x55, 0x00 }, // MIPI_TX__1 : MIPI_TX45 | MAP_DPHY_DEST_0 (MAP_DPHY_DST_0 Pipe Y): 0x1 | MAP_DPHY_DEST_1 (MAP_DPHY_DST_1 Pipe Y): 0x1 | MAP_DPHY_DEST_2 (MAP_DPHY_DST_2 Pipe Y): 0x1{ 0x048B, 0x07, 0x00 }, // MIPI_TX__2 : MIPI_TX11 | MAP_EN_L (MAP_EN_L Pipe Z): 0x7{ 0x048C, 0x00, 0x00 }, // MIPI_TX__2 : MIPI_TX12 | (Default) MAP_EN_H (MAP_EN_H Pipe Z): 0x0{ 0x048D, 0x1E, 0x00 }, // MIPI_TX__2 : MIPI_TX13 | MAP_SRC_0 (MAP_SRC_0 Pipe Z DT): 0x1E | (Default) MAP_SRC_0 (MAP_SRC_0 Pipe Z VC): 0x0{ 0x048E, 0x5E, 0x00 }, // MIPI_TX__2 : MIPI_TX14 | MAP_DST_0 (MAP_DST_0 Pipe Z DT): 0x1E | (Default) MAP_DST_0 (MAP_DST_0 Pipe Z VC): 0x1{ 0x048F, 0x00, 0x00 }, // MIPI_TX__2 : MIPI_TX15 | (Default) MAP_SRC_1 (MAP_SRC_1 Pipe Z DT): 0x0 | (Default) MAP_SRC_1 (MAP_SRC_1 Pipe Z VC): 0x0{ 0x0490, 0x40, 0x00 }, // MIPI_TX__2 : MIPI_TX16 | (Default) MAP_DST_1 (MAP_DST_1 Pipe Z DT): 0x0 | (Default) MAP_DST_1 (MAP_DST_1 Pipe Z VC): 0x1{ 0x0491, 0x01, 0x00 }, // MIPI_TX__2 : MIPI_TX17 | MAP_SRC_2 (MAP_SRC_2 Pipe Z DT): 0x1 | (Default) MAP_SRC_2 (MAP_SRC_2 Pipe Z VC): 0x0{ 0x0492, 0x41, 0x00 }, // MIPI_TX__2 : MIPI_TX18 | MAP_DST_2 (MAP_DST_2 Pipe Z DT): 0x1 | (Default) MAP_DST_2 (MAP_DST_2 Pipe Z VC): 0x1{ 0x04AD, 0xAA, 0x00 }, // MIPI_TX__2 : MIPI_TX45 | MAP_DPHY_DEST_0 (MAP_DPHY_DST_0 Pipe Z): 0x2 | MAP_DPHY_DEST_1 (MAP_DPHY_DST_1 Pipe Z): 0x2 | MAP_DPHY_DEST_2 (MAP_DPHY_DST_2 Pipe Z): 0x2

4.3 fsync

fsync_settings

    {0x03E0, 0x0A, 0},  //Frame sync generation is on. GPIO is used as FSYNC output and drives a slave device, frame synchronization method is auto{0x03E1, 0x00, 0},  // Frame sync transmission period in terms of Vsync periods  = 1{0x03E7, 0x0C, 0},  //default 30fps{0x03E6, 0xB7, 0},  //default 30fps{0x03E5, 0x35, 0},  //default 30fps{0x03F1, 0x40, 0},  //Enable gpio 8 for frame sync

link_enable_settings

	{0x0028, 0x62, 0 },  // enable FEC in Link A{0x5028, 0x62, 0 },  // disable FEC in Link B{0x0010, 0x23, 0 },  // set to splitter mode and reset oneshot for link A{0x0012, 0x20, 100 },  // reset oneshot for link B

Q&A

1.在link lock和video lock都有的情况下,使用qcarcam_test取流是freeze的状态,如何调试定位

cidbgr 0 0x6a read21 0x5009  -> 0xc8
ccidbgr 0 0x6a read21 0x21C  -> 0x81

使用qcarcam_test去取流,同时读取解串输出mipi phy的帧计数器,多次读取,如果是跳动的,则说明phy上是有输出的

ccidbgr 0 0x6a read21 0x342
ccidbgr 0 0x6a read21 0x343
ccidbgr 0 0x6a read21 0x344
ccidbgr 0 0x6a read21 0x345

再确认下解串输出的mipi phy的速率,最好直接配置成2500M,如果仍然不行,

再读取错误状态寄存器,根据回读寄存器值,结合手册看是否有报错,再请美信给予支持

ccidbgr 0 0x6a read21 0x1b
ccidbgr 0 0x6a read21 0x1f
ccidbgr 0 0x6a read21 0x1d
ccidbgr 0 0x6a read21 0x341
ccidbgr 0 0x6a read21 0x342

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询