当前位置: 首页 > news >正文

AVM camera方案(一)camera链路框架

概述:本文重点讨论自动驾驶中camera主流方案,主控soc上mipi_csi2搭配max96712的camera完整链路软件框架和实现方案,主要讨论了GMSL1和GMSL2两种方案,本文为本人调试过程中记录,如果不对地方欢迎讨论:853906167@qq.com

1.Camera链路完整框架:
1.1 链路框架图:
GMSL1方案: 3Gbps

NOTE:

摄像头模组采用森云SG2-AR0231C-0202-GMSL

GMSL2方案: 6Gbps

NOTE:

摄像头模组采用森云SG2-AR0233C-5200-GMSL2

1.2 camera模组信息:
SG2-AR0231C-0202-GMSL(GMSL1):

模组框图:

默认地址信息(8bit表示,7bit表示需要自己转换):

MAX96705 : 0x80 转成7bit对应为0x40

AP0202 : 0xBA

AR0231 : 0X20

关键参数:

HDR支持

1920*1080/22fps

YUV422@8bit输出

SG2-AR0233C-5200-GMSL2(GMSL2):

模组框图:

默认地址信息(8bit表示,7bit表示需要自己转换):

MAX9295A : 0x80 转成7bit对应为0x40

GW5200 : 0xDA

AR0233 : 0X20

关键参数:

HDR支持

LFM支持 ---- LED闪烁抑制

LED在道路上的普遍使用,却带来“LED闪烁”现象。“LED闪烁”是由LED驱动方式而产生的现象,LED灯以交流方式驱动,驱动频率一般在90Hz以上,即最慢脉冲周期为11毫秒左右,LED在11毫秒周期内实现一次亮灭,为节能及延长使用寿命,占空比通常不超过50%,如果相机曝光时间较短(例如3毫秒),则有可能曝光时间正好对上LED被关灭期,这时候图像传感器抓到的就是LED灭掉的图像,如果是LED阵列,在这种情况下拍到的图像就是一部分亮,一部分暗,这就是“LED闪烁”现象

1920*1080/30fps

YUV422@8bit输出

2.I2C地址确定: 以GMSL1为例说明
max96712:
首次上电通过CFG0上拉情况确定,具体详情如下:

我们电路配置为0xD6,bit0为方向位,所以右移一位后7bit地址为0x6B

DEV_ADDR(0x00)为地址寄存器,可通过0x6B写入新的地址,如写入0x90,实际地址右移掉方向位bit0变为0x48,后续通过该地址操作max96712

max96705:
default addr:0x80,右移一位后就是0x40,在i2c配置分别依次打开lane通道的时候会分别去写入新的地址到reg(0x00)上,LaneA、LaneB、LaneC、LaneD分别设置为0x41,0X42,0X43,0X44.

如下:

regArray[0] = 0x00;
sendBuf[0] = 0x80 + 2 * (i + 1);
i2c_ptr->I2cWrite(0x40, regArray, 1, sendBuf, 1); //分别配置ABCD通道max96705 i2c 地址

note : max96705 有个i2c address translatation功能

//set i2c_source A

regArray[0] = 0x09;
sendBuf[0] = 0xba + 2 * (i + 1);
i2c_ptr->I2cWrite(0x41 + i, regArray, 1, sendBuf, 1);

//set i2c dst A
regArray[0] = 0x0a;
sendBuf[0] = 0xba;
i2c_ptr->I2cWrite(0x41 + i, regArray, 1, sendBuf, 1);

如上例子i=0时候,就是将0xba+2(0xbc,对应的i2c address 是0x5e)转换为0xba,也就是下面说道的ap0202默认地址。i分别从0到3就会分别把0x5e,0x5f,0x60,0x60转换成0xba

AP0202:

我们的模组默认是连接到VDDIO_H,所以是0xBA,和上面max96705的i2c address translation功能结合就可以达到配置ap0202的目的

max9295A:

default addr : 0x80,右移一位后为0x40,再依次打开96712上的laneA-laneD通道时候分别将相应的MAX9295A改为0x41-0x44,代码如下:

linux下i2c-tools工具使用:

linux下的开源代码i2c-tools工具包,提供了多个i2c工具,可以基于该工具包扫描地址(i2c-detect),测试i2c寄存器读取写入等

3. pipeline说明
GMSL1 pipeline图:

说明:

GMSL1模式下,每个串行器不能包含多个pipe,且进入max96712后也不能随意搭配内部pipe,固定连接如上图红色部分:

GMSL1 A -->PIPE 0

GMSL1 B -->PIPE1

GMSL1 C -->PIPE 2

GMSL1 D -->PIPE3

GMSL2 pipeline图:

说明:

串行器可以配置为pipe X/pipe Y/pipe Z/pipe U 4个输出pipe,一般情况下配置为一个即可(我们配置为pipe Z),但是如果需要输出RAW原始数据或者HDR数据可以配置超过一个pipe,如上图GMSL2 A/GMSL2 D都配置了两个输出pipe

96712解串器可以为pipe0-pipe7选择输入的PORTA-PORTD中的pipex/y/z/u,详情可以参见寄存器0xF0,0xF1,0xF2,0xF3

pipe、map_src、map_dst、mipi-csi2相关寄存器和通路选择配置、VC虚拟通道配置等请参加0X90A开始的相关寄存器,如0x90a/0x90b/0x92d/0x90d/0x90e等等

我们为96712的4个通道数据分别分配了VC为0/1/2/3等4个虚拟通道号,占用两个bit位

4.PWM触发帧同步
默认方案:不使用外部GPIO来触发FSYNC,使用内部FSYNC信号

配置如下:

reg : 0x4a0 val : 0x02

PWM外部GPIO输入96712触发FSYNC

配置如下:

reg : 0x4a0 val : 0x08

reg : 0x4af val : 0x9f

note:

该模式下需要soc触发PWM并输出到max96712的FSYNC同步管脚,可以实现控制多个camera的图像触发时间、同步、帧率,如下图分别提供了20Hz/25Hz测试情况

20Hz: 应用层10帧图片获取间隔500ms

25Hz: 应用层10帧图片获取间隔时间400ms

5.图像基础
YUV简述

分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

YUV分为planar和packed两种格式,planar格式是先存储所有像素的Y,再存储UV,分为2-planar/3-planar。packed格式每个像素Y,U,V连续交替存储

YCbCr中的Cb标识U,Cr标识V

YUV422 8bit: 重点说明,其他格式自行学习
采样图例:

传输样式:

frame format:

note:

注意YUV422格式的数据如果传输顺序不匹配可能导致颜色异常
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/kimginginging/article/details/127963368

http://www.jsqmd.com/news/1202194/

相关文章:

  • 百达翡丽中国官方售后服务中心|官方电话和详细地址权威信息公示(2026年7月更新) - 百达翡丽服务中心
  • 如何快速上手OJI颜文字生成器:从安装到创建第一个专属表情的完整指南
  • 健康手表预警效果分析:从数据模型看安顿的技术实现 - 信息热点
  • 分布式共识算法的性能极限:Paxos、Raft与EPaxos延迟和吞吐的系统性对比分析
  • OCRmyPDF自动纠偏:告别歪斜文档的终极解决方案
  • HR面试整理:2026年3款音频转文字ai 快速生成面试记录
  • 2026甄选:苏州杭焕自动化设备有限公司——回拉式/螺丝端子/双层端子台/大电流电子台/插拔式/直插式端子专业品牌 - 企业推荐官【官方】
  • 【2024最严苛代码评测】:覆盖LeetCode中等题×50、真实Git提交修复×37、CI流水线模拟×9
  • 杰理之从BT切换到Linein模式的时候死机【篇】
  • 037、事件相机与SPAD传感器:非传统成像技术的原理与实战前景
  • 探索PC微信小程序逆向工程:深度解密wxapkg加密机制实战指南
  • 2026企业级Agent产品推荐:深度解析企业级Agent平台有哪些 - 2027品牌AI展
  • Python通达信数据接口终极指南:5分钟快速获取A股实时行情的完整方案
  • 5分钟学会:用WinDiskWriter在Mac上制作Windows启动盘的终极指南
  • 3个简单步骤:如何使用Balena Etcher安全制作系统启动盘
  • MyBatis-Plus拦截器机制与数据变更追踪架构深度解析
  • 为什么顶尖团队都在重构Cursor终端配置?5个关键配置项+YAML模板一键部署
  • 武汉二手包包回收哪家靠谱?本地门店实测对比 - 大牌深度测评
  • CameraKit iOS与原生AVFoundation对比:为什么选择CameraKit?
  • 3分钟搞定!Linux系统RTL8188EU无线网卡驱动完整安装指南
  • ClickHouse在实时数仓中的架构定位:从Lambda到Kappa架构的存储层演进分析
  • 无人机通信实战:3步搭建MAVLink完整配置方案
  • 浪琴中国官方售后服务中心|全部网点地址与售后电话权威信息通告(2026年7月最新) - 浪琴服务中心
  • BiliTools终极指南:解锁哔哩哔哩视频下载与专业级媒体管理
  • Codex Windows认证失败的7个关键排查点
  • 从零到一:Ubuntu 24.04上ROCm 6.5软件源配置的完整指南 [特殊字符]
  • Halo开源建站工具:为技术决策者打造的企业级内容管理平台
  • WMZDropDownMenu动画效果定制指南:如何实现拼多多/Boss直聘等特色弹出动画
  • Pilet迷你电脑:开源模块化便携设备的终极入门指南
  • 按预算精准选琴!2026电钢琴全价位档位配置拆解+实测机型推荐