赛普拉斯USB3.0数据缓冲区大小的计算方法

今日头条

1142人已加入

描述

#ifdef STREAM_IN_OUT

#define BURST_LEN 16

#define DMA_BUF_SIZE (16)

/* Slave FIFO P_2_U channel buffer count */

#define CY_FX_SLFIFO_DMA_BUF_COUNT_P_2_U      (1)

/* Slave FIFO U_2_P channel buffer count */

#define CY_FX_SLFIFO_DMA_BUF_COUNT_U_2_P  (1)

#endif


#define CY_FX_SLFIFO_DMA_BUF_COUNT      (2)                   /* Slave FIFO channel buffer count - This is used with MANUAL DMA channel */

#define CY_FX_SLFIFO_DMA_TX_SIZE        (0)                  /* DMA transfer size is set to infinite */

#define CY_FX_SLFIFO_DMA_RX_SIZE        (0)                  /* DMA transfer size is set to infinite */

#define CY_FX_SLFIFO_THREAD_STACK       (0x0400)              /* Slave FIFO application thread stack size */

#define CY_FX_SLFIFO_THREAD_PRIORITY    (8)                   /* Slave FIFO application thread priority */

如上面的配置所示,是把USB3.0的读写缓冲区全部配置为16KByte大小,此时由于数据位宽为32bit,所以FIFO缓冲区的深度为4096,也就是说每次只能写4096*32bit数量大小的数据。如果此时把数据位宽改为16bit,则FIFO缓冲区的深度变为8192,也就是说每次只能写8192*16bit数量大小的数据,但是相比32bit的位宽,每次可以读写的数据总量是不变的。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分