USB论坛
直播中

岳臻俊

9年用户 1170经验值
私信 关注
[问答]

cyusb3014 slave fifo模式In和Out缓存大小不一样时,显示错误怎么解决?

cyusb3014 slave fifo 模式 In 和 Out 缓存大小设置不一样时(比如:U2P DMA缓存16K,P2U DMA缓存1K),可以测出来实际就是设置值,但在USB Control Center 显示的USB信息都显示 16K, 这个 需要怎么修改才能让USB信息是正确的呢?

回帖(1)

ronga245

2025-5-15 17:33:33

针对CYUSB3014 Slave FIFO模式下IN和OUT缓存大小显示错误的问题,以下是逐步解决方案:




1. 检查固件中的DMA通道配置


在FX3固件中,DMA通道的缓冲区大小通过CyU3PDmaChannelSetXferCyU3PDmaChannelCreate函数设置。确保U2P(OUT)P2U(IN)通道的缓冲区大小参数独立配置:


// U2P(OUT)通道配置为16KB
CyU3PDmaChannelSetXfer (&u2pChannelConfig, 16 * 1024);

// P2U(IN)通道配置为1KB
CyU3PDmaChannelSetXfer (&p2uChannelConfig, 1 * 1024);

确认两个通道的配置结构体(如CyU3PDmaChannelCfg_t)中size字段未被错误复用或覆盖。




2. 验证USB端点描述符


USB设备的端点描述符(Endpoint Descriptor)中,需确保INOUT端点的wMaxPacketSize与实际传输需求匹配。例如:


// OUT端点(0x01)配置
epCfg.size = 512;  // 根据实际需求调整
epCfg.enable = CyTrue;

// IN端点(0x81)配置
epCfg.size = 64;   // 根据实际需求调整
epCfg.enable = CyTrue;

如果端点描述符的wMaxPacketSize设置过大或过小,可能导致工具显示异常。




3. 更新USB Control Center和固件



  • 确保使用的是最新版本的USB Control CenterFX3 SDK,旧版本可能存在显示逻辑的缺陷。

  • 检查Cypress官网的更新日志,确认是否有相关修复补丁。




4. 使用调试工具验证实际配置


通过以下方式确认DMA缓冲区实际生效值:



  • Cypress Debugger:附加调试器,检查DMA通道寄存器(如CY_U3P_DMA_SIZE)的值。

  • 日志输出:在固件中添加调试信息,打印DMA通道配置后的实际参数。




5. 修改USB描述符的字符串信息


如果USB Control Center显示的信息直接取自设备字符串描述符,可在固件中自定义描述符,明确区分IN/OUT缓存:


// 自定义字符串描述符
uint8_t usbProductStr[] = "U2P:16K, P2U:1K";
CyU3PUsbSetDesc(CY_U3P_USB_STRING_DESCR, 2, sizeof(usbProductStr), usbProductStr);



6. 联系Cypress技术支持


如果问题仍未解决,可能是工具或驱动的已知问题。通过以下途径反馈:



  • Cypress社区论坛:提交问题描述和配置细节。

  • 技术支持工单:提供最小复现代码和测试步骤。




通过以上步骤,应能定位并修复USB Control Center显示不匹配的问题,确保IN/OUT缓存大小正确反映实际配置。

举报

更多回帖

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