问题哦,STM32 USB 描述1个接口2个端点

[复制链接]
3741|3
 楼主| lattice1 发表于 2011-4-2 14:45 | 显示全部楼层 |阅读模式
如题,成功描述了2个端点,由于数据长度的不同,1个端点用于win7通信,另外一个端点用于XP通信。

但是端点1可以发送数据,端点2不可以发送数据,相关的地方都有检查,也看了21IC一些帖子,还是没有思路。

知道的达人指点下
wayneeinstein 发表于 2011-4-2 15:00 | 显示全部楼层
这么笼统。。。。
 楼主| lattice1 发表于 2011-4-2 15:34 | 显示全部楼层
OK,我说详细些,在配置描述符中,描述了2个端点,端点1 ,端点2.
   端点1可以发送数据, 端点2就不行。

代码如下:
#define EP_NUM     (3)
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (0x40)
#define ENDP0_TXADDR        (0x80)

/* EP1  */
/* tx buffer base address */
#define ENDP1_TXADDR        (0xC0)
#define ENDP2_TXADDR        (0x100)
#define ENDP3_RXADDR        (0x110)


/* Initialize Endpoint 1 */
  SetEPType(ENDP1, EP_INTERRUPT);
  SetEPTxAddr(ENDP1, ENDP1_TXADDR);
  SetEPRxAddr(ENDP1, ENDP1_RXADDR);
  SetEPTxCount(ENDP1, 14); //ARM --> PC
  SetEPRxCount(ENDP1, 14); // PC --> ARM
  //SetEPRxStatus(ENDP1, EP_RX_VALID);
  SetEPRxStatus(ENDP1, EP_RX_DIS);
  SetEPTxStatus(ENDP1, EP_TX_NAK);

  
  /* Initialize Endpoint 2 */
  SetEPType(ENDP2, EP_INTERRUPT);
  SetEPTxAddr(ENDP2, ENDP2_TXADDR);            
  SetEPRxAddr(ENDP2, ENDP2_RXADDR);
  SetEPTxCount(ENDP2, 10); //ARM --> PC
  SetEPRxCount(ENDP2, 10); // PC --> ARM
// SetEPRxStatus(ENDP2, EP_RX_VALID);
  SetEPRxStatus(ENDP2, EP_RX_DIS);
  SetEPTxStatus(ENDP2, EP_TX_NAK);
mcuisp 发表于 2011-4-2 18:14 | 显示全部楼层
host有让端点发才行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

300

帖子

3

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