USB superspeed peripherals Forum Discussions
Hello,
We are using the CYUSB3014 and FX3 SDK v.1.2 UsbSpiDmaMode.
It looks the SPI Tx and Rx are work well but the API function CyU3PDmaChannelWaitForCompletion(&glSpiTxHandle, CY_FX_USB_SPI_TIMEOUT) returns CY_U3P_ERROR_TIMEOUT.
The SSN line can make High(CyU3PSpiSetSsnLine(CyTrue)) after timeout (it should be done immediately when SPI data Tx/Rx complete).
Timeout occurs after a certain period of time after SPI data Tx/Rx is completed.
So, SSN line can not make high (CyU3PSpiSetSsnLine(CyTrue)) after time out, when the SPI data Tx/Rx is finished, it should be done immediately.
What do you think the cause of this problem?
Thank you so much for your help in advance.
Show Less
I purchased a couple of the following FX3 boards:
https://www.infineon.com/cms/en/product/evaluation-boards/cyusb3kit-003/
And I'm trying to set it up for Windows XP (don't ask, legacy system test purposes). The whole software stack installed flawlessly, but the driver is giving more trouble.
When I try to install the driver from the SDK, the installation fails because the "cyusb3.inf" points to a "WdfCoInstaller01011.dll" file, while there's only a "WdfCoInstaller01009.dll" available in the driver/bin/wxp/x86 path of the SDK.
Changing the references/names manually on the cyusb3.inf does not help as it keeps asking for the "WdfCoInstaller01011.dll" variant regardless. Could you please advice on how to install those drivers on a Windows XP machine?
Thanks in advance
Show LessHello,
I'm using the UsbSpiDmaMode example to test on SPI flash, I have gone through the code, and for writing and reading the limit for the length I found is, the length should be multiple of 256 and less than 4096, but what I'm trying to do is, I'm trying to write/read 250KB at once, but while doing this I got this error:
CONTROL IN transfer
CONTROL IN transfer failed with Error Code:997
how can I write 250KB data at once to SPI flash in the Denebola kit?
Thanks.
Show Less
I change MouseDemo into KeyBoard, use 4 GPIO to simulate KeyBoard input, compile the project, download to FX3, connect to PC, PC device manager shows an exclamation mark, can you help me to have a look at my project.
Attached is my project.
Show LessWe have a product of UVC by used CX3. It's working fine on Win 10, but It's can't work on Win 7(64-bit).
It display "other device" on the device manager and display a exclamation mark.
Have any CX3 driver of UVC for Win 7?
Hi,
Will the custom cx3 board(without any bootloader code) act as a "Cypress Fx3 USB Bootloader" in SPI boot mode?
My custom board is set in SPI boot mode(fixed), but still it is showing as a USB bootloader in Control center? And I'm sure that my board doesn't contain any bootloader code in it. Isn't this a strange behavior?
According to Denebola, if we set it in SPI boot mode it shouldn't show as bootloader.
May I know why my custom board is behaving like this?
Thank you,
Shafi.
Show LessHi all,
Workspace keeps important settings - debugging settings for example. So, it has to be kept under CMS - GIT or Bitbucket for example. On the other hand it keeps absolute passes (like <item value="C:\dev\repos\fx3_video_bridge\FX3_FW"/>) to the project that I am working with.
Is it possible to substitute absolute passes with environment variables, so that user that clones project repository from Bitbucket can do it anywhere on the disk?
Thank you in advance..
Show LessHi team,
I am trying to ensure the PMODE pin states in bootloader stage. According to FX3 datasheet I am interpreting voltage above Vcc*0.9 as HIGH and interpreting voltage below Vcc*0.1 as LOW . But how can I interpret voltage between Vcc*0.9 and Vcc*0.1?
For example, Vcc= 5v
So, from Vcc*0.9 = 4.5v I am interpreting it as HIGH
Till Vcc*0.1 = 0.5v I am interpreting it as LOW.
But how can I interpret voltage between 0.5v and 4.5v ?
Could please tell me how do I ensure PMODE states by this method?
Show LessHello,
I have followed several guides/documents/posts in an attempt to program the FX3 device with the USBVIdeoClassBulk Web Cam application with an updated firmware library located in FX3_SDK_1_3_1_SRC/sdk/firmware/src/fxapp. I am successful in writing the USBVideoClassBulk application to the FX3 device. I see the device registers in Device Manager under Cameras as, "FX3". I then use Wireshark to monitor the USB traffic and note the Device Descriptor:
The code that is responsible for populating the Device Descriptor is found FX3_SDK_1_3_1_SRC/sdk/firmware/src/fxapp/cyfxmain.
I used fx3_firmware_read document to build the FX3 firmware libraries found here: https://community.cypress.com/gfawx74859/attachments/gfawx74859/usb-superspeed-peripherals/5750/1/FX3FirmwareSourceUserGuide.pdf
With the libraries built, I used this post to correctly link the .a files noted in the FX3FirmwareSourceUserGuide to my USBVideoClassBulk project within eclipse https://community.infineon.com/t5/USB-superspeed-peripherals/FX3-Error-building-library-files/m-p/64449
Finally, I made sure to go to Properties->Project References->sdk to include the sdk folder structure within my USBVideoClassBulk project within Eclipse. I followed this post to correctly link the sdk folder structure to my project .
https://github.com/nickdademo/cypress-fx3-sdk-linux - Note at the very bottom where the post tells us to link our project as follows:
with all the steps above, I made minor changes to the fxapp's cyfxmain.c to change the device descriptor of 0x04b4 (as a test) to 0x00 0x00. I have made other heavy handed changes to the file to ensure I would be able to spot the changes such as changing all device descriptors within the file to all 0x00. Eclipse will even note when I intentionally place a syntax error in the cyfxmain.c in which my USBVideoClassBulk application will fail to compile as it is correctly linked to the fxapp src library application. So, I am sure the project is correctly linked and building properly. After making my edits to the cyfxmain.c, compiling the project together, ensuring that project points to the correct location with the newly compiled .a libarires, I use the elf2img application and provide the following command:
./elf2img -i USBVideoClassBulk.elf -o USBVideoClassBulk.img
I then use the cyusb_linux application to program my new .img to the fx3. When I do, the device then enumerates and is registered as "FX3" within Device Manager. I then check the Device Descriptors within Wireshark to see none of my changes to the Device Descriptors.
I am not sure what I am doing incorrectly in the process above? I have tried many times to update the cyfxmain.c, ensured I am getting new .a libraries after compiling using the following command "make CYCONFIG=fx3_debug" I have ensured to clean the project multiple times, and have reprogramed my fx3 device many many times in attempt to see updated device descriptors.
I see there is an cyfxapp.elf within eclipse after I compile the library:
Do I need to somehow program both my USBVideoClassBulk.img and convert this cyfxapp.elf into a cyfxapp.img and also program it to the FX3 device? I have tried this and it simply overwrites the first img.
I am unable to program the USBVideoClassBulk application with updated firmware libraries in sdk/firmware/src/fxp/cyfxmain.
Any help is greatly appreciated.
Show Less
Hello.
After firmware update, open fails.
What is the proper procedure?
char p[] = "a.img";
CCyFX3Device* Fx = new CCyFX3Device();
if (Fx->IsBootLoaderRunning())
{
cout << "IsBootLoaderRunning " << endl;
if ( Fx->DownloadFw(p, RAM) == 0)
cout << "FW Success !! \n" << endl;
}
CCyUSBDevice* USBDevice = new CCyUSBDevice(NULL);
int count = USBDevice->DeviceCount();
cout << hex << "Device Count = 0x" << count << endl;
if (USBDevice->Open(0) == false)
cout << "Open Fail \n" << endl; // <---------------fail....
cout << "Finished. \n" << endl;
Show Less