
Registered on : 06-12-2008
Messages : 1
OFF-Line
|
A board using STR710FZ2,configing USB port according to Virtual Com Port demo,double buffer BULK OUT and double buffer BULK IN.After receiving data from PC,STR710 generates a interrupt immediately,reads data from OUT endpoint buffer,processes and writes data to IN endpoint buffer within 43 us,but data transmited to USB bus after 2 ms. when transmit successfully, STR710 generates a IN endpoint interrupt immediately.so every 2 ms PC gets only a 64-byte packet,USB bus actual data rate not exceed 32K Bps.Why?
Endpoint config as follow:
#define EP_NUM (4)
/*-------------------------------------------------------------*/
/* endpoint names */
/*-------------------------------------------------------------*/
#define INT_ENDP ENDP1 /* interrupt endpoint */
#define BULK_OUT_ENDP ENDP2 /* bulk out endpoint */
#define BULK_IN_ENDP ENDP3 /* bulk in endpoint */
/*-------------------------------------------------------------*/
/* -------------- Buffer Description Table -----------------*/
/*-------------------------------------------------------------*/
/* buffer table base address */
/* buffer table base address */
#define BTABLE_ADDRESS (0x00)
//Size of Buffer description table is 4*8=32 bytes. Packet buffers begin from 0x20.
/* EP0 */
/* rx/tx buffer base address, Length of RX or TX Packet buffers is 16 bytes */
#define ENDP0_RXADDR (0x20)
#define ENDP0_TXADDR (0x30)
/* EP1: interrupt endpoint */
/* rx buffer base address */
#define INT_ENDP_RXADDR (0x40)
/* EP2: bulk out endpoint */
/* rx/tx buffer base addresses */
/* rx/tx buffer counter values 64 bytes */
#define BULK_OUT_BUF0_ADDR (0x50)
#define BULK_OUT_BUF0_COUNT BULK_MAX_BYTE_NUM
/* BULK_OUT_BUF1_ADDR = 0x90 */
#define BULK_OUT_BUF1_ADDR (BULK_OUT_BUF0_ADDR + BULK_MAX_BYTE_NUM)
#define BULK_OUT_BUF1_COUNT BULK_MAX_BYTE_NUM
/* EP3: bulk in endpoint */
/* rx/tx buffer base addresses */
/* rx/tx buffer counter values 64 bytes */
/* BULK_IN_BUF0_ADDR = 0xD0 */
#define BULK_IN_BUF0_ADDR (BULK_OUT_BUF1_ADDR + BULK_MAX_BYTE_NUM)
#define BULK_IN_BUF0_COUNT BULK_MAX_BYTE_NUM
/* BULK_IN_BUF1_ADDR = 0x110 */
#define BULK_IN_BUF1_ADDR (BULK_IN_BUF0_ADDR + BULK_MAX_BYTE_NUM)
#define BULK_IN_BUF1_COUNT BULK_MAX_BYTE_NUM
|
|
|