How to get continuative data access

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

cross mob
Anonymous
Not applicable

How to get continuative data access without "Not Ready Signal from FX3"?

   

Since my system does not have external memory, there is no way to keep saving data (Analog to Digital Data), if "Not ready signal("low") from FX3 occurs.

   

My system has two DMA channels with Async Slave FIFO Interface (One for U2P and The other one for P2U).

   

The required transfer rate for U2P is 1,500 Kbytes/sec, and That for P2U is 3,000 KBytes/sec. Both rate is exact number.
Thus total transfer rate is 4.39453125 MBytes/sec.

   

Since required transfer rate for each End Point, the size of buffer has been allocated in different size as below.

   

Firmware (FX3)
 -DMA Buffer Size
    - U2P : 64Kbytes  [Size (8KBytes) * Buffer Count (8)]   at Ep 0x02
    - P2U : 128Kbytes [Size (16KBytes) * Buffer Count (8)]  at Ep 0x82
Host PC (Intel I5, 4 GBytes Memory, Mother Board Support Both USB 3.0 and 2.0)
 - this.inDataEp.XferSize = 256KBytes;
 - this.outDataEp.XferSize = 256KBytes;

   

Since my system MUST work on USB 2.0, I think it is impossible to increase brust length more than one.

   

Currently, in aging test, "Not ready signal" occurs in about 5 hours(but actually ramdomly), and FX3 gives "ready signal" about 1ms later, after it occurs.

   

This is a fatal error. Please help me to solve this problem.
 

0 Likes
2 Replies
Anonymous
Not applicable

Hi,

   

I have a comment about the following line:

   

"Since my system MUST work on USB 2.0, I think it is impossible to increase brust length more than one"

   

You can have burst length set to any value between 1 to 16 and still it can work on USB2.0.

   

You can set the burst length based on the USB speed that you detect in the firmware. As you know the descriptors for Super speed and USB2.0 are different. So it should not be any issue in using burst.

   

Thanks,

   

sai krishna.

0 Likes
Anonymous
Not applicable

Thank you very much.

   

In USBBulkSourceSink, burstLen of ep config is set as

   

"epCfg.burstLen = (usbSpeed == CY_U3P_SUPER_SPEED) ? (CY_FX_EP_BURST_LENGTH) : 1;".

   

So, I thought burst lengh more one is not appliable for USB 2.0.

0 Likes