车载fpdlink接口配置长链视频通路调试

free-jdx 2021-05-13 10:17:28 3621
1. 前言

基于TI的954解串器和953串行器
设计了如下链路,用于传输相机图像

长链954/953连接的设计如下:

CPU-->954---->953---->[954--->953---->sensor

2. 梳理各设备的I2C地址

各设备I2c地址如下所示:
不需要配置摄像头传感器(自动输出数据),
所以没有显示它的i2c地址。

3.如何配置远端端口设备

CPU如何使用FPD-Link III通过前一个954/953配置远程954/953/传感器(红色)?
如何I2C操作可以传递到远程954/953/传感器?

尝试以下方法。
假设前一个954+953是链接(A),第二个954+953是链接(B)。

Program 954(A):
0x58[6]=1 for Pass-throu enabled
0x5B: SerID = 0x18
0x5C: SerAlias = 0x60
0x5D: SlaveID = 0x3D
0x65: SlaveAlias = 0x62
0x5E: SlaveID = 0x18
0x66: SlaveAlias = 0x64
Program 954(B):
0x58[6]=1 for Pass-throu enabled
0x5B: SerID = 0x18
0x5C: SerAlias = 0x64
4. 调试疑问

我已经测试了配置。这里有几个问题!

954(A) 的 SerID和(0x5E: SlaveID)是相同的0x18。
尝试设置,发现所有i2c请求实际上都映射到953(A),而不是953(B)。
即使使用别名来做i2c请求,所有的操作都被953(A)打包。
这是否意味着,953(A)和953(B)必须有不同的i2c地址?

  • 是的,最好为953(A)和953(B)使用不同的I2C地址。

在954(A)中,设置(0x5E: SlaveID = 0x18, 0x66: SlaveAlias = 0x64),并设置954(B)’s serID为相同的。
据我所知,954(A)的slave意味着slave必须连接到953(A),但现在953(B)实际上连接到954(B)。
所以应该954 (A)953(B)的奴隶设置放在954(B)?

  • No. 953(B)是954(B)的序列化器,它不能是slave。它只是954(a)的slave,因为它没有直接连接。

是否 954(B)应该自动将953(B)的i2c地址加载到它的0x5B中?

  • 是的,它会自动加载953(B) I2C地址,但别名需要您自己输入。
5. 继续尝试如下配置
here is my 954(A) setting:
0x1f, 0x02 , // CSI0 800mbps
0x33, 0x03 , // CSI_EN & CSI0 4L
0x20, 0x00 , // forwarding all RX to CSI0
/* RX_PORT0 */
0x4c, 0x01 , // RX_PORT0
0x58, 0x5e , // enable pass throu
0x5c, 0x08 , // SER_ALIAS
0x5d, 0x7a , // slave 954 0x3d
0x65, 0x80 , // SLAVE_ALIAS
0x5e, 0x30 , // slave 1 953 0x18
0x66, 0x40 , // SLAVE 1_ALIAS
0x6d, 0x7c , // 953 CSI MODE
0x70, 0x1E , // VC0 and CSI0 datatype 0x1e yuv422_8b
0x7c, 0x81 , // FV active low 8bit
here is my 953(A) setting:
0x1, 0x33 , //delay 500 us
0x3, 0xc5 , //delay 10us
0xd, 0x55 //delay 10us

here is my 954(B) setting:
0x1f, 0x02 , // CSI0 800mbps
0x33, 0x03 , // CSI_EN & CSI0 4L
0x20, 0x00 , // forwarding all RX to CSI0
/* RX_PORT0 */
0x4c, 0x01 , // RX_PORT0
0x58, 0x5e , // enable pass throu
0x5c, 0x40 , // SER_ALIAS
0x6d, 0x7c , // 953 CSI MODE
0x70, 0x1E , // VC0 and CSI0 datatype 0x1e yuv422_8b
0x7c, 0x81 , // FV active low 8bit

CPU --> 954(A) --> 953(A) --> 954(B) --> 953(B)
so i2c address are:
954(A):0x30
953(A):0x18, alias 0x04
954(B):0x3d, alias 0x40
953(B):0x18, alias 0x20

所有对953(B)的i2c访问实际上是由953(A)响应的,原因如下

  • 首先,使用别名0x04读取寄存器0x3a,寄存器值是0x00;
  • 然后使用别名地址0x20将寄存器0x3a设置为0x10;读回值是0x10;
  • 然后我用别名地址0x04读取寄存器0x3a,现在是0x10;
6. 尝试使用913的串行器调试

尝试过使用913的另一个传感器模块,954(B)仍然不能自动加载913的地址。
这个模块的913地址是0x58,与953(A)不同。

953和913的硬件连接图如下:

7. 关于连接通讯问题

(1)连接到954(B)的本地I2C总线,是否可以和953(B)通信?

954(B)和953(B)连接仅使用同轴电缆。
954(B)的引脚48(LOCK)没有连接到953(B)。

(2)953(B)和954(B)是否需要LOCK ?

不需要连接LOCK。
LOCK表示DES与SER连接。
所以,如果你有连接,LOCK应该读为“high”。

8.查询954(B)的LOCK pin脚

这意味着954(B)和953(B)没有连接
据我所知LOCK是FPD-Link III自动完成的,是不需要特殊的寄存器设置需要设置的。
954(B)的DEVICE_STS(0x04)寄存器是0xd3。
954(B) refclk是有效的。

0x04 = 0xD3这意味着LOCK是低的。

9.修复串行器解串器硬件

发现954(B)不能锁定953(B)的问题是由硬件问题引起的。
修复硬件问题后,954(B)和953(B)现在可以锁定。

锁定后,I2C访问远端设备可正常访问。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
free-jdx
红包 95 5 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
free-jdx
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区