本帖最后由 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 ,发送的数据不对,请教一下,是不是我哪里弄错了? |