stm32f2 系列 USB device FIFO_FS_SIZE 大小设置问题

[复制链接]
10418|8
 楼主| easylwl 发表于 2013-4-22 17:06 | 显示全部楼层 |阅读模式
本帖最后由 easylwl 于 2013-4-22 17:10 编辑

用STM32F207VC  开发 usb设备  BULK传输 ,
使用了两个端点 IN 端点 0X82  和 OUT端点 0X03 ,端点的最大包长度都是 64   字节
问题是 ,FIFO的大小应该怎样设置呢?
ST官方代码包有这个注释:
/*******************************************************************************
*                      FIFO Size Configuration in Device mode
*  
*  (i) Receive data FIFO size = RAM for setup packets +
*                   OUT endpoint control information +
*                   data OUT packets + miscellaneous
*      Space = ONE 32-bits words
*     --> RAM for setup packets = 10 spaces
*        (n is the nbr of CTRL EPs the device core supports)
*     --> OUT EP CTRL info      = 1 space
*        (one space for status information written to the FIFO along with each
*        received packet)
*     --> data OUT packets      = (Largest Packet Size / 4) + 1 spaces
*        (MINIMUM to receive packets)
*     --> OR data OUT packets  = at least 2*(Largest Packet Size / 4) + 1 spaces
*        (if high-bandwidth EP is enabled or multiple isochronous EPs)
*     --> miscellaneous = 1 space per OUT EP
*        (one space for transfer complete status information also pushed to the
*        FIFO with each endpoint's last packet)
*
*  (ii)MINIMUM RAM space required for each IN EP Tx FIFO = MAX packet size for
*       that particular IN EP. More space allocated in the IN EP Tx FIFO results
*       in a better performance on the USB and can hide latencies on the AHB.
*
*  (iii) TXn min size = 16 words. (n  : Transmit FIFO index)
*   (iv) When a TxFIFO is not used, the Configuration should be as follows:
*       case 1 :  n > m    and Txn is not used    (n,m  : Transmit FIFO indexes)
*       --> Txm can use the space allocated for Txn.
*       case2  :  n < m    and Txn is not used    (n,m  : Transmit FIFO indexes)
*       --> Txn should be configured with the minimum space of 16 words
*  (v) The FIFO is used optimally when used TxFIFOs are allocated in the top
*       of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones.
*******************************************************************************/
看不懂??
我的设置为:
#ifdef USB_OTG_FS_CORE
#define RX_FIFO_FS_SIZE                          128
#define TX0_FIFO_FS_SIZE                          32
#define TX1_FIFO_FS_SIZE                            0
#define TX2_FIFO_FS_SIZE                          128
#define TX3_FIFO_FS_SIZE                           0
可是IN发送不了??

 楼主| easylwl 发表于 2013-4-22 17:10 | 显示全部楼层
ST HID  demo  和 MSCdemo :
#ifdef USB_OTG_FS_CORE
#define RX_FIFO_FS_SIZE                          128
#define TX0_FIFO_FS_SIZE                          64
#define TX1_FIFO_FS_SIZE                         128
#define TX2_FIFO_FS_SIZE                          0
#define TX3_FIFO_FS_SIZE                          0


VCP  demo:
#ifdef USB_OTG_FS_CORE
#define RX_FIFO_FS_SIZE                          128
#define TX0_FIFO_FS_SIZE                          32
#define TX1_FIFO_FS_SIZE                         128
#define TX2_FIFO_FS_SIZE                          32
#define TX3_FIFO_FS_SIZE                           0

IJK 发表于 2013-4-22 17:24 | 显示全部楼层
使用了两个端点 IN 端点 0X82  和 OUT端点 0X03

感觉这样不好,因为端点1空着没用。可以:
使用两个端点 IN 端点 0X81  和 OUT端点 0X02
cjhk 发表于 2013-4-22 18:41 | 显示全部楼层
问题解决了吗  楼主 帮你顶一个   希望有高手能够看到
airwill 发表于 2013-4-22 19:53 | 显示全部楼层
可以参考一下 ST 的 usb 库里的 MSC 例子.
 楼主| easylwl 发表于 2013-4-23 09:04 | 显示全部楼层
MSC 使用的是端点 0X81  和 0X01
我把端点改为  0X81  和 0x01  ,再 设置
#ifdef USB_OTG_FS_CORE
#define RX_FIFO_FS_SIZE                          128
#define TX0_FIFO_FS_SIZE                          64
#define TX1_FIFO_FS_SIZE                         128
#define TX2_FIFO_FS_SIZE                          0
#define TX3_FIFO_FS_SIZE                          0

就OK了 ,谢谢大家.
bjxdylzsts 发表于 2013-9-16 16:41 | 显示全部楼层
谁知道  这些 size和 发送和接收的关系啊。  现在设置的 不是 in不行就是out不行!我要发送大于64字节的数据,usb 全速模式,请假大神 指导
yu0405jie 发表于 2015-3-26 21:22 | 显示全部楼层
我用了一个EP1 IN,一个EP2 IN和一个EP2 OUT,首先由EP2 OUT发送数据给单片机没有问题,然后EP2 IN返回响应,EP1 IN返回数据,经过一段时间后,在由EP2 OUT发送指令,此时单片机接收的指令是上一次的指令,很奇怪
ccd007 发表于 2017-8-12 17:54 | 显示全部楼层
yu0405jie 发表于 2015-3-26 21:22
我用了一个EP1 IN,一个EP2 IN和一个EP2 OUT,首先由EP2 OUT发送数据给单片机没有问题,然后EP2 IN返回响应 ...

你的问题解决了吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

28

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部