- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I found an error in previous post! The endopint description is, actually:
;; Isoc IN Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 82H ;; 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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is another clue!!!
If I set endpoint polling time to 2 instead of 1 (250us instead of 125 us) transaction WORKS, even with 3 pkts/uframe! Unfortunately I need 3pkts/uframe with polling time of 125 us!!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi !
It really has been a long time to reply. I have no idea if you have resolve your problem.
Now I want to realize the same design like yours. I got a problem that I do NOT want to stop the ISO trans while the XferData function must return after the specified data length has been transfered.
Thank you!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
The API Xferdata() returns when it receives the number of bytes that it has requested or after time out.To wait for infinite time set the timeout to 0xFFFFFFFF, then xferdata waits for infinte time. But if it receives the number of bytes that it has requested for , then it will return.
Please provide details about your application
Regards,
Vikas.