【2】针对于海思接口配置学习【重点】
配置思路
1. 如何分析视频接口
选择使用MIPI还是LVDS,所需要做的工作有:
1) 硬件配置正确,即配置正确的公模电压,差分电路,正确的接口。
2) 配置相关的MIPI上层抽象接口。
3) 配置相关的寄存器操作。
注:
1、上层硬件配置,此处硬件工作较多,不做深入研究。
2、相关寄存器操作主要集中在XXX_cmos.c与XXX_ctrl.c中,具体配置以另外叙述。
3、Mipi上层抽象接口为海思抽象出来的接口,此层自行配置了相关寄存器,本文主要基于HI3516D芯片进行配置,这也是本次研究的重点。
2. 如何配置上层抽象接口
此处只针对于配置上层抽象接口。主要为LVDS配置,MIPI方式配置较为简单,不做叙述。
- 查看sensor支持LVDS还是mipi接口。实际操作为查看datasheet,一般前几页会有支持的接口名称,或者搜索LVDS,然后搜索DOP1或者DOM1。LVDS的接口使用名称叫做DOPX/DOMX,而MIPI的接口一般为DMOXP/DMOXN。
- 查看硬件配置是否为LVDS接口,实际操作为查看硬件电路图。
- 根据硬件电路图,确定LVDS的lane对接方式。实际操作为对接方式,例如OV4689操作。
- 根据sensor,查看是否支持宽动态,支持宽动态的方式,配置HI_WDR_MODE。
- 确定同步方式。实际操作为搜索LVDS,查看是为SOL方式还是SAV方式。
- 搜寻同步码。实际操作为搜寻sync_code。
3. 视频上层抽象接口配置
海思接口配置,结构体如下所示:
typedef struct
{
/* input mode:MIPI/LVDS/SUBLVDS/HISPI/DC */
input_mode_t input_mode;
union
{
/* for MIPI configuration */
mipi_dev_attr_t mipi_attr;
/* for LVDS/SUBLVDS/HISPI configuration */
lvds_dev_attr_t lvds_attr;
};
} combo_dev_attr_t;
input_mode为输入模式,代码会根据设置的输入,自行载入MIPI配置还是LVDS配置。
以OV4689 MIPI配置实测:
OV4689配置MIPI
OV4689确定使用MIPI设置,从硬件电路可看出,不累述。
MIPI的配置结构体如下:
typedef struct
{
raw_data_type_e raw_data_type; /* raw data type: 8/10/12/14 bit */
short lane_id[MIPI_LANE_NUM]; /* lane_id: -1 - disable */
}mipi_dev_attr_t;
1. 确定datasheet支持的接口
OV4689支持的接口如下:

中OV4689只支持MIPI 4-lane的接口:

2. 确定传输数据
根据文档,传输数据为10位数据。 (海思默认默认配置为12位,此处经过确认,配置成10位也是可以的,通过读取海思3516D寄存器,如论如何配置,寄存器都是10位数据,暂时不知道是不是应用层配置无效)

3. 确定lane的配置。
首先,查看硬件接口,主板3516A接口如下所示:

主板引出来的接口板如下如是:

而OV4689的sensor板插线板如下所示:

构成关系如下:

从海思3516A的芯片出来的MIPI0_D0对应着OV4689sensor的MIPI0_D1, MIPI0_D0对应着OV4689的MIPI0_D3。以此类推,当3516A出来的lane为0,1,2,3时候,对应OV4689为1,3,0,2,配置关系如下:
combo_dev_attr_t MIPI_4lane_SENSOR_OV4689_12BIT_ATTR =
{
.input_mode = INPUT_MODE_MIPI,
{
.mipi_attr =
{
RAW_DATA_12BIT,
{1, 3, 0, 2, -1, -1, -1, -1} //-1表示不支持
// {1, 0, 2, 3, -1, -1, -1, -1}
}
}
};
注:此处有一次事故,由于sensor的mipi接口与海思的mipi接口有改动,所以造成此处接口需要重新配置。
LVDS配置与imx123学习
1. 查看imx123datasheet,是否支持LVDS。

由配置可知,imx123支持LVDS与MIPI,详细配置如下:

2查看硬件采用的是MIPI还是LVDS

由配置可知,imx123配置的是LVDS硬件,而MIPI的硬件是没有配置的,imx123硬件的MIPI如下:

3. 软件配置LVDS配置
Imx123使用的是LVDS配置,所需工作如下:
配置关系如下:
combo_dev_attr_t LVDS_4lane_SENSOR_IMX123_12BIT_3M_ATTR_WDR =
{
/* input mode */
.input_mode = INPUT_MODE_LVDS,
{
.lvds_attr = {
.img_size = {2048, 1536},//图像大小
HI_WDR_MODE_DOL_2F, //宽动态模式,暂时只支持2F
LVDS_SYNC_MODE_SAV,//设置起始方式,sav与SOL等方式
RAW_DATA_12BIT,//图像数据大小
LVDS_ENDIAN_BIG,//数据传输方式,大端小端方式
LVDS_ENDIAN_BIG,//同步传输方式,大端小端方式
.lane_id = {0, 1, 2, 3, 4, 5, 6, 7},//同步通道设置
.sync_code = {
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}},
{{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0},
{0xab0, 0xb60, 0x800, 0x9d0}} }
}
}
};
1)首先设置图像大小
根据配置寄存器我们可知道,设置的图像为2048x1536。(具体如何配置寄存器,后续可在附件配置里讲)
2)配置宽动态模式
我们可知道imx123支持的宽动态为

而海思对于宽动态支持的力度较小,目前只是支持两帧合一帧,即HI_WDR_MODE_DOL_2F,故选择HI_WDR_MODE_DOL_2F。(几种宽动态模式差异,可在后续讲)
3)配置起始方式
首先,在datasheet里搜寻LVDS,在设置页面可知,支持SAV格式,文档如下:

具体SAV与SOL的区别,有兴趣可以看海思文档
Hi3516A/Hi3516D 专业型HD IP Camera Soc用户指南.pdf
HiMPP IPC V2.0 媒体处理 FAQ.pdf
关于MIPI的部分,也可以直接咨询本人。
4)设置图像数据方式
数据格式,通过文档可知

MIPI支持12或者14,查看

相关设置可知,LVDS也是支持12bit或者14bit相关数据。根据寄存器配置,我们一般使用为RAW_DATA_12BIT。
5)设置数据同步大小端
由文档可知,此数据是以大端设置为先,故设置为LVDS_ENDIAN_BIG。

6)设置同步传输大小端
与第五条类似。
7)设置同步通道
设置同步通道,首先我们是查看文档,是支持LVDS的,并且相关GPIO对应如下:

其中我们硬件设计的时候,同步也有相关标记:

其中硬件设计为8通道设计,DLOP/MD对应的是Ch1.。硬件已做了相关标记。通过寄存器的配置,软件设置8通道。

故配置通道为{1,2,3,4,5,6,7,8}。此配置可参照OV4689的通道配置,sensor出来的ch通道一定要和3516A的ch通道一一对应!
8)设置同步码
设置同步码,可以慢慢看datasheet文档,也可以直接搜sync code两个关键字

我们可以看到,图像的同步码按照图像配置来设置,我们一般用12位数据,其中每个同步码一般为四位,按照SAV(invalid)EAV(invalid), SAV(valid),EAV(valid)顺序来说12位的同步码为:
FFFh,000h,000h,AB0h
FFFh,000h,000h,B60h
FFFh,000h,000h,800h
FFFh,000h,000h,9D0h
其中前三个同步码为相同数字,故每个通道的同步码为 {0xab0, 0xb60, 0x800, 0x9d0}。
另(拓展)
- Sav英文名为start audio vide,EAV为end audio video
- 图像为什么从invaid SAV开始,可以参考下图。

本文发布于2024年11月14日21:36,已经过了409天,若内容或图片失效,请留言反馈 -
obsidian修改字体间距
背景 我的方案是使用云盘进行obsidian的文件同步的,各端都使用云盘进行数据的同步。最近刚买了macmini,配置在obsidian同步的时候,macos不知道为什么".obsidian"隐藏文件...
2024/11/18
-
优必选小方头刷小智机器人
1. 背景 最近在调研看智能萌宠机器人,正好看到网上有人买了优必选的小方头机器来刷目前的小智,所以买来试试。小方头机器人在2019年9月20日发布,售价1099元,现在咸鱼100块钱就能买到;小智机器...
2025/03/27
-
【2】emlog&obsidan同步
因为我一开始是使用的hexo来做博客,但是编写文章一直都是使用obsidian来进行编写的,然后通过obsidian的git推送到云端,触发云端git仓库的钩子,将obsidian的文档同步到对应的文...
2025/10/31
-
【5】emlog增加微信、抖音
1. 添加个人信息 更新最新的github代码,因为数据库里没有微信等信息,需要更新数据库信息。 bash 登录 sudo mysql -u root -p 查看数据库 SHOW DATABASES;...
2025/11/01
求索空间
apostle9891
360视觉云
360智慧生活
gitea
导航
hoppscotch
暂无评论