英飞凌
直播中

李泽明

7年用户 1183经验值
私信 关注

求助,关于USBEP模式的选择以及切换问题求解

大家好,我想请教一下下面的问题,我是使用了范例F:FX3_SDK_WORKEZ-USB FX3 SDK1.3firmwareslavefifo_examplesslfifosync5bit进行了修改,其中里面包含了15个输入和输出端点。我现在想要将其中的一组端点设置为我想要的模式(我选择了EP15)。
其中我对SCR.h文件进行修改,更改了EP15_IN的模式为INT模式(因为INT模式能够将数据在某一个外设触发的时候将数据推送至PC端,即UtoP,并且我还想当串口接收数据的时候就通过这个端点发送到PC端),然后它的EP15_OUT模式默认为BULK模式。随后到了cyfxslfifosync5bit.c文件,我将其glNumberOfChannels更改成28,这是有意的避开EP15端点的初始化,从而有利于我后面的初始化。

可看上图,默认的初始化的模式是这样的。而我在下面额外增加了一个EP15的配置

其中代码在编译的时候并没有报错,但是下载到设备后,不显示相应的项目出来

后面Debug了才发现这边有一个失败是64的失败

因此我的疑问是,这些模式是有特殊限制的吗?我应该如何知道什么时候可以运用这些模式,并且我使用了Manual_OUT之后(在其他的范例做的实验),也并不能像我理想的一样,将串口接收的数据打印到PC端,这是否有解决方案?
提前感谢大家的帮助,这对我非常重要。
我在下方放置了我的试验代码,能够更加方便的理解我所说的问题。

回帖(1)

蒲泛粟

2024-5-23 17:32:40
根据您的描述,您想要将FX3 SDK中的EP15端点设置为INT模式,并在接收到串口数据时通过该端点发送到PC端。以下是一些建议和步骤:

1. 修改SCR.h文件:
   在SCR.h文件中,找到与EP15相关的宏定义,将EP15_IN的模式更改为INT模式。例如:

   ```
   #define EP15_IN  EP15_IN_INT
   ```

2. 修改cyfx_resource.h文件:
   在cyfx_resource.h文件中,找到与EP15相关的配置,确保INT模式已正确配置。例如:

   ```
   #define CY_FX_EP15_TYPE          FX_EP_BIDIR
   #define CY_FX_EP15_DIR           FX_EP_IN
   #define CY_FX_EP15_MAX_PKT_SIZE  64
   #define CY_FX_EP15_BUF_SIZE      64
   ```

3. 修改cyfx_slfifosync5bit.c文件:
   在cyfx_slfifosync5bit.c文件中,找到与EP15相关的代码段,确保EP15_IN和EP15_OUT的配置正确。例如:

   ```
   static FX_INT_EP_T glIntEp15 = {
       EP15_IN,
       FX_EP_INT,
       CY_FX_EP15_MAX_PKT_SIZE,
       CY_FX_EP15_BUF_SIZE,
       {0}, /* buffer pointers */
       0, /* buffer count */
       0, /* xfer count */
       0, /* xfer size */
       0, /* config state */
       0  /* EP state */
   };
   ```

4. 配置串口中断:
   在您的代码中,配置串口中断,以便在接收到数据时触发中断处理函数。在中断处理函数中,将接收到的数据写入EP15_IN的缓冲区,并发送数据到PC端。

5. 测试和调试:
   在完成上述修改后,编译并下载代码到FX3设备。使用USB协议分析工具(如Wireshark)或串口调试工具(如PuTTY)测试您的设置是否正确。

请注意,这些步骤仅供参考,具体实现可能因您的项目和代码结构而有所不同。在进行修改时,请确保您熟悉FX3 SDK的文档和示例代码,以便更好地理解如何配置和使用端点。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分