Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

USB superspeed peripherals Forum Discussions

Will_lee
Level 2
Level 2
10 questions asked 25 sign-ins 10 replies posted

当前 UsbI2cDmaMode 例程中的 setupdat0 和setupdat1 分别为两个32位数据,但寄存器地址wIndex,仅能实现 16位的下发,想知道如何才能实现32位寄存器地址的下发

Will_lee_0-1647564716335.png

 

0 Likes
1 Solution
AliAsgar
Moderator
Moderator
Moderator
250 solutions authored 750 replies posted 50 likes received

Hi,

在 cyusb3014 的 I2C 接口上可以发送 32 位寄存器地址。 I2C 前导码可以发送 8 个 8 位的缓冲区。因此,如果寄存器为 16 位宽,则可以使用 1 个缓冲区用于从地址,4 个缓冲区用于寄存器地址,另外 3 个缓冲区可用于写入。
注意:确保正确配置了前导码的 ctrlmask。你也可以参考这个线程 - https://community.infineon.com/t5/USB-low-full-high-speed/I2C-Memory-Address-and-Stop-and-start-bit-...

AliAsgar

View solution in original post

0 Likes
5 Replies
AliAsgar
Moderator
Moderator
Moderator
250 solutions authored 750 replies posted 50 likes received
你好,

setupdat0 和 setupdat1 是主机在控制传输中向 USB 设备发送的设置数据包(8 字节)的结果。 I2C 在这方面没有任何作用。
Setupdat0 包含低 4 字节,setupdat1 包含设置数据包的高 4 字节。根据 USB 规范,设置包(setupdat1)的高 4 字节包括 16 字节 wLength 和 16 字节 WIndex。

如果我没有回答您的问题,请尝试更清楚地解释您的查询并提供更多详细信息。

问候,
AliAsgar
0 Likes
Eddyi
Level 3
Level 3
25 sign-ins 10 replies posted 10 likes given

简而言之就是3014的硬件I2C不支持32位寄存器地址。

0 Likes
AliAsgar
Moderator
Moderator
Moderator
250 solutions authored 750 replies posted 50 likes received

Hi,

在 cyusb3014 的 I2C 接口上可以发送 32 位寄存器地址。 I2C 前导码可以发送 8 个 8 位的缓冲区。因此,如果寄存器为 16 位宽,则可以使用 1 个缓冲区用于从地址,4 个缓冲区用于寄存器地址,另外 3 个缓冲区可用于写入。
注意:确保正确配置了前导码的 ctrlmask。你也可以参考这个线程 - https://community.infineon.com/t5/USB-low-full-high-speed/I2C-Memory-Address-and-Stop-and-start-bit-...

AliAsgar

0 Likes

CyFxUSBSetupCB中的内容是怎么提取出来的呢?

0 Likes
AliAsgar
Moderator
Moderator
Moderator
250 solutions authored 750 replies posted 50 likes received

Hi,

根据您的问题,您的意思是了解如何将 setupdat0 和 setupdat1 提取为 SetupCallback 函数的参数?
如果没有,请尝试更多地解释您的问题。

AliAsgar

0 Likes