cyusb3014 的 I2C 如何通过电脑端发送 读取/写入 32位 寄存器地址

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

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

cross mob
Will_lee
Level 3
Level 3
10 questions asked 25 sign-ins 10 replies posted

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

Will_lee_0-1647564716335.png

 

0 点赞
1 解答
AliAsgar
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 750 replies posted

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 点赞
5 回复数
AliAsgar
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 750 replies posted
你好,

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

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

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

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

0 点赞
AliAsgar
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 750 replies posted

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 点赞
Will_lee
Level 3
Level 3
10 questions asked 25 sign-ins 10 replies posted

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

0 点赞
AliAsgar
Moderator
Moderator
Moderator
1000 replies posted 250 solutions authored 750 replies posted

Hi,

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

AliAsgar

0 点赞