FX3: DMA type AUTO_SIGNAL works but AUTO does not

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

cross mob
Anonymous
Not applicable
        In a project we have two bi-directional bulk channels, one for data and one for control. The data channel is connected to an FPGA and the control channel is terminated in the FX3. Typically we use the data channel to do async transfers to the host computer in superspeed. If we configure the DMA channels to the FPGA as AUTO all works fine if we are connected to a host computer with a short (< 1m) USB cable but when we use longer cables it works for a period of time but suffers timeouts probably due to retransmits on the bus. We probably have issues with signal integrity on the USB side but what is puzzling us is that if we configure our DMA channel to the USB device as AUTO_SIGNAL it all works great with all kind of USB cables. The problem with this setup is that our CPU gets loaded with interrupt calls and we have very little time to handle our control channel. During our async transfers we do not send anything on the control channel. It appears that USB retransmits only works with the AUTO_SIGNAL DMA channel type, how can this be the case? Our working setup: Two bulk consumer EP Two bulk producer EP DMA channel config #1 (AUTO): size 1024/512/64 depending on SS/HS/FS count 4 prodSckId CY_U3P_UIB_SOCKET_PROD_1 consSckId CY_U3P_PIB_SOCKET_2 DMA channel config #2 (AUTO_SIGNAL): size 1024/512/64 depending on SS/HS/FS count 4 prodSckId CY_U3P_PIB_SOCKET_0 consSckId CY_U3P_UIB_SOCKET_CONS_1 notification 0 DMA channel config #3 (MANUAL_IN): size 1024/512/64 depending on SS/HS/FS count 4 prodSckId CY_U3P_UIB_SOCKET_PROD_2 consSckId CY_U3P_CPU_SOCKET_CONS DMA channel config #4 (MANUAL_OUT): size 1024/512/64 depending on SS/HS/FS count 4 prodSckId CY_U3P_CPU_SOCKET_PROD consSckId CY_U3P_UIB_SOCKET_CONS_2 SDK 1.3.3   
0 Likes
1 Reply
Anonymous
Not applicable

Hi,

   

When you are observing data transfer issues with AUTO DMA channel,

   

1. Could you probe the GPIF flags (Eg: DMA Ready flag) and check if the flag is stuck at a particular logic.

   

2. If you have a USB protocol analyzer such as Teledyne Lecroy, take a USB trace and check if FX3 is sending NRDY packets.

   

Could you confirm if you are using a certified USB cable.

   

Use BulkLoop.exe Host Application provided in FX3 SDK and test with example projects for AUTO and AUTO_SIGNAL DMA channels :cyfxbulklpauto and cyfxbulklpautosig​ (C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\dma_examples) to check if you are observing any data transfer issues.

0 Likes