5 Replies Latest reply on Dec 22, 2019 11:17 PM by YiZ_31

    Consulting with CYUSB3014

    RoPe_2386886

      你好,

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

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

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

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

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

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

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



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

       

        • 1. Re: Consulting with CYUSB3014
          YiZ_31

          您好,

           

          原因就是加载时间超时。

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


          Regards,
          Eddie

          • 2. Re: Consulting with CYUSB3014
            RoPe_2386886

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

            • 3. Re: Consulting with CYUSB3014
              YiZ_31

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

              • 4. Re: Consulting with CYUSB3014
                RoPe_2386886

                您好,

                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 中直接启动的

                • 5. Re: Consulting with CYUSB3014
                  YiZ_31

                  您好,

                   

                  我在你们的描述中看到了这是一个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