Consulting with CYUSB3014

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

cross mob
Robin_Peng
Level 5
Level 5
Distributor - Macnica(GC)
100 replies posted 50 replies posted 50 questions asked

你好,

我们使用FX3设备CYUSB3014_BZXC做数据传输。

在之前的系统中(联想和华为的PAD)插着开机是没有问题,但在使用surface Pro7时发现启动时是问题的。

FX3不能被成功枚举成stream设备。

初步观察surface Pro有两个USB ROOT, 当插在其中一个TypeC的口上时, BootLoader在ROOT1(方便说明起的名字),

快速加载FX3,可以成功枚举成Steam类型设备, 并且切换到ROOT2. 如果加载时间间隔比较长(大于10秒左右),不能成功。

在另一个口,BootLoader和Stream都在ROOT1, 不存在此类问题。

想请帮忙分析可能的原因,提供一些信息。谢谢!



另外,作为workaround, 是否有办法对FX3做一次虚拟插拔,然后立即加载?

 

0 Likes
1 Solution
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

您好,

我在你们的描述中看到了这是一个Type-C设备,请问你们有PD控制器控制MUX翻转SS信号吗?这可能是因为PD控制器需要通过沟通确定MUX的方向,然而USB 2.0 D+/D- 是需要通过MUX的,这样USB2.0信号在USB3.0信号出现之前直接接入了主机,你们可以在硬件上通过PD控制器的GPIO控制FX3的reset脚,在确定了MUX的方向后再让FX3枚举。

Regards,

Eddie

View solution in original post

0 Likes
5 Replies
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

您好,

原因就是加载时间超时。

可以参考这篇KBAHandling CY_U3P_USB_EVENT_LMP_EXCH_FAIL Event from FX3 SDK during USB Enumeration - KBA225778 对固件进行修改。


Regards,
Eddie

0 Likes
Robin_Peng
Level 5
Level 5
Distributor - Macnica(GC)
100 replies posted 50 replies posted 50 questions asked

好的,谢谢!那么是否有方法模拟一下FX3插拔动作?作为workaround, 是否有办法对FX3做一次虚拟插拔,然后立即加载?

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

我给你发的KBA中对固件的修改就是解决类似你要求的虚拟拔插的问题,重启整个USB Block。

0 Likes
Robin_Peng
Level 5
Level 5
Distributor - Macnica(GC)
100 replies posted 50 replies posted 50 questions asked

您好,

Surface pro 7 具有两个 xHCI 控制器,分别是
DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0001
VendorID: 8086
DeviceID: 34ED
SubSysID: 72708086
Revision: 30

Debug Port Number:  0
Bus.Device.Function (in decimal): 0.20.0

Host Controller Power State Mappings
System State        Host Controller        Root Hub    USB wakeup    Powered
S0 (working) D0 S? (unmapped)
S1 (sleep)          D? (unspecified) D3
S2 (sleep)          D? (unspecified) D3
S3 (sleep)          D? (unspecified)    D3
S4 (Hibernate) D3 D2 Yes        Yes
Last Sleep State    S? (unmapped)  

-----------------------

DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0000
VendorID: 8086
DeviceID: 8A13
SubSysID: 00000000
Revision: 03

Debug Port Number:  2
Bus.Device.Function (in decimal): 0.13.0

Host Controller Power State Mappings
System State        Host Controller        Root Hub    USB wakeup    Powered
S0 (working) D0 S? (unmapped)
S1 (sleep)          D? (unspecified) D3
S2 (sleep)          D? (unspecified) D3
S3 (sleep)          D? (unspecified) D3
S4 (Hibernate) D3 D2 Yes        Yes
Last Sleep State    S? (unmapped)  



其中 8A13 是为了支持雷电3接口的
我用你提供的链接的示例代码,正常情况下,使用 type c 连接,下载完 firmware,应该如下图所示

1.png

但是如果连接着设备,关机,冷启动

2.png

Bulkloop Example 设备出现在 High speed 的端口上,也就是没有认出是 USB3.0 设备

另外,如果系统启动后,热插拔设备,就像 james 描述的,如果快速下载 firmware,那么能识别为 3.0 设备,然后出现在雷电3的 xHCI 端口上,

如果过个 10 秒再配置,就出现在 2.0 的端口上。

能帮忙分析一下吗?谢谢!

另外,我们的 bootloader 就是从 FX3 默认的 bootROM 中直接启动的

0 Likes
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

您好,

我在你们的描述中看到了这是一个Type-C设备,请问你们有PD控制器控制MUX翻转SS信号吗?这可能是因为PD控制器需要通过沟通确定MUX的方向,然而USB 2.0 D+/D- 是需要通过MUX的,这样USB2.0信号在USB3.0信号出现之前直接接入了主机,你们可以在硬件上通过PD控制器的GPIO控制FX3的reset脚,在确定了MUX的方向后再让FX3枚举。

Regards,

Eddie

0 Likes