一、前言
上一篇博文介绍了 OV2775 的移植,本篇继续来介绍 Serdes 的配置,使用的 Serdes 是 THCV241A-THCV242 ,完成这一步即可点亮 OV2775 了。二、添加 serdes
2.1 编译 serdes
(1) 在 amp/a7_liteos/drv/extdrv/serdes 中修改 Makefile,将 serdes type 修改为 241a242, 具体修改如下:
(2) 在 amp/a7_liteos/drv/extdrv 下 make clean 后再 make all,会在 serdes 目录下生成 thine_241a242_serdes.o, 具体如下:
三、使用 VdesignTool 工具
Thine 的 serdes 可以直接通过其提供的 VdesignTool 工具来生成对应寄存器配置,这里主要介绍如何生成 Defensor 板上的 THCV242 及 THCV241a 的可用配置,具体操作如下。
3.1 分析
由于 Defensor 板上的解串器只接了一路 Camera,而且通过手册及原理图可以得出 THCV241A 的设备地址为 0x34,
THCV242 的设备地址为 0x0B,而且由于 ov2775 是 1080p30,且传输的图像格式为 RAW12,通过推导这里选择的是 720Mbps。
3.2 使用操作
(1) 进入 System Configuration,选择 Camera 个数
(2) 进入 Select Tx device,填写THCV241a 设备地址
(3) 进入 Select Rx device,填写 THCV242 设备地址
(4) 进入 Set MIPI CSI-2 values for Tx ,填写 bitrate 以及 lane num
(5) 进入 Set MIPI CSI-2 value for Rx,填写 lane num
(6) 进入 Set Reference Clock Input,填写 CKI
(7) 进入 set V-by-one HS value,设置 v-by-one lane num 以及 format
(8) 进入到 Use of Sub-Link ,这里我们选择如下:
(9) 进入到 Set I2C Clock and Target ID,这里按照默认选择便可
(10) 进入到 Set GPIO for Tx and Rx,这里按照默认选择便可
(11) 进入到 Select Target Environment,这里也是按照默认配置便可。
(12) 最后进入到生成文件的界面,可以按照自己的需求选择,我这里选择的是 Command Only。
点击 Generate 后,会让你选择保存路径,保存下来后,便会弹出下面对应配置的文本。
然后按照对应寄存器的配置去写入 amp/a7_liteos/drv/extdrv/serdes/thine_241a242_serdes.c 中便可。
这里需要注意,0x0040 和 0x0041 需要填入的是 sensor 的 7 bit 地址,而生成的文件中一般默认都是 0 ,
这里我们使用的 ov2775 的 7 bit 地址是 0x36。这里还需要注意的主要是 PLL 的配置,这里比较容易配置出问题。
四、调试验证
将上面修改后的 sdk 重新编译生成固件,然后烧录进 Defensor 板中,可以使用 i2ctool 先验证是否正确读出 thine serdes 以及 sensor 的地址,如果正常后,便可以验证能否正常读写 serdes 和 sensor,如果没有问题,便证明 i2c 操作完成,可以开始验证是否初始化 sensor,如果在 liteos 端 cat /proc/umap/mipi-rx 可以发现第二个 dev 可以 detect 到宽高,那便可以证明初始化 sensor 成功,如果没有,可以检查是否有 mipi data 信号,如果有,可能是 serdes 配置问题,可以尝试修改 mipi data rate 重新配置 serdes,如果没有,有可能是 i2c 写 sensor 没成功,需要排除一下 i2c 读写问题,或者是 sensor 地址写错,也有可能是 serdes 配置中 gpio 的问题。
如果一切都验证没有问题,正常 cat/proc/umap/mipi-rx 应该如下:
可以获取到画面如下:
评论
yans
1 个月前