部件号: DS90UB960-Q1
你(们)好
如果我们通过 i2c 从 ti953 端访问图像传感器器件、那么 I2C 确认信号似乎来自传感器、而是来自 ti960。 该 ack 信号源是可配置的吗? 因为我们成功写入传感器寄存器、没有 i2c 错误。 但当我们从传感器读取数据时、并不是我们之前写入的值。
谢谢
行兴
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
部件号: DS90UB960-Q1
你(们)好
如果我们通过 i2c 从 ti953 端访问图像传感器器件、那么 I2C 确认信号似乎来自传感器、而是来自 ti960。 该 ack 信号源是可配置的吗? 因为我们成功写入传感器寄存器、没有 i2c 错误。 但当我们从传感器读取数据时、并不是我们之前写入的值。
谢谢
行兴
您好:Xingxing、
您能否确认 UB960 上的任何端口上未启用“Auto ack All“(自动确认)? 这是在寄存器 0x58[5]中设置的。
请参阅 AUTO_ACK_ALL 的以下内容: 无论解串器中定义的有效 I2C 地址如何、寄存器 0x58 中的 AUTO_ACK_ALL 位都会分别将所有地址传递到远程串行器 I2C 总线、并确认发送的所有远程 I2C 命令、而无需等待来自连接的串行器的响应。
超过该限制后、如果以正确的地址为目标、器件将通过来自传感器的 ACK。 确认未启用自动确认所有功能后、我们可以继续操作。
要继续、您是否能够提供系统的方框图以及初始化脚本、以突出显示此处关注的 I2C 事务?
此致、
Zoe
您好 Zoe、
这是 SerDes 设置。 一个 ti960 解串器连接四个 ti953 串行器。
#ifndef __UB9XX_H__
#define _UB9XX_H__
struct ub9xx_reg{
U8 SLAVE_addr;
U8 寄存器;
U8 值;
};
#define UB9XX_DELAY 0x00
静态结构 ub9xx_reg ub9xx_YUV_1600M_0[]={
{0x30、0x4C、0x01}、//选择 RX 端口 0
//自动确认设置
{0x30、0x5B、0x31}、//将串行器地址设置为冻结状态
{0x30、0x5C、0x11}、//设置 SER 别名并自动确认
{0x30、0x58、0x7A}、//启用具有自动 ACK 的 I2C 直通、BC 速率= 10Mbps
// 953 配置
{0x08、0x01、0x03}、//reset UB953
{UB9XX_DELAY、0x00、20}、//延迟 20ms
{0x08、0x0B、0x1C}、//400K I2C 速度
{0x08、0x0C、0x1C}、
{0x08、0x02、0x73}、//连续时钟、4 个通道
{0x08、0x0E、0xF0}、//禁用 935 GPIO0 输入并启用输出
{0x08、0x0D、0x10}、//在本地 GPIO0 上启用远程 DES GPIO0 数据;下拉 GPIO2(ISP 复位)
{UB9XX_DELAY、0x00、10}、//延迟 10ms
{0x08、0x0D、0x14}、//RESET AP1302
{0x08、0x03、0x12}、//模式覆盖异步外部时钟
{0x08、0x01、0x01}、//软复位
{UB9XX_DELAY、0x00、10}、//延迟 10ms
// I2C 地址和别名设置
{0x30、0x58、0x5A}、//禁用自动确认
{0x30、0x5B、0x30}、//移除冻结
{0x30、0x5C、0x10}、//禁用自动确认
{0x30、0x5D、0x20}、//配置成像仪地址
{0x30、0x65、0x20}、//配置成像仪别名
{0x30、0x5E、0x78}、//配置 ISP 地址
{0x30、0x66、0x40}、//配置 ISP 别名
// 960 配置
{0x30、0x6D、0x7C}、// FPD3 CSI-2 输入模式
{0x30、0x6E、0x8A}、//将 Fsync 信号映射到 953 GPIO0 输出
{0x30、0x72、0}、//将 VC ID 映射到 0
//帧同步:27Hz、10%/90%占空比
{0x30、0x19、0x04}、// FS_HIGH_TIME_1
{0x30、0x1A、0x66}、// FS_HIGH_TIME_0
{0x30、0x1B、0x2B}、// FS_LOW_TIME_1 27fps
{0x30、0x1C、0xDF}、// FS_LOW_TIME_0 27fps
{0x30、0x18、0x01}、//启用内部生成的帧同步
{UB9XX_DELAY、0x00,100}、
// CSI 输出/转发配置
{0x30、0x1F、0x00}、// 1.472 - 1.664Gbps 串行速率
{0x30、0x32、0x01}、//选择 CSI 端口 0
{0x30、0x34、0x31}、//启用偏斜
{0x30、0x33、0x43}、//启用偏斜校准、4 个通道、连续时钟、启用 CSI 输出
{0x30、0x21、0x03}、// CSI 端口 0 上的基本同步转发
{0x30、0x20、0x00}、//将所有 RX 端口转发到 CSI 端口 0、启用转发
};
静态结构 ub9xx_reg ub9xx_YUV_1600M_1[]={
{0x30、0x4C、0x12}、//选择 RX 端口 1
//自动确认设置
{0x30、0x5B、0x31}、//将串行器地址设置为冻结状态
{0x30、0x5C、0x13}、//设置 SER 别名和自动确认
{0x30、0x58、0x7A}、//启用具有自动 ACK 的 I2C 直通、BC 速率= 10Mbps
// 953 配置
{0x09、0x01、0x03}、//reset UB953
{UB9XX_DELAY、0x00、20}、//延迟 20ms
{0x09、0x0B、0x1C}、//400K I2C 速度
{0x09、0x0C、0x1C}、
{0x09、0x02、0x73}、//连续时钟、4 个通道
{0x09、0x0E、0xF0}、//禁用 935 GPIO0 输入并启用输出
{0x09、0x0D、0x10}、//在本地 GPIO0 上启用远程 DES GPIO0 数据;下拉 GPIO2(ISP 复位)
{UB9XX_DELAY、0x00、10}、//延迟 10ms
{0x09、0x0D、0x14}、//RESET AP1302
{0x09、0x03、0x12}、//模式覆盖异步外部时钟
{0x09、0x01、0x01}、//软复位
{UB9XX_DELAY、0x00、10}、
// I2C 地址和别名设置
{0x30、0x58、0x5A}、//禁用自动确认
{0x30、0x5B、0x30}、//移除冻结
{0x30、0x5C、0x12}、//禁用自动 ACK
{0x30、0x5D、0x20}、//配置成像仪地址
{0x30、0x65、0x22}、//配置成像仪别名
{0x30、0x5E、0x78}、//配置 ISP 地址
{0x30、0x66、0x42}、//配置 ISP 别名
// 960 配置
{0x30、0x6D、0x7C}、// FPD3 CSI-2 输入模式
{0x30、0x6E、0x8A}、//将 Fsync 信号映射到 953 GPIO0 输出
{0x30、0x72、1}、//将 VC ID 映射到 1
//帧同步:27Hz、10%/90%占空比
{0x30、0x19、0x04}、// FS_HIGH_TIME_1
{0x30、0x1A、0x66}、// FS_HIGH_TIME_0
{0x30、0x1B、0x2B}、// FS_LOW_TIME_1 27fps
{0x30、0x1C、0xDF}、// FS_LOW_TIME_0 27fps
{0x30、0x18、0x01}、//启用内部生成的帧同步
{UB9XX_DELAY、0x00,100}、
// CSI 输出/转发配置
{0x30、0x1F、0x00}、// 1.472 - 1.664Gbps 串行速率
{0x30、0x32、0x01}、//选择 CSI 端口 0
{0x30、0x34、0x31}、//启用偏斜
{0x30、0x33、0x43}、//启用偏斜校准、4 个通道、连续时钟、启用 CSI 输出
{0x30、0x21、0x03}、// CSI 端口 0 上的基本同步转发
{0x30、0x20、0x00}、//将所有 RX 端口转发到 CSI 端口 0、启用转发
};
静态结构 ub9xx_reg ub9xx_YUV_1600M_2[]={
{0x30、0x4C、0x24}、//选择 RX 端口 2
//自动确认设置
{0x30、0x5B、0x31}、//将串行器地址设置为冻结状态
{0x30、0x5C、0x15}、//设置 SER 别名并自动确认
{0x30、0x58、0x7A}、//启用具有自动 ACK 的 I2C 直通、BC 速率= 10Mbps
// 953 配置
{0x0A、0x01、0x03}、//reset UB953
{UB9XX_DELAY、0x00、20}、//延迟 20ms
{0x0A、0x0B、0x1C}、//400K I2C 速度
{0x0A、0x0C、0x1C}、
{0x0A、0x02、0x73}、//连续时钟、4 个通道
{0x0A、0x0E、0xF0}、//禁用 935 GPIO0 输入并启用输出
{0x0A、0x0D、0x10}、//在本地 GPIO0 上启用远程 DES GPIO0 数据;下拉 GPIO2(ISP 复位)
{UB9XX_DELAY、0x00、10}、//延迟 10ms
{0x0A、0x0D、0x14}、//RESET AP1302
{0x0A、0x03、0x12}、//模式覆盖异步外部时钟
{0x0A、0x01、0x01}、//软复位
{UB9XX_DELAY、0x00、10}、
// I2C 地址和别名设置
{0x30、0x58、0x5A}、//禁用自动确认
{0x30、0x5B、0x30}、//移除冻结
{0x30、0x5C、0x14}、//禁用自动 ACK
{0x30、0x5D、0x20}、//配置成像仪地址
{0x30、0x65、0x24}、//配置成像仪别名
{0x30、0x5E、0x78}、//配置 ISP 地址
{0x30、0x66、0x44}、//配置 ISP 别名
// 960 配置
{0x30、0x6D、0x7C}、// FPD3 CSI-2 输入模式
{0x30、0x6E、0x8A}、//将 Fsync 信号映射到 953 GPIO0 输出
{0x30、0x72、2}、//将 VC ID 映射到 2
//帧同步:27Hz、10%/90%占空比
{0x30、0x19、0x04}、// FS_HIGH_TIME_1
{0x30、0x1A、0x66}、// FS_HIGH_TIME_0
{0x30、0x1B、0x2B}、// FS_LOW_TIME_1 27fps
{0x30、0x1C、0xDF}、// FS_LOW_TIME_0 27fps
{0x30、0x18、0x01}、//启用内部生成的帧同步
{UB9XX_DELAY、0x00,100}、
// CSI 输出/转发配置
{0x30、0x1F、0x00}、// 1.472 - 1.664Gbps 串行速率
{0x30、0x32、0x01}、//选择 CSI 端口 0
{0x30、0x34、0x31}、//启用偏斜
{0x30、0x33、0x43}、//启用偏斜校准、4 个通道、连续时钟、启用 CSI 输出
{0x30、0x21、0x03}、// CSI 端口 0 上的基本同步转发
{0x30、0x20、0x00}、//将所有 RX 端口转发到 CSI 端口 0、启用转发
};
静态结构 ub9xx_reg ub9xx_YUV_1600M_3[]={
{0x30、0x4C、0x38}、//选择 RX 端口 3
//自动确认设置
{0x30、0x5B、0x31}、//将串行器地址设置为冻结状态
{0x30、0x5C、0x17}、//设置 SER 别名和自动确认
{0x30、0x58、0x7A}、//启用具有自动 ACK 的 I2C 直通、BC 速率= 10Mbps
// 953 配置
{0x0B、0x01、0x03}、//reset UB953
{UB9XX_DELAY、0x00、20}、//延迟 20ms
{0x0B、0x0B、0x1C}、//400K I2C 速度
{0x0B、0x0C、0x1C}、
{0x0B、0x02、0x73}、//连续时钟、4 个通道
{0x0B、0x0E、0xF0}、//禁用 935 GPIO0 输入并启用输出
{0x0B、0x0D、0x10}、//在本地 GPIO0 上启用远程 DES GPIO0 数据;下拉 GPIO2(ISP 复位)
{UB9XX_DELAY、0x00、10}、//延迟 10ms
{0x0B、0x0D、0x14}、//RESET AP1302
{0x0B、0x03、0x12}、//模式覆盖异步外部时钟
{0x0B、0x01、0x01}、//软复位
{UB9XX_DELAY、0x00、10}、
// I2C 地址和别名设置
{0x30、0x58、0x5A}、//禁用自动确认
{0x30、0x5B、0x30}、//移除冻结
{0x30、0x5C、0x16}、//禁用自动确认
{0x30、0x5D、0x20}、//配置成像仪地址
{0x30、0x65、0x26}、//配置成像仪别名
{0x30、0x5E、0x78}、//配置 ISP 地址
{0x30、0x66、0x46}、//配置 ISP 别名
// 960 配置
{0x30、0x6D、0x7C}、// FPD3 CSI-2 输入模式
{0x30、0x6E、0x8A}、//将 Fsync 信号映射到 953 GPIO0 输出
{0x30、0x72、3}、//将 VC ID 映射到 3
//帧同步:27Hz、10%/90%占空比
{0x30、0x19、0x04}、// FS_HIGH_TIME_1
{0x30、0x1A、0x66}、// FS_HIGH_TIME_0
{0x30、0x1B、0x2B}、// FS_LOW_TIME_1 27fps
{0x30、0x1C、0xDF}、// FS_LOW_TIME_0 27fps
{0x30、0x18、0x01}、//启用内部生成的帧同步
{UB9XX_DELAY、0x00,100}、
// CSI 输出/转发配置
{0x30、0x1F、0x00}、// 1.472 - 1.664Gbps 串行速率
{0x30、0x32、0x01}、//选择 CSI 端口 0
{0x30、0x34、0x31}、//启用偏斜
{0x30、0x33、0x43}、//启用偏斜校准、4 个通道、连续时钟、启用 CSI 输出
{0x30、0x21、0x03}、// CSI 端口 0 上的基本同步转发
{0x30、0x20、0x00}、//将所有 RX 端口转发到 CSI 端口 0、启用转发
};
#endif
您好:Xingxing、
您是否知道 ti953 是否可以配置 i2c 驱动器功能?
953 将设置自己的 I2C 时序、并作为代理主器件将 I2C 事务发送到解串器。
是否有任何用于调试此类 ACK 信号的调试寄存器未成功从 ti953 路由到 ti960? [/报价]没有用于 I2C 功能的直接调试寄存器。 在 UB960 和 UB953 上、您可以查找 BC CRC 错误或 BCC 错误、这些错误可能会导致 I2C 通信中出现错误、但它们并不直接相关。 自动确认功能是为了让解串器发送 ACK 而不是等待目标器件发送其响应。 这是因为、如果在某个时间点配置了多个具有相同地址的目标、则会创建一个竞态条件、在该条件下、不确定的目标将会做出响应。 链接的应用手册介绍了器件上的 I2C 通信行为: https://www.ti.com/lit/an/snla131a/snla131a.pdf?I2C=1766505916573 ts
如果此处存在特定问题、请提供 I2C 总线捕获。
此致、
Zoe
您好:Xingxing、
0x58 中设置的 BC 速率取决于工作模式。 由于您打算在外部时钟模式下运行、因此 BC 速率应设置为 10Mbps。 这是您在提供的上一个脚本中设置的内容。
ti953 端存在 BC CRC 错误。 有一点是、我们的 ti953 没有本机 振荡器。 [/报价]如果 953 侧没有本机振荡器 — 您打算以什么模式运行? 脚本状态 953 上的外部时钟模式。 如果您配置外部时钟模式、则由于没有本地振荡器、您将以内部 AON 模式运行。 AON 模式还将假设反向通道速率为 10MBps。 同步模式使用 50Mbps BC 速率。
--> 953 是否会从解串器缓冲 i2c 数据? 如果是、缓冲区大小是多少?953 上没有 I2C 缓冲器。 为此、SoC 的 I2C 控制器应支持时钟延展。
通常、当存在硬件设置问题而不是软件时、通常会出现 BC CRC 错误。 示例或原因 是违反了 BC 速率下的通道规格(本例中为~5MHz) 或)或链路上的 PoC 噪声。
发生失败事务的地址会由于 I2C 看门狗计时器而终止、因为事务的持续时间远大于传输事务。 通常、对于 953 串行器、我们建议设置寄存器 0x0A=0x12。
我对此设置有几个问题:
- 能否提供本工程中使用的 953 摄像头和 960 的原理图?
- 当前正在使用哪些电缆? 这些电缆是否已更换?
- 是否对整个系统进行了 S 参数测量?
在您发送的 I2C 事务日志中、 只有一个地址显示失败的事务。 发生失败事务的地址为 0x21 7 位、与 RX 端口 1 上模块的 ISP 别名 0x42 相匹配。 如果 I2C 事务失败的原因完全是针对 ISP、我建议交换摄像头模块并重复测试、看看它是否遵循 RX 端口 1 模块上的硬件。
此致、
Zoe
[/quote]
953 上没有 I2C 缓冲器。 为此、SoC 的 I2C 控制器应支持时钟延展。
[/报价]我们将 BC 速率更改为 50Mbps。 现在看起来更稳定。
1. 稍后将分享原理图。
2.使用同轴电缆。
3.你有没有关于如何测量 S 参数的文件吗?
4.将 BC 速率从 10Mbps 更改为 50Mbps 时有什么副作用?
谢谢
行兴
您好:Xingxing、
[quote userid=“542150" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1599320/ds90ub960-q1-ti953-ti960-sensor-i2c-ack/6171559 我们使用同轴电缆。什么类型和长度? 例如、DACAR-462 10m。 我们可以通过 S 参数测量对此进行更深入的讨论。
[quote userid=“542150" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1599320/ds90ub960-q1-ti953-ti960-sensor-i2c-ack/6171559 您是否有任何关于如何测量 S 参数的文档?通过电子邮件提供、此文档受保密协议限制。
[quote userid=“542150" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1599320/ds90ub960-q1-ti953-ti960-sensor-i2c-ack/6171559 将 BC 速率从 10Mbps 更改为 50Mbps 时有任何副作用?异步模式不适用于 50Mbps 的 BC 速率运行。 考虑到这一点、我们需要在 SYNC 模式下运行、并在脚本中删除串行器模式覆盖。 当观察到此问题时以及未发现问题时、您是否能够收集受影响串行器的寄存器转储?
此致、
Zoe
您好:Xingxing、
串行器随 BC 频率的变化而变化所观察到的工作特性。 条件变化的示例包括通道上的插入损耗和回波损耗以及 PoC 噪声。 根据提供的原理图、器件在 SYNC 模式下启动、然后更改为异步外部时钟模式。 随着模式的变化、串行器/解串器对运行有不同的期望。 我们需要您的测试设置中提供更多信息、以得出 10Mbps BC 速率下 CRC 错误的原因。
此致、
Zoe