USB superspeed peripherals Forum Discussions
In the slavefifosync example code, 2 endpoints are initialized.The device is enumerated as this:
I want to know how to add another endpoint to the tree. Can anybody provide some examples about endpoint operation or just give me an example with 3 or 4 endpoints.So I can compare the initialization code and the discriptor between them.Show Less
I am trying to implement a custom I2C boot using the second stage boot-loader. I am looking to address a failure case wherein the EEPROM firmware needs an update or is corrupted. This firmware now needs to be updated using the second stage boot-loader. I could jump to the second stage boot-loader using the CyU3PJumpBackToBooter() API but I need to know how I could access the I2C EEPROM so that I can burn my new firmware image over the USB interface.
Hi everyone. I've just joined on a new project and they have tasked me with implementing a USB 3.0 data stream on an FPGA. I'm looking to be able to simply stream data created by the FPGA unit through the FX3 chip they've chosen for this task. I'm specifically using the CYUSB3KIT-003 EZ-USB FX3. I'm having difficulty finding the proper resources to begin this so if anyone would be willing to point me in the right way I would be most appreciative.
If it's at all relevant, I'm using Vivado for programming the FPGA, which is a Xilinx Nexys Video.Show Less
I hope this message finds you well!
We have a custom board with FX3 USB SuperSpeed controller on it. We clock it with external 19.2MHz clock and use it in USB Boot mode (PMODE[2:0] = F11). Also, there is a JTAG connector on the board where we connect J-Link Base Segger debugger. We are using latest J-Link drivers (J-Link GDB Server V6.60d).
Eclipse-based EZ-USB Suite (version 1.3.4) is used as firmware development environment for FX3. Our firmware starting point is AN75779 with multi-thread ThreadX RTOS.
I followed instructions from EzUsbSuite_UG.pdf document on how to set-up Eclipse project and debug it via JTAG.
However, when I resume debugging right after initial breakpoint here is what I get:
Reading 64 bytes @ address 0x10001FC0
Reading 72 bytes @ address 0x00000000
Reading 72 bytes @ address 0x00000000
Reading 72 bytes @ address 0x400061C8
Starting target CPU...
ERROR: Bad JTAG communication: Write to IR: Expected 0x1, got 0x0 (TAP Command : 2) @ Off 0x5.
According to some threads from this forum (link), this error occurs with the FX3 family during JTAG debugging using the Segger J-Link. This is due to change in FX3 CPU frequency during runtime. This is also suggested on the page 20 of the Cypress ES-USB FX3 SDK release note document. I tried what they suggest (adding some commands to the Startup tab of Debug Configurations) but with no success!
Some other threads (e.g. here) suggest setting breakpoints at application define function (CyFxApplicationDefine()) as well as UVCAppThread_Entry() function. Although it is not quite clear how to debug after setting above breakpoints, I tried to debug with Step Over (F6) button. After successfully pressing a button a few times I get again the same above error!
Am I missing something here?
Some threads (e.g. this) say it is complicated to debug AN75779 firmware due to the presence of multi-thread RTOS. Is that true?
Is there any known issue with debugging FX3 via Segger J-Link? From this thread on Segger forum (March 2019), it seems that the CYUSB3014 is currently not officially supported.
Also, to the best of my understanding, default debugging interface in AN75779 example is UART interface that is initialized with CyU3PDebugInit() function. After that, CyU3PDebugPrint () function is used to print debug messages. I did not touch that part thinking that UART and JTAG can co-exist together. Is that assumption correct or I need to initialize JTAG interface somehow in my code and disable UART? AFAIK, JTAG debugging interface is not initialized in AN75779.
Is there any counterpart of the CyU3PDebugPrint () function that will allow me to print debug messages in JTAG mode?
Thank you very much, guys, for your time and efforts. It is really appreciated!
I'm running an FX3 interface in Bulk mode with a Sony IMX304 cmos imager, but periodically get data error crashes. I find that this gets worse as the FX3 chip temperature drops - it's typically good at an ambient of above about 30C, but very bad as it approaches 0C . The chip is an industrial spec. version, so I'm surprised that it is so temperature sensitive. Does anyone have a suggestion about improving this result?
GFIP II of FX3 runs at 100MHz with 32-bit data lines.
For each read, it will use the status below to check whether the data is received.
bRead = mDevice.BulkInEndPt.XferData(ref data, ref length, PacketMode);
Sometimes, all zeros are in the buffer even though bRead returns true and XrefData returns 16B length, which the correct transferred data length.
May I know what are the possible reasons for the data loss ? Thanks.
When the CYUSB3Kit-003 is plugged in with J4 installed, nothing appears in control center.
The kit does appear with the default demo streamer example when J4 is removed.
Control center is version 1.2.3
The PC is running Win7 home premium SP1. Are there known issues with this version?
Any assistance is greatly appreciated.Show Less
I intend to interface a camera with 16-bit grayscale video over USB UVC using the FX3. As per AN75779, the chip supports YUY2 where grayscale is only 8-bit. Can i use the FX3 to transfer 16-bit grayscale over UVC?Show Less
Here is my understanding of which errata corresponds to the three "2.2 Unexpected Connection Failures" items of TroubleShooting Guide.
Please tell me if it is correct or not.
>o The USB driver in the FX3 SDK monitors the number of USB link errors that are
>detected by the hardware; and causes a re enumeration when the number of errors
>crosses a threshold value (about 64 errors) within a 1 second p eriod. This code is
>not expected to come into play on a functional link, because there will be not more
>than one or two errors per second happening. If the device is re enumerating, it is
>likely that there is a bad USB link due to bad interconnect cables o r traces.
➡ Not equivalent to any errata.
＞o Another reason for USB 3.0 connection errors is link errors that happen around link
＞power state transitions. The best option to avoid such problems is to prevent USB
＞3.0 link state transitions, by having the FX3 device systematically reject any l ow
＞o It is recommended to disable the low power mode transitions by calling
＞CyU3PUsbLPMDisable() API when the data transfers are active because there may
＞be cases where the host performs very fast U1 Entry/Exit (Entry to Exit duration < 5
＞µs) and the firmware is not capable of responding to such fast low power mode
＞The FX3 device can be placed in this mode by making use of the
＞CyU3PUsbLPMDisable() API. Please note that using this API can also help
＞improve the USB data transfer per formance because of increased link efficiency.
➡ The above two items correspond to errata No. 7.