USB superspeed peripherals Forum Discussions
Hello,
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
Hi,
I have configured PMODE to SPI flash boot mode in our custom board. But it is falling back to USB boot mode.
I tried to ensure the state of PMODE pins as mentioned in this article. In my case, PMODE[2] is pull-down, PMODE[1] is floated and PMODE[0] is pull-up with 10K resistor. According to FX3 datasheet(Table 8), the voltage from Vcc*0.9 is interpreted as HIGH and voltage till Vcc*0.1 is interpreted as LOW. For PMODE[2] and PMODE[1] I got LOW(0) and Float(Z) respectively. But for PMODE[0] I'm getting float(Z) instead of getting HIGH(For SPI boot mode 0Z1).
Here I would like ask two things
1. Am I correctly interpreting HIGH and LOW voltages?
2. How do I make PMODE[0] state as 1 ?
Show LessHi,
I am following this to update firmware in SPI flash over HID interface. I want to make some changes in the source files of HID app to match my custom UVC device. I am unable to recompile it. I am using visual studio code to compile it but I am getting compile time errors like undefined reference to `HidD_GetInputReport' , undefined reference to `HidD_SetOutputReport' . Could you please tell me that which IDE tool I have to use to get it done.
Help is more appreciated.
Thank you,
Shafi.
Show Less