怎么配置同时具备SlaveFifo和USB-UART 桥接功能的FX3设备

公告

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

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

cross mob
Ryan-SEU
Level 1
Level 1
5 sign-ins First reply posted First question asked

Cypress专家你好

我正在使用贵公司的Cyusb3014这款产品,目前已经熟悉了基本的开发环境,开发流程,阅读了贵公司提供的FX3相关文档中的大部分。SDK、驱动等都已安装。

我目前希望在我的FX3设备实现如下两个功能,这两个功能希望同时实现,且彼此之间互不干扰

1. FX3与FPGA连接,即使用SlaveFifo功能(如 FX3 SDK slfifosync 示例)

2. 在1的基础上同时使FX3具备USB-UART 桥接功能(如 FX3 SDK  UsbUart示例)

目前我在这两个回答的基础上,以FX3 SDK slfifosync(2bit)例程为基础,尝试去生成我所要的工程文件

https://community.infineon.com/t5/Knowledge-Base-Articles/Adding-Communication-Device-Class-Interfac...

https://community.infineon.com/t5/USB-Superspeed-Peripherals/How-to-configure-FX3-USB-device-with-mu...

目前的问题如下:

A. FX3 SDK UsbUart例程中对于UART配置了3个端点,如果我想要实现上述的两个功能,应该需要5个端点,这是否意味着必须使用5bit模式的slavefifo

RyanSEU_0-1637154184193.png

B.  因为使用了USB-UART桥接功能,在USB Control Center这个软件中,还能否读到描述符等信息。

 

0 点赞
1 解答
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

1, 这个描述符长度一旦不匹配,设备在设备管理器中会有黄色感叹号,显示设备异常。你可以试一下改成0x81

2.USB Control Center中只会显示绑定Cypress驱动的设备,如果你按照连接里面操作,CDC已经显示成了串口,你可以去设备管理器里面找是否有这个COM口·

3.当然会影响,条件是你的slavefifo会用满USB的带宽。实际上即使GPIF32位跑满100M,也只有3.2Gbps,远远没有达到USB 3.0的5Gbps. DMA buffer同理,你只要分配好buffer size就不会影响。

4, 因为CyU3PUsbStart已经在CyFxSlFifoApplnInit 里面调用过了,无需重复调用。

 

在原帖中查看解决方案

0 点赞
4 回复数
Ryan-SEU
Level 1
Level 1
5 sign-ins First reply posted First question asked

我将链接1的附录文件中的.img文件烧录到FX3,成功的在我的电脑上枚举成了两个设备,一个是串口,一个是Cypress FX3 USB Streamer Example,之前的问题B我已经知道答案了,现在有三个新的问题(包括对之前问题A的重新表述)。

1. 为什么链接1中的cyfxslfifosync.h中只配置了两个端点,USB-UART桥接功能不需要使用端点吗?如果不需要的话,为什么FX3 SDK  UsbUart例程中配置了3个端点(包括一个用于中断的端点)

2. USB-UART桥接功能不配置端点的话,能否让slavefifo和USB-UART桥接功能同时使用

3. 链接1中说的配置端点是什么意思,附件中的例程中似乎没有看到任何对UART DMA通道配置端点的操作

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

1. 为什么链接1中的cyfxslfifosync.h中只配置了两个端点,USB-UART桥接功能不需要使用端点吗?如果不需要的话,为什么FX3 SDK  UsbUart例程中配置了3个端点(包括一个用于中断的端点)

=>首先你要看这个工程的描述符文件,cyfxslfifousbdscr.c, 在#ifdef cdc 下,显然是配了CDC设备的endpoint.

实际上工程中也是也配了5个endpoint,可能你没找到。

2. USB-UART桥接功能不配置端点的话,能否让slavefifo和USB-UART桥接功能同时使用

=>任何一个USB设备的任意一个interface都需要具备endpoint。

3. 链接1中说的配置端点是什么意思,附件中的例程中似乎没有看到任何对UART DMA通道配置端点的操作

=>你可以在工程中搜索:CyU3PSetEpConfig,CyU3PDmaChannelCreate这个两个函数。

0 点赞
Ryan-SEU
Level 1
Level 1
5 sign-ins First reply posted First question asked

感谢您的回答
对于链接1的固件,有几点不明白
1. 在cyfxslfifousbdscr.c中,以const uint8_t CyFxUSBSSConfigDscr[]为例,加入CDC描述符后,为什么描述符长度的计算不是0x2c+0x55=0x81,而是0x80呢?

RyanSEU_0-1637255577080.png

2. 为什么在Control Center中只能读到BULK IN 和BULK OUT的端点,而UART的端点为什么没有显示,我后续需要用C#写上位机界面,上位机上能否读到UART端点

RyanSEU_2-1637257363684.png

 

3. UART也用了DMA通道,是否会影响用于BULK传输的通道的吞吐量,因为需要占用DMA缓存区?
4. 在cyfxslfifosync.c中CyFxUSBUARTAppInit() 为什么要注释掉这一段代码,在USBUART的例程中是需要加进来这段代码的,我尝试在链接1的固件中加进来这段代码后,发现设备管理器中可以识别到串口,但是USB-UART的桥接功能却不能正常工作,能否解释下原因

RyanSEU_1-1637257050625.png

以上,期待您的回复

0 点赞
YiZ_31
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

1, 这个描述符长度一旦不匹配,设备在设备管理器中会有黄色感叹号,显示设备异常。你可以试一下改成0x81

2.USB Control Center中只会显示绑定Cypress驱动的设备,如果你按照连接里面操作,CDC已经显示成了串口,你可以去设备管理器里面找是否有这个COM口·

3.当然会影响,条件是你的slavefifo会用满USB的带宽。实际上即使GPIF32位跑满100M,也只有3.2Gbps,远远没有达到USB 3.0的5Gbps. DMA buffer同理,你只要分配好buffer size就不会影响。

4, 因为CyU3PUsbStart已经在CyFxSlFifoApplnInit 里面调用过了,无需重复调用。

 

0 点赞