USB superspeed peripherals Forum Discussions
I'm trying to understand the difference between dedicated and current thread flags as it relates to the synchronous slave FIFO read/write timing. AN65974 says that for a current thread flag there's a two cycle latency. It doesn't specify read or write although a two cycle latency is consistent with the synchronous slave read timing diagram.
If I use a current thread flag, do I incur an extra two cycle latency in addition to the two cycle latency shown for the dedicated thread flag? If not whats the timing difference between the two.
Show LessHi,
if I set the FX3 to use 32bit GPIF: can I use the I2S-pins [GPIO50...52, 57] as simple or complex GPIO's?
The FX3's pin-decription doesn't show this clearly:
GPIO+SPI | GPIO+UART | GPIO only | GPIF II - 32 (FX3)+UART+I2S | GPIO+I2S | UART+SPI+I2S | ||||
D1 | VIO3 | I/O | GPIO[50] | GPIO | GPIO | GPIO | I2S_CLK | GPIO | I2S_CLK |
D2 | VIO3 | I/O | GPIO[51] | GPIO | GPIO | GPIO | I2S_SD | GPIO | I2S_SD |
D3 | VIO3 | I/O | GPIO[52] | GPIO | GPIO | GPIO | I2S_WS | GPIO | I2S_WS |
C1 | VIO4 | I/O | GPIO[54] | SPI_SSN | UART_CTS | GPIO | UART_CTS | I2S_CLK | SPI_SSN |
C2 | VIO4 | I/O | GPIO[55] | SPI_MISO | UART_TX | GPIO | UART_TX | I2S_SD | SPI_MISO |
D5 | VIO4 | I/O | GPIO[56] | SPI_MOSI | UART_RX | GPIO | UART_RX | I2S_WS | SPI_MOSI |
C4 | VIO4 | I/O | GPIO[57] | GPIO | GPIO | GPIO | I2S_MCLK | I2S_MCLK | I2S_MCLK |
Regards!
Show LessUsing SDK 1.2 I have modified the SlaveFifoSync5Bit example to use 2bit address interface with 4 Bulk endpoints, 2 IN, 2 OUT using four DMA threads
In file SlaveFifoSync5Bit/cyfxslfifosync.h I have altered the define statements to:
(In this configuration the code runs correctly and enumerates).
#define CY_FX_EP_PRODUCER_1 0x02 /* EP 2 OUT */
#define CY_FX_EP_PRODUCER_2 0x04 /* EP 4 OUT */
#define CY_FX_EP_CONSUMER_1 0x88 /* EP 8 IN */
#define CY_FX_EP_CONSUMER_2 0x82 /* EP 2 IN */
However if I use the following define statement, FX3 returns DMAChannelCreateFailed, error code 64. I can set CY_FX_EP_CONSUMER_2 to different endpoints other than 6 and it will work correctly. Why does it not work with EP6?
#define CY_FX_EP_CONSUMER_2 0x86 /* EP 6 IN */
Show LessWhen changing from SDK 1.1 to SDK 1.2 my device some time enumerattes under a default name (Windows 7). It have always on Windows 7, but never worked on Windows XP.
Poul-Erik.
Show LessHi, i can't get the CY_U3P_DMA_CB_CONS_EVENT working on a P2U or U2U channel's callback, we have a new board which has a P2U channel, all data received (by host vis USB) correctly, the callback gets the PROD_EVENT as expected, but not the CONS_EVENT... i'm using the
dmaCfg.notification = (CY_U3P_DMA_CB_PROD_EVENT|CY_U3P_DMA_CB_CONS_EVENT);
for the callback notification type.
And i test on the DVK with the USBBulkLoopAutoSignal sample code (and the "BulkLoop.exe" on host), it has an auto-signal U2U channel, and it had the same result.
The modifications i made on the sample code are:
*. When create the channel , i use
dmaCfg.notification = (CY_U3P_DMA_CB_PROD_EVENT|CY_U3P_DMA_CB_CONS_EVENT);
*. In the Channel callback, i add
if (type == CY_U3P_DMA_CB_CONS_EVENT) glConsEventCount++; // glConsEventCount is initialized to 0 in startup.
*. And in the thread loop, i print the glConsEventCount as:
CyU3PDebugPrint( 6, "Data tracker: Number of buffer received: %d , %d\n", glDMARxCount, glConsEventCount );
The glConsEventCount is always ZERO when the "BulkLoop" is running and data are looped. (while the glDMARxCount is increased as expected).
I did some more tries, e.g. using CY_U3P_DMA_CB_CONS_EVENT only (no CY_U3P_DMA_CB_PROD_EVENT), OR
using CY_U3P_DMA_MODE_BUFFER instead of CY_U3P_DMA_MODE_BYTE....etc. but all had the same results.
Is there any more cofiguration needed to make the CONS_EVENT working on an Auto_Signal channel?
Thanks!
Show LessWhen CYUSB3014 is configured host mode ,USB flash drives can''t enumerates! There is always timeout when the enumeration is go to read the full device descriptor.the firware code is supplied by FX3 SDK.if I try more times ,the USB flash drives's fireware will be damaged and plugged into computer,there is a information "can't find disc drive"when double clike it.
However, it worked when CYUSB3014 is configured host mode enumerate USB flash drives few months ago,and the fireware code is same in FX3 SDK. how can I solve the problem?
Show LessWith usb 3.0 mode . dmaSlFifoConfig.size = size * 16; it doesn't work ,the size is 1024 .But if change to dmaSlFifoConfig.size = size/2; it works but the speed only 8M around .how can i solve the problem ,I am hurry it .
develop with sdk v1.2 .
/* Create a DMA MANUAL Channel between P-port producer socket and U-port consumer socket */
//dmaSlFifoConfig.size = size * 16;
dmaSlFifoConfig.size = size;
dmaSlFifoConfig.count = CY_FX_SLFIFO_DMA_BUF_COUNT;
dmaSlFifoConfig.prodSckId = (CyU3PDmaSocketId_t)(CY_FX_EP_PRODUCER_PPORT_SOCKET);
dmaSlFifoConfig.consSckId = (CyU3PDmaSocketId_t)(CY_U3P_UIB_SOCKET_CONS_0 | CY_FX_EP_CONSUMER_USB_SOCKET);
dmaSlFifoConfig.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaSlFifoConfig.notification = 0;//CY_U3P_DMA_CB_PROD_EVENT;
// dmaSlFifoConfig.cb = CyFxSlFifoPtoUDmaCallback
dmaSlFifoConfig.cb = NULL;
dmaSlFifoConfig.prodHeader = 0;
dmaSlFifoConfig.prodFooter = 0;
dmaSlFifoConfig.consHeader = 0;
dmaSlFifoConfig.prodAvailCount = 0;
/* Create the channel */
apiRetStatus = CyU3PDmaChannelCreate (&glChHandleSlFifoPtoU,
CY_U3P_DMA_TYPE_AUTO,
&dmaSlFifoConfig);
Show LessFX3 SDK v1.2 has now been released. This can be downloaded from https://secure.cypress.com/?rID=57990.
Thanks,
Anup
Show LessHi,
AN73609 EZ-USB FX2LP/FX3 Developing Bulk-Loop Example refers to an archive file BulkLoopApp-1.0.tar.gz but I cannot find it anywhere. It is not in the latest Linux based SDK. Any help would be appreciated. Thanks
Show Less