打印

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

[复制链接]
3055|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

粉丝