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.

[参考译文] DS90UB949-Q1EVM:通过串行器 DS90UB949访问与解串器 DS90UB926连接的远程 I2C MCU 从器件

Guru**** 2588165 points
Other Parts Discussed in Thread: ALP, USB2ANY

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1232298/ds90ub949-q1evm-accessing-remote-i2c-mcu-slave-connected-with-deserializer-ds90ub926-via-serializer-ds90ub949

器件型号:DS90UB949-Q1EVM
主题中讨论的其他器件:ALPUSB2ANY

您好!  

我已经设置了主机 PC -->串行器-->解串器--> MCU (s32k144),如下图所示,

我正在使用模拟 LaunchPAD 编写一个脚本、以在远程从器件上读取和写入、器件 ID 为串行器 ID:0x18、解串器 ID:0x5A、从器件 ID:0x6C、寄存器地址:0x10

这是脚本、

import time

val = board.ReadI2C(0x18, 0x06, 1)
time.sleep(0.1)
print "Read Deserializer Address from Serializer: ", hex(val)

val = board.ReadI2C(0x5A, 0x00, 1)
time.sleep(0.1)
print "Actual Deserializer ID: ", hex(val)

board.WriteI2C(0x18, 0x03, 0xDA)  #Enabling pass through
time.sleep(0.1)

board.WriteI2C(0x18, 0x07, 0x6C) #Setting Slave ID
time.sleep(0.1)

board.WriteI2C(0x18, 0x08, 0x6C) #Setting Slave alias 
time.sleep(0.1)

print "Writing to remote slave..."
val = board.WriteI2C(0x6C, 0x10, 0x03)
time.sleep(0.1)

print "Reading From remote slave..."
val = board.ReadI2C(0x6C, 0x10, 1)
time.sleep(0.1)

print "Read Data:" , val

这是 ALP 输出、

当我们 首次在 ALP 中运行脚本时、Write 函数可正确写入 MCU、但读取函数根本不起作用。 当我尝试再次运行脚本时、整个通信都被卡住。 即使是从串行器或解串器也没有得到任何响应。 在 MCU 代码中、I2C 处于快速模式(400KHz)、时钟延展已正确启用。

下面是一个 Salve ID 写入示例:0x6C 和寄存器地址0x83、数据:52、0F、05、08、 6e. 对 MCU 的 I2C 写入正常工作。

从 Salve ID 读取:0x6C 和寄存器地址0x83、数据长度= 5 (预期读取 52、0F、05、08、6E)、 但我得到的响应低于这个值。

I2C 读取不按预期工作、整个 i2c 通信挂起。

此处是串行器和解串器寄存器配置、

//SERIALIZER Register Configuration

[REGISTERS]
Device = ALP Nano 1 - DS90UB949, Connector 1
Comments = ""
Date = 05/30/2023
Time = 20:03:48
Reg = 0,0x0000,0x18
Reg = 0,0x0001,0x00
Reg = 0,0x0003,0xDA
Reg = 0,0x0004,0x80
Reg = 0,0x0005,0x00
Reg = 0,0x0006,0x5A
Reg = 0,0x0007,0x00
Reg = 0,0x0008,0x00
Reg = 0,0x0009,0x00
Reg = 0,0x000A,0x46
Reg = 0,0x000B,0x00
Reg = 0,0x000C,0x17
Reg = 0,0x000D,0x20
Reg = 0,0x000E,0x00
Reg = 0,0x000F,0x00
Reg = 0,0x0010,0x00
Reg = 0,0x0011,0x00
Reg = 0,0x0012,0x00
Reg = 0,0x0013,0x88
Reg = 0,0x0014,0x00
Reg = 0,0x0015,0x01
Reg = 0,0x0016,0xFE
Reg = 0,0x0017,0x1E
Reg = 0,0x0018,0x7F
Reg = 0,0x0019,0x7F
Reg = 0,0x001A,0x01
Reg = 0,0x001B,0x00
Reg = 0,0x001C,0x00
Reg = 0,0x001D,0x00
Reg = 0,0x001E,0x01
Reg = 0,0x001F,0xF6
Reg = 0,0x0020,0x00
Reg = 0,0x0021,0x00
Reg = 0,0x0022,0x25
Reg = 0,0x0023,0x00
Reg = 0,0x0024,0x00
Reg = 0,0x0025,0x00
Reg = 0,0x0026,0x00
Reg = 0,0x0027,0x00
Reg = 0,0x0028,0x01
Reg = 0,0x0029,0x20
Reg = 0,0x002A,0x20
Reg = 0,0x002B,0xA8
Reg = 0,0x002C,0x00
Reg = 0,0x0030,0x00
Reg = 0,0x0031,0x00
Reg = 0,0x0032,0x00
Reg = 0,0x0033,0x00
Reg = 0,0x0034,0x00
Reg = 0,0x0035,0x00
Reg = 0,0x0036,0x00
Reg = 0,0x0037,0x00
Reg = 0,0x0038,0x00
Reg = 0,0x0039,0x00
Reg = 0,0x003A,0x00
Reg = 0,0x003B,0x00
Reg = 0,0x003C,0x00
Reg = 0,0x003D,0x00
Reg = 0,0x003E,0x00
Reg = 0,0x003F,0x00
Reg = 0,0x0040,0x14
Reg = 0,0x0041,0x55
Reg = 0,0x0042,0x00
Reg = 0,0x0043,0x00
Reg = 0,0x0044,0x80
Reg = 0,0x0045,0x00
Reg = 0,0x0046,0x00
Reg = 0,0x0047,0x00
Reg = 0,0x0048,0x0D
Reg = 0,0x0049,0x00
Reg = 0,0x004A,0x02
Reg = 0,0x004B,0x00
Reg = 0,0x004C,0x00
Reg = 0,0x004D,0x00
Reg = 0,0x004E,0x00
Reg = 0,0x004F,0x00
Reg = 0,0x0050,0x97
Reg = 0,0x0051,0xA1
Reg = 0,0x0052,0x1E
Reg = 0,0x0053,0x00
Reg = 0,0x0054,0x28
Reg = 0,0x0055,0x0C
Reg = 0,0x0056,0x2A
Reg = 0,0x0057,0x00
Reg = 0,0x0058,0x00
Reg = 0,0x0059,0x00
Reg = 0,0x005A,0xDD
Reg = 0,0x005B,0x20
Reg = 0,0x005C,0x02
Reg = 0,0x005D,0x06
Reg = 0,0x005E,0x44
Reg = 0,0x005F,0x20
Reg = 0,0x0060,0x22
Reg = 0,0x0061,0x02
Reg = 0,0x0062,0x00
Reg = 0,0x0064,0x10
Reg = 0,0x0065,0x00
Reg = 0,0x0066,0x00
Reg = 0,0x0067,0x00
Reg = 0,0x0068,0x00
Reg = 0,0x0069,0x00
Reg = 0,0x006A,0x00
Reg = 0,0x006B,0x00
Reg = 0,0x006C,0x00
Reg = 0,0x0070,0x00
Reg = 0,0x0071,0x00
Reg = 0,0x0072,0x00
Reg = 0,0x0073,0x00
Reg = 0,0x0074,0x00
Reg = 0,0x0075,0x00
Reg = 0,0x0076,0x00
Reg = 0,0x0077,0x00
Reg = 0,0x0078,0x00
Reg = 0,0x0079,0x00
Reg = 0,0x007A,0x00
Reg = 0,0x007B,0x00
Reg = 0,0x007C,0x00
Reg = 0,0x007D,0x00
Reg = 0,0x0080,0x00
Reg = 0,0x0081,0x00
Reg = 0,0x0082,0x00
Reg = 0,0x0083,0x00
Reg = 0,0x0084,0x00
Reg = 0,0x0090,0x00
Reg = 0,0x0091,0x00
Reg = 0,0x0092,0x00
Reg = 0,0x0093,0x00
Reg = 0,0x0094,0x00
Reg = 0,0x0098,0x00
Reg = 0,0x0099,0x00
Reg = 0,0x009A,0x00
Reg = 0,0x009B,0x00
Reg = 0,0x009C,0x00
Reg = 0,0x009D,0x00
Reg = 0,0x009E,0x00
Reg = 0,0x009F,0x00
Reg = 0,0x00A0,0x00
Reg = 0,0x00A1,0x00
Reg = 0,0x00A2,0x00
Reg = 0,0x00A3,0x00
Reg = 0,0x00C0,0x00
Reg = 0,0x00C1,0x00
Reg = 0,0x00C2,0xA8
Reg = 0,0x00C3,0x00
Reg = 0,0x00C4,0x68
Reg = 0,0x00C5,0x00
Reg = 0,0x00C6,0x00
Reg = 0,0x00C7,0x40
Reg = 0,0x00C8,0xC0
Reg = 0,0x00C9,0x00
Reg = 0,0x00CA,0x00
Reg = 0,0x00CB,0x00
Reg = 0,0x00CC,0x00
Reg = 0,0x00CE,0xFF
Reg = 0,0x00D0,0x00
Reg = 0,0x00D1,0x00
Reg = 0,0x00D2,0x00
Reg = 0,0x00D3,0x00
Reg = 0,0x00E0,0x00
Reg = 0,0x00E1,0x00
Reg = 0,0x00E2,0xA8
Reg = 0,0x00E3,0x00
Reg = 0,0x00E4,0x68
Reg = 0,0x00E5,0x38
Reg = 0,0x00E6,0x00
Reg = 0,0x00E7,0x00
Reg = 0,0x00F0,0x5F
Reg = 0,0x00F1,0x55
Reg = 0,0x00F2,0x42
Reg = 0,0x00F3,0x39
Reg = 0,0x00F4,0x34
Reg = 0,0x00F5,0x39
Reg = 0,0x00F6,0x00
Reg = 0,0x00F8,0x00
Reg = 0,0x00F9,0x00

//DESERIALIZER Register Configuration

[REGISTERS]
Device = ALP Nano 1 - DS90UB926, Connector 1
Comments = ""
Date = 05/30/2023
Time = 20:04:11
Reg = 0,0x0000,0x5A
Reg = 0,0x0001,0x04
Reg = 0,0x0002,0x00
Reg = 0,0x0003,0xF0
Reg = 0,0x0004,0xFE
Reg = 0,0x0005,0x1E
Reg = 0,0x0006,0x00
Reg = 0,0x0007,0x18
Reg = 0,0x0008,0x00
Reg = 0,0x0009,0x00
Reg = 0,0x000A,0x00
Reg = 0,0x000B,0x00
Reg = 0,0x000C,0x00
Reg = 0,0x000D,0x00
Reg = 0,0x000E,0x00
Reg = 0,0x000F,0x00
Reg = 0,0x0010,0x00
Reg = 0,0x0011,0x00
Reg = 0,0x0012,0x00
Reg = 0,0x0013,0x00
Reg = 0,0x0014,0x00
Reg = 0,0x0015,0x00
Reg = 0,0x0016,0x00
Reg = 0,0x0017,0x00
Reg = 0,0x0018,0x00
Reg = 0,0x0019,0x01
Reg = 0,0x001A,0x00
Reg = 0,0x001B,0x00
Reg = 0,0x001C,0x0B
Reg = 0,0x001D,0xA0
Reg = 0,0x001E,0x00
Reg = 0,0x001F,0x00
Reg = 0,0x0020,0x00
Reg = 0,0x0021,0x00
Reg = 0,0x0022,0x46
Reg = 0,0x0023,0x10
Reg = 0,0x0024,0x08
Reg = 0,0x0025,0x00
Reg = 0,0x0026,0x83
Reg = 0,0x0027,0x84
Reg = 0,0x0028,0x00
Reg = 0,0x0029,0x00
Reg = 0,0x002A,0x00
Reg = 0,0x002B,0x00
Reg = 0,0x002C,0x00
Reg = 0,0x002D,0x00
Reg = 0,0x002E,0x00
Reg = 0,0x002F,0x00
Reg = 0,0x0030,0x00
Reg = 0,0x0031,0x00
Reg = 0,0x0032,0x10
Reg = 0,0x0033,0x25
Reg = 0,0x0034,0xFA
Reg = 0,0x0035,0x00
Reg = 0,0x0036,0x00
Reg = 0,0x0037,0x00
Reg = 0,0x0038,0x00
Reg = 0,0x0039,0x00
Reg = 0,0x003A,0x00
Reg = 0,0x003B,0x02
Reg = 0,0x003C,0x00
Reg = 0,0x003D,0xA0
Reg = 0,0x003E,0x00
Reg = 0,0x003F,0x10
Reg = 0,0x0040,0x43
Reg = 0,0x0041,0x03
Reg = 0,0x0042,0x03
Reg = 0,0x0043,0x00
Reg = 0,0x0044,0x30
Reg = 0,0x0045,0x70
Reg = 0,0x0046,0x00
Reg = 0,0x0047,0x00
Reg = 0,0x0048,0x0F
Reg = 0,0x0050,0x03
Reg = 0,0x0051,0x10
Reg = 0,0x0052,0x00
Reg = 0,0x0053,0x01
Reg = 0,0x0054,0x80
Reg = 0,0x0055,0x00
Reg = 0,0x0056,0x08
Reg = 0,0x0057,0x00
Reg = 0,0x0058,0x00
Reg = 0,0x0059,0x3F
Reg = 0,0x005A,0x20
Reg = 0,0x005B,0x20
Reg = 0,0x005C,0x00
Reg = 0,0x005D,0x00
Reg = 0,0x005E,0x00
Reg = 0,0x005F,0x00
Reg = 0,0x0060,0x00
Reg = 0,0x0061,0x00
Reg = 0,0x0062,0x00
Reg = 0,0x0063,0x00
Reg = 0,0x0064,0x10
Reg = 0,0x0065,0x00
Reg = 0,0x0066,0x00
Reg = 0,0x0067,0x00
Reg = 0,0x0068,0x00
Reg = 0,0x0069,0x00
Reg = 0,0x0070,0x00
Reg = 0,0x0071,0x00
Reg = 0,0x0072,0x00
Reg = 0,0x0073,0x07
Reg = 0,0x0074,0x07
Reg = 0,0x0075,0x08
Reg = 0,0x0076,0x00
Reg = 0,0x0077,0x00
Reg = 0,0x0078,0x00
Reg = 0,0x0079,0x00
Reg = 0,0x007A,0x00
Reg = 0,0x007B,0x4D
Reg = 0,0x007C,0x02
Reg = 0,0x0080,0x00
Reg = 0,0x0081,0x00
Reg = 0,0x0082,0x00
Reg = 0,0x0083,0x00
Reg = 0,0x0084,0x00
Reg = 0,0x0090,0x00
Reg = 0,0x0091,0x00
Reg = 0,0x0092,0x00
Reg = 0,0x0093,0x00
Reg = 0,0x0094,0x00
Reg = 0,0x0098,0x00
Reg = 0,0x0099,0x00
Reg = 0,0x009A,0x00
Reg = 0,0x009B,0x00
Reg = 0,0x009C,0x00
Reg = 0,0x009D,0x00
Reg = 0,0x009E,0x00
Reg = 0,0x009F,0x00
Reg = 0,0x00C0,0x00
Reg = 0,0x00C1,0x00
Reg = 0,0x00C4,0x00
Reg = 0,0x00C5,0x00
Reg = 0,0x00C8,0x40
Reg = 0,0x00C9,0x00
Reg = 0,0x00CA,0x00
Reg = 0,0x00CB,0x00
Reg = 0,0x00CC,0x00
Reg = 0,0x00E0,0x00
Reg = 0,0x00E1,0x00
Reg = 0,0x00E2,0x00
Reg = 0,0x00E3,0x00
Reg = 0,0x00F0,0x5F
Reg = 0,0x00F1,0x55
Reg = 0,0x00F2,0x42
Reg = 0,0x00F3,0x39
Reg = 0,0x00F4,0x32
Reg = 0,0x00F5,0x36
Reg = 0,0x00F6,0x00
Reg = 0,0x00F8,0x00
Reg = 0,0x00F9,0x00

 我经历了多次讨论和论坛。 器件的情况下、他们提到过只配置串行器器器件。 我是否缺少任何器件? 我们是否还需要在解串器中设置任何寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mohamed:

    您是否能够绕过 SER 和 DES 并在 USB2ANY 和 MCU 之间进行直接连接、以查看问题是否仍然存在?

    处于锁定状态时、执行 MCU 复位是否会恢复 I2C 总线?

    我想知道 MCU 是否在读取命令之后没有释放 SDA。

    此致、

    Logan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我在同一个 PCB 内有解串器和 MCU 从器件。 因此、我拔下 FPD-link 电缆并直接将 MCU 的 I2C 连接到 DB90UB949串行器 EVM 板的 I2C (J20引脚)。 在 ALP 中、我单击扫描连接的器件、可以看到串行器、解串器以及 MCU 器件地址。 我使用以下脚本从 MCU 读取

    val = board.ReadI2C(0x6C, 0x10, 1)

    但输出似乎是随机数据。 阅读后、我面临同样的问题。 整个通信关闭。

    我还尝试 在锁定条件后复位 MCU、I2C 总线仍然不可恢复。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mohamed:  

    您能否尝试将 SER/DES 保持在 PDB 低电平状态、并完全将其从公式中剔除?  

    此致、  

    Logan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、我尝试过您刚才提到的方法。 我已将 DS90UB949 EVM 板中的 MSP430 I2C 连接到 MCU I2C。 将串行器和解串器的 PDB 设置为低电平。 现在、我能够从 MCU 读取、但只能读取一次。 我从 MCU 读取带有随机数据的 ACK。  首次读取后、I2C 通信挂起。 现在我怀疑 USB2ANY 驱动程序问题是否存在 、我使用的是最新的 USB2ANY 2.8.x.x 驱动程序和最新的 API。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mohamed:  

    感谢您提供额外的数据。 该实验将排除该设置中 SER/DES 的任何特定问题。 因此、您需要进一步研究从 MCU 器件和主机控制器。

    说到确实、如果您完全能够与 USB2ANY 通信、那么我怀疑它与驱动器相关。 因此、这似乎与 MCU 从器件本身的 I2C 问题更多相关。

    此致、  

    Logan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我再次重复了测试。 我将 MCU 的 I2C 直接连接到 EVM 上的 MSP430 (USB2ANY) I2C 引脚。 我将串行器和解串器的 PDB 保持为低电平。 我使用了 USB2ANY SDK 示例代码中的"Example_USB2ANY_I2C_GUI"应用程序。 在此设置中、写入和读取函数工作正常。

    我还通过启用串行器的 PDB、同时使 MCU 的 I2C 保持连接到 EVM 上的 MSP430 (USB2ANY) I2C 来测试了配置。 我将 ALP 脚本用于读取和写入操作、在这种情况下、一切也都运行正常。

    但是、当我在串行器和解串器之间连接 FPD 链路电缆、并将 MCU 的 I2C 配置为从器件到解串器时、I2C 上的读取操作根本无法正常运行。 它始终返回"Read Timeout Error"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mohamed:  

    当问题出现时、您是否可以进行 DES 复位(软复位0x1=0x1)以查看问题是否恢复?  
    同样、您是否可以尝试重置 MCU 以查看总线是否恢复?  

    如果只读取1字节大小、问题是否仍然存在?

    此致、  

    Logan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、我测试了上述可能情况、  在复位解串器和 MCU 后总线无法恢复。 只有在拔下串行器电源后、总线才会恢复。

    是的、即使是单字节读取、问题仍然存在。  

    我还有另一个查询、当我们通过 ALP 工具或脚本更改寄存器值时、串行器寄存器不会保存这些值。 每当我们关闭串行器电源时、寄存器值都会关闭。 我必须借助 ALP 寄存器设置再次输入寄存器值。 可能是什么问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Mohamed:  

    我已将 MCU 的 I2C 直接连接至 EVM 上的 MSP430 (USB2ANY) I2C 引脚。 我将串行器和解串器的 PDB 保持为低电平。 我使用了 USB2ANY SDK 示例代码中的"Example_USB2ANY_I2C_GUI"应用程序。 在此设置中,写入和读取功能工作正常。

    您是否也直接使用 ALP 脚本选项卡执行上述测试?

    在进行有/无 SERDES 测试时、让我们尝试尽可能少地更改变量。  

    Unknown 说:
    n MCU 代码,I2C 处于快速模式(400 KHz),时钟扩展已正确启用。

    默认情况下、948的 I2C 值实际上为~100kHz。 您能否将 MCU 代码设置为在100kHz 下运行、看看这是否起作用?  

    我还有另一个查询,当我们通过 ALP 工具或脚本更改寄存器值时,串行器寄存器不会保存值。 每当我们关闭串行器电源时、寄存器值都会关闭。 我必须借助 ALP 寄存器设置再次输入寄存器值。 问题可能是什么?

    这是预料之中的。 寄存器是易失性存储器、断电后不保存。

    此致、  

    Logan