cancel
Showing results for 
Search instead for 
Did you mean: 

USB Superspeed Peripherals

xuya_3964206
New Contributor II

 

我们使用了TI的  TUSB501 芯片做CX3的 TX信号增强,原理图如下。

我们发现,如果用电脑的 USB3.0 接口下载固件没有问题,一切正常。

当我们使用 USB2.0 口下载固件的时候,发现刚开始枚举下载设备的时候没有问题,选择Program -> SPI flash,等待一会儿就会显示设备未发现(正常情况是可以正常弹出窗口选择固件进行下载。)

经过排查分析,拿掉了增强芯片,以上现象消失。

我们怀疑,CX3误识别了设备,以为我们插入的是USB3.0口,从而导致通讯失败,不能识别设备。

 

请问有什么解决办法?

 

xuya_3964206_0-1626431583411.png

 

0 Likes
28 Replies
YiZ_31
Moderator
Moderator

Hi,

 

点击选择Program -> SPI flash的过程本质是向CX3下载了一个固件,该固件再把USB传过来的固件数据给写入Flash。这个固件的源代码在SDK中, USBFlashProg。

您可以修改代码,通过修改固件中的CyU3PConnectState(CyTrue, CyTrue)为CyU3PConnectState(CyTrue, CyFalse)这样,这个固件只会枚举为USB2.0 device,也就不会受到USB3.0信号的影响。

0 Likes
xuya_3964206
New Contributor II

在SDK中没有找到源码,麻烦给一下USBFlashProg工程源码。

 

-----找到了  是cyfxflashprog 工程

0 Likes
wangjiaxing
New Contributor

1)使用这个工程,什么都不改直接编译:C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxflashprog

2)将生成的镜像问题替换掉C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\bin\CyBootProgrammer.img

3) USB control center依次选择Program -> FX3 -> SPI FLASH

4)下载镜像的弹框没有弹出来,设备管理器里面异常如下:

wangjiaxing_0-1626835531662.png

5)对比原来的CyBootProgrammer.img和现在编译出来的镜像文件差异很大。如下:

wangjiaxing_1-1626835641723.png

 

0 Likes
YiZ_31
Moderator
Moderator

我这里是可以这么操作的

不修改代码直接编译:

YiZ_31_0-1626855594465.png

修改代码后为highspeed:

YiZ_31_1-1626855691211.png

 

那只能是你板子的硬件有问题。

您这个增强芯片起的是什么作用呢?增大差分信号的幅度?是为了延长USB线缆的长度吗?

0 Likes
xuya_3964206
New Contributor II

是为了延长USB线缆的长度。我们不修改任何代码的情况下编译cyfxflashprog  工程,对比原来的CyBootProgrammer.img和现在编译出来的镜像文件差异很大。然后就出问题了。

我们bypass这颗增强IC,然后用USB2.0口下载没有问题(用默认CyBootProgrammer.img)。

你可以把你的改为2.0的编译好的CyBootProgrammer.img发给我们验证一下吗?

 

邮件:xu.yan@movisionxr.com

 

0 Likes
YiZ_31
Moderator
Moderator

你把status = CyU3PConnectState(CyTrue, CyFalse);这句改了编译即可。

img差异大可能因为默认用的那个用的是我们老版本的library,没什么问题。

0 Likes
xuya_3964206
New Contributor II

你把status = CyU3PConnectState(CyTrue, CyFalse);这句改了编译即可。

-----------我们尝试过了,USB枚举出来后会报错显示黄色感叹号  “该设备无法启动. (代码 10) 指定不存在的设备.”

我们不修改任何代码的情况下编译cyfxflashprog  工程,出现如上一样的情况。

使用默认的CyBootProgrammer.img没有此问题。

 

0 Likes
YiZ_31
Moderator
Moderator

您一开始说的是"当我们使用 USB2.0 口下载固件的时候,发现刚开始枚举下载设备的时候没有问题,选择Program -> SPI flash,等待一会儿就会显示设备未发现(正常情况是可以正常弹出窗口选择固件进行下载。)"

可是你现在又说使用默认的CyBootProgrammer.img没有此问题。

所以现在一个问题就在于,USB2.0的固件是否有可以成功工作过的?

0 Likes
xuya_3964206
New Contributor II

误会了。

使用默认的CyBootProgrammer.img没有此问题。

-------这个是基于我去掉这颗增强IC。只要这颗增强IC存在就会找不到设备。所以您建议我们强制枚举为2.0.

如下现象是我拿掉了这颗增强IC。只有usb2.0连接。

现在的问题是,即使我物理断开usb3.0线路连接。也会出现以下情况。

我们不修改任何代码的情况下编译cyfxflashprog  工程,然后替换CyBootProgrammer.img会出现USB报错问题。

使用默认的CyBootProgrammer.img没有此问题。下载一切正常。

 

 

0 Likes
YiZ_31
Moderator
Moderator

在增强IC存在的情况下你用USB3.0的口下载USB2.0的固件,可以枚举么?

0 Likes
xuya_3964206
New Contributor II

增强IC存在的情况下从来没有成功过。会出现设备未发现。

我们按照你的建议更改工程把status = CyU3PConnectState(CyTrue, CyFalse),然后替换就出现了黄色感叹号。

0 Likes
YiZ_31
Moderator
Moderator

那你这个问题的关键点就不在bootprogrammer的使用,而是增强I2C存在的情况下USB2.0根本无法工作。我觉得你也可以去咨询一下TI的工程师。

0 Likes
xuya_3964206
New Contributor II

我断开了CX3上面的usb3.0的连接,拿掉了增强IC。只保留usb2.0。

使用默认bootprogrammer下载一切正常。当然弹出的窗口显示是usb 2.1

使用本地编译的bootprogrammer下载的时候出现黄色感叹号。

我们想按照你的方案规避我们的问题,但是目前就是我们编译的bootprogrammer有问题。

附件为我们自己编译的CyBootProgrammer.img  请参考

0 Likes
YiZ_31
Moderator
Moderator

昨天我已经说了,你的问题的关键在于USB2.0无法工作,和bootprogrammer没有关系。

使用CyU3PConnectState将固件改为USB Highspeed与USB3.0的固件插入USB2.0口效果是一样的。而且你也可以在3.0口下载固件然后修改PMODE插到USB2.0口上证实我的话。

即使是你成功的在USB2.0口下载了固件,这个固件也不会成功枚举。

这个信号有问题没法通过软件解决,谢谢。

0 Likes
xuya_3964206
New Contributor II

你好,我拿掉增强芯片后,使用默认bootprogrammer,下载一切正常的。USB2.0的物理链路是没有问题的。USB2.0是工作正常的。我们也跑过LOOP。

 

我们现在要解决的是,我们自己编译的bootprogrammer没法正常工作。

 

 

0 Likes
YiZ_31
Moderator
Moderator

那增强芯片存在的情况下呢?USB2.0设备可以枚举吗?

0 Likes
xuya_3964206
New Contributor II

那增强芯片存在的情况下呢?USB2.0设备可以枚举吗?

---------不能,感觉应该是设备误识别为3.0,一直不往2.0掉落。

我们的应用必须要使用usb3.0.  所以为了规避这个下载问题,我们想在下载固件的时候强制枚举为2.0。也就是需要更改bootprogrammer,但是,我们不更改自己本地编译都出现不可用。附件之前已经附上,您可以验证一下。您也可以把你编译个强制USB2.0的bootprogrammer发给我们验证一下。

0 Likes
YiZ_31
Moderator
Moderator

bootprogrammer本质也是一个固件啊,和其他的固件没有什么区别,只是他的作用是用来往flash或者eeprom中写数据,你其他的都不能枚举为什么觉得bootprogrammer可以枚举呢。

0 Likes
xuya_3964206
New Contributor II

我们使用默认的bootprogrammer,在USB2.0下一切正常。自己编译这个bootprogrammer就不正常了。我有私信给你我的电话,能电话沟通一下吗?

0 Likes
YiZ_31
Moderator
Moderator

你就不要纠结bootprogrammer的问题了,这个对你现在没有任何帮助。

如果你想要强制使你的应用在2.0下不工作,只工作在3.0,可以参考这篇文章:

https://community.cypress.com/t5/Knowledge-Base-Articles/Enabling-FX3-Only-for-USB-3-0-Applications-...

0 Likes
xuya_3964206
New Contributor II

您可以把你之前编译的。可以枚举出2.0的bootprogrammer发给我吗?

我们工厂电脑是2.0端口。2.0是必须保留的。

我们就想改一下 bootprogrammer ,然后能让他像默认bootprogrammer一样正常弹框出来下载固件。

xuya_3964206_0-1627025491557.png

 

0 Likes
YiZ_31
Moderator
Moderator

我打过4遍了,没人接。

0 Likes
xuya_3964206
New Contributor II

😂  有一个未接来电没接到的,不好意思。再打一下吧🤣

0 Likes
xuya_3964206
New Contributor II

你好,项目紧急能帮尽快解决一下问题吗?

0 Likes
YiZ_31
Moderator
Moderator
 
0 Likes
xuya_3964206
New Contributor II

您提供的img文件测试OK。能否把cyfxflashprog这个文件夹打包发给我们?感谢!

0 Likes
xuya_3964206
New Contributor II

经过排查发现,我们编译的是release版本,不能用,

但是编译debug版本,通过比较,和你提供的USBFlashProg20.img 二进制一模一样。

为什么会这样呢?release版本还有问题吗 ?

0 Likes
YiZ_31
Moderator
Moderator

release和debug版本编译使用的library不一样,release版本通常固件大小会小一点。

我用release版本还是可以正常枚举的

 

0 Likes