车载fpdlink接口配置长链视频通路调试
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访问远端设备可正常访问。
- 分享
- 举报
-
浏览量:5961次2021-06-03 17:33:36
-
浏览量:10273次2020-11-26 15:59:29
-
浏览量:8408次2020-11-26 14:22:19
-
浏览量:16537次2021-02-19 17:01:32
-
浏览量:3513次2020-07-30 11:57:30
-
浏览量:1715次2023-08-15 19:14:23
-
浏览量:6889次2021-06-24 11:51:22
-
浏览量:7400次2021-05-11 17:51:48
-
浏览量:5932次2021-07-06 16:50:58
-
浏览量:5089次2021-07-06 16:47:24
-
浏览量:4995次2020-08-04 20:11:36
-
浏览量:11711次2022-06-10 21:26:04
-
浏览量:11990次2021-02-19 16:56:03
-
浏览量:8621次2021-03-16 14:44:24
-
浏览量:4334次2021-01-05 15:25:57
-
浏览量:1935次2019-10-05 12:49:06
-
浏览量:1859次2023-11-27 14:27:54
-
浏览量:6912次2020-11-26 17:02:47
-
浏览量:2657次2024-02-26 14:13:38
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
free-jdx
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明