How to send a large data package, more than 64KB, to PC host

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

cross mob
Anonymous
Not applicable

HI, there

I'm working on the USB3 vision project. According to the command from PC, I had to send a 64KB package or 256KB or 1MB package to the PC, depend on different software.

As we know that the DMA buffer size in FX3 could be 65535 as maximum, and the ram only about 256KB available for data.

How I could implement the function meet above requests?

Best regards.

0 Likes
1 Solution
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hello zhijian wu,

- When you transfer 64KB to the Host (when requested) on the USB lines the data wouldn't go as single 64KB chunk (you might already know this, Max packet size is 1KB for bulk endpoint).

- As long as data is available to FX3 (from the camera/FPGA), and as we commit the data to the USB in the firmware, the data transfer would be continuous.

You need not have 1MB RAM to perform what you require.

- The Host would request 64KB/256KB/1MB and once it gets this amount from FX3, the API in the Host would return data to the application thereby ending that particular transfer.

Hope it is clear. Let me know for any doubts.

And you can also try this to see what I have mentioned: Please load bulksrcsink example which is in FX3 SDK. After device re-enumerates, open control center and request 64KB of data on the IN endpoint.

Regards,

Hemanth

Hemanth

View solution in original post

0 Likes
2 Replies
Hemanth
Moderator
Moderator
Moderator
First like given First question asked 750 replies posted

Hello zhijian wu,

- When you transfer 64KB to the Host (when requested) on the USB lines the data wouldn't go as single 64KB chunk (you might already know this, Max packet size is 1KB for bulk endpoint).

- As long as data is available to FX3 (from the camera/FPGA), and as we commit the data to the USB in the firmware, the data transfer would be continuous.

You need not have 1MB RAM to perform what you require.

- The Host would request 64KB/256KB/1MB and once it gets this amount from FX3, the API in the Host would return data to the application thereby ending that particular transfer.

Hope it is clear. Let me know for any doubts.

And you can also try this to see what I have mentioned: Please load bulksrcsink example which is in FX3 SDK. After device re-enumerates, open control center and request 64KB of data on the IN endpoint.

Regards,

Hemanth

Hemanth
0 Likes
Anonymous
Not applicable

Hi,Hemanth

Thanks for your conformation.  It just like what I thought it should be.

0 Likes