首页 > 技术知识 > 正文

1. 前言

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

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

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

CPU–>954—->953—->[954—>953—->sensor

2. 梳理各设备的I2C地址

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

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

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的硬件连接图如下: 车载fpdlink接口配置长链视频通路调试2

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脚

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

这意味着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访问远端设备可正常访问。

猜你喜欢