打印

端点3发送数据出错,请教一下原因

[复制链接]
2189|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rex994997787|  楼主 | 2011-4-17 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
se, ADDR, AD, DDR, TE
本帖最后由 rex994997787 于 2011-4-17 21:06 编辑

#define EP_NUM     (4)

#define MAX_EP1_PACKET_SIZE 0x40
#define MAX_EP2_PACKET_SIZE 0x40
/*-------------------------------------------------------------*/
/* --------------   Buffer Description Table  -----------------*/
/*-------------------------------------------------------------*/
/* buffer table base address */
/* buffer table base address */
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (0x20)
#define ENDP0_TXADDR        (0x60)

/* EP1  */
/* tx buffer base address */
#define ENDP1_RXADDR        (0x108)
#define ENDP1_TXADDR        (0x148)
#define ENDP2_RXADDR        (0x188)
#define ENDP2_TXADDR        (0x1c8)

//#define ENDP3_RXADDR        (0x148)
#define ENDP3_TXADDR        (0x208)

/*初始化部分*/
SetEPType(ENDP0, EP_CONTROL);
  SetEPTxStatus(ENDP0, EP_TX_STALL);
  SetEPRxAddr(ENDP0, ENDP0_RXADDR);
  SetEPTxAddr(ENDP0, ENDP0_TXADDR);
  Clear_Status_Out(ENDP0);
  SetEPRxCount(ENDP0, Device_Property.MaxPacketSize);
  SetEPRxValid(ENDP0);

  /* Initialize Endpoint 1 */
  SetEPType(ENDP1, EP_BULK);
  SetEPTxAddr(ENDP1, ENDP1_TXADDR);
  SetEPRxAddr(ENDP1, ENDP1_RXADDR);
  SetEPTxCount(ENDP1, MAX_EP1_PACKET_SIZE);
  SetEPRxCount(ENDP1, MAX_EP1_PACKET_SIZE);
  SetEPRxStatus(ENDP1, EP_RX_VALID);
  SetEPTxStatus(ENDP1, EP_TX_NAK);

  SetEPType(ENDP2, EP_BULK);
  SetEPTxAddr(ENDP2, ENDP2_TXADDR);
  SetEPRxAddr(ENDP2, ENDP2_RXADDR);
  SetEPTxCount(ENDP2, MAX_EP2_PACKET_SIZE);
  SetEPRxCount(ENDP2, MAX_EP2_PACKET_SIZE);
  SetEPRxStatus(ENDP2, EP_RX_VALID);
  SetEPTxStatus(ENDP2, EP_TX_NAK);

  SetEPType(ENDP3, EP_INTERRUPT);
  SetEPTxAddr(ENDP3, ENDP3_TXADDR);
  SetEPTxCount(ENDP3, 4);
  SetEPTxStatus(ENDP3, EP_TX_NAK);

/*发送部分*/
UserToPMABufferCopy(CardOutBuf, ENDP3_TXADDR, 2);               
SetEPTxCount(ENDP3, 2);
SetEPTxStatus(ENDP3, EP_TX_VALID);
地址分配是这样的,描述符应该没错,端点三作为中断端点,原本应该发送50 02,可它却发了80 01 ,发送的数据不对,请教一下,是不是我哪里弄错了?
沙发
rex994997787|  楼主 | 2011-4-17 21:12 | 只看该作者
找到原因了。。
参考了帖子https://bbs.21ic.com/viewthread.p ... =%E7%AB%AF%E7%82%B9

使用特权

评论回复
板凳
airwill| | 2011-4-18 10:07 | 只看该作者
恭喜楼主, 自己就找到了结果. 其实很多问题前人已经遇到过, 甚至解决过了, 搜索一下以往的相关帖子就可以了. 不过感觉 21ic 搜索相关帖子的功能不是太强, 希望网站管理者能改进一下.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

45

帖子

1

粉丝