FX2LP-CY7C68013A Isochronous 3pkts/uFrame autoin not working!

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
DaBo_288066
Level 2
Level 2

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!

0 Likes
4 Replies
DaBo_288066
Level 2
Level 2

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

0 Likes
DaBo_288066
Level 2
Level 2

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!!

0 Likes
Anonymous
Not applicable

 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!

0 Likes
Anonymous
Not applicable

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.

0 Likes