项目场景:USB FIFO 大小为啥不能超过320
USB slver 多端点使用的时候异常
问题描述
使用GD32 F4 USB FS 开发两路CDC一路MSC;USB设备枚举成功,但是MSC无法打开
原因分析:
#define RX_FIFO_FS_SIZE 128
#define TX0_FIFO_FS_SIZE 64
#define TX1_FIFO_FS_SIZE 64
#define TX2_FIFO_FS_SIZE 64
#define TX3_FIFO_FS_SIZE 64
- USB FIFO(First In, First Out,先进先出队列)大小通常受到USB控制器硬件规格的限制,特别是其内部FIFO RAM(随机存取存储器)的容量限制。关于USB FIFO大小为何不能超过320(通常指的是320个32位字,即1.25KB)。
- 在设备模式下,数据 FIFO 分为多个部分,其中包含 1 个 Rx FIFO 和 4 个 Tx FIFO,每个 Tx
FIFO 对应着一个 IN 端点,所有的 OUT 端点通过共享 Rx FIFO 接收数据包。通过寄存器
USBFS_GRFLEN 和 USBFS_DIEPxTFLEN (x=0…3),程序可配置数据 FIFO 的大小和起始
偏移地址。 设备模式 FIFO 空间所描述的是 SRAM 中各 FIFO 的结构,图中的数值是
以 32 位为单位![# 解决方案:
#define RX_FIFO_FS_SIZE 64
#define TX0_FIFO_FS_SIZE 64
#define TX1_FIFO_FS_SIZE 64
#define TX2_FIFO_FS_SIZE 64
#define TX3_FIFO_FS_SIZE 64