Hi everybody,
I'm getting a strange error with CY7C68013A.
An image sensor is filling the endpoint FIFOs in AutoIN mode and data is sent through an Isochronous pipe. If I send 1pkt/uFrame, data are correctly received by the host, if I send 2 or 3 iso pkts/uFrame, I get an error from the host controller (E0000B00:Iso Request Failed and every packet has status E0000011: XACT error).
FIFO is configured with AUTOIN and ZEROLENIN.
Here is the code:
case Alt3_IsocIN:
// Only using endpoint 2, zero the valid bit on all others
EP2CFG = 0xD8; // EP2 is DIR=IN, TYPE=ISOC, SIZE=1024, BUF=4x
SYNCDELAY;
EP2FIFOCFG = 0x0d;
SYNCDELAY;
EP1OUTCFG = EP1INCFG = EP4CFG = EP6CFG = EP8CFG = 0x00;
SYNCDELAY;
// Clear out any committed packets
FIFORESET = 0x80;
SYNCDELAY;
FIFORESET = 0x02;
SYNCDELAY;
FIFORESET = 0x00;
SYNCDELAY;
// This register sets the number of Isoc packets to send per
// uFrame. This register is only valid in high speed.
EP2ISOINPKTS = 0x03; // with EP2ISOINPKTS = 0x01 WORKS!!!
break;
and the descriptor:
;; Isoc OUT Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 02H ;; Endpoint 2 and direction OUT
db ET_ISO ;; Endpoint type
db 00H ;; Maximun packet size (LSB)
db 14H ;; Max packect size (MSB) 10100b 3x1024 byte packets/uFrame
db 01H ;; Polling interval
I tried to manual flush the FIFO and in this case I correctly receive 3 pkts/uFrame!!!
Unfortunately I've no hardware protocol analyzer, so I cannot give deeper info about the isochronous transaction!
Thank you in advance!
|