USB superspeed peripherals Forum Discussions
Hi,
I'm trying to change cyfxusbi2cregmode to read other I2C devices in the bus.
I made some changes and this is my current code:
I basically removed the hardcode EEPROM I2C address from the code and change to receive from the USB Bus.
But now I need to read a 32 bits address from that I2C device.
How Can I read 32-bit I2C byte address from a slave I2C device?
Thanks
Lucas
Show LessDear All,
For us write data from GPIF II to Storage Port(through FatFs) and USB simultaneously. Earlier we have done with MANUAL IN to write on storage port using Fatfs, now we need to push to USB too.
For this what I did was, created DMA MANUAL CHANNEL, here the consumer is CY_U3P_UIB_SOCKET_CONS_1 and registered a callback function, once DMA event notification hits the callback func, I tried to send an even from that callback, but am not able to receive the event in another thread and also no error. The call back hits up to 8 times for this I added a counter and displayed.
In DMA MANUAL CHANNEL configuration can we send the events or send Q to other threads. from call back function?
Show LessHello everyone!
For my project I need to connect the cx3 (through i2c) with two slaves: a camera and another sensor.
During the initialization of the slaves I'm using the i2c configured in transfer mode thanks to the API CyU3PMipicsiInitializeI2c(); I cannot do differently because I need to write single bytes in different registers and with DMA transfer I can only write multiple of 16 bytes.
My goal is to read the data from the second sensor through i2c configured in DMA mode once the UVC app starts (the dma channel is connected between i2c slave and endpoint). Here come the problems:
- Once the UVC app starts, from time to time I'm still sending i2c data in transfer mode towards the camera (for features such as the change of resolution) and reading control bytes from the cx3 mipi csi receiver slave (the one whose address is 0000111, according to the cx3 TRM, page 8 sec 1.5). Is it possible to separate the two modes of the i2c (transfer and DMA) or should I constantly change the settings with the CyU3PI2cSetConfig() API, ie turning on the Dma mode before reading from the sensor and then turning it off immediately after the reading?
- To trigger the i2c DMA reading from the second slave I'm using an interrupt line coming from the sensor and connected to a GPIO of the cx3. I've used two reference designs to create the firmware, these are cyfxgpioapp and cyfxusbi2cdmamode, which I've found in the serialif_exaples folder of the SDK. What I'm doing right now is to set the trigger on the gpio associated to the interrupt, activate a callback function associated to it and in here setting an event through the CyU3PEventSet() API.
- At this point, should I create a thread that handles the DMA transfer? Is a thread in the cx3 always running in "time slices"? (if I understood correctly the cx3 is single core).
- If I should use a thread, how could I estimate the allocated memory for CyU3PMemAlloc()?
- Why isn't it possible to use a peripheral directly in the callback function? This is what I understood from the cyfxgpioapp (line 119 of cyfxgpioapp.c regarding the debug print).
I thank you in advance for your answer!
Regards,
Costantino
Show LessHi all,
I have FX3 firmware that combines AN75779 (modified to receive 32-bit GPIF data) and USB-to-serial. I'm using SuperSpeedKit connected to Zeadboard which sends 120fps 800x480 test pattern. I made all required changes in descriptors and both parts seems to work well except that UVC stream stucks after several seconds of video capture.
By "stucks" I mean that:
1) threads stop running so that I don't see "UVC: Completed ..." message anymore
2) If I use on-board debugger, debug session also stops responding at all
3) Capture software (Virtualdub/VLC) stop responding as no USB request are processed
Couple additional notes:
1) GPIF SM seems to continue to work because I toggle GPIO from GPIF callback and I can see it in scope.
2) ARM error handlers are not called (put there GPIO toggle also) so it's not CPU issue or memory leak
3) Suspend event not issued for no reason. I do LPM disable on UVC start and enable on UVC stop and return true in LPM CB exactly as in AN75779
Will greatly appreciate for any help
Show LessHi,
we have finished CDC and UVC with FX3 in Windows OS successfully. Now we want use the same product in Linux OS, but when we input “dmesg” in command terminal, it occur as below, the CDC cannot be recognized.
The linux version is below,
We have use "make menuconfig", andt select "Device Driver" "USB support" "USB Modem (CDC ACM) support",it is showed below
What should I do if we want use FX3+CDC in Linux OS? Is there any driver that should be installed?
Show LessSir, I want to make high-speed USB communication to a PC of my project to be implemented on an FPGA board (presently using cyclone IV based Deo nano from Terrasic, later dedicated FPGA board to be designed). The FPGA acquires data from an imaging sensor via a 16 bit ADC, 16MHz rate.
My requirement is a FullHD frame rate of at least 50 frames per second, 16-bit grayscale. There are few sensor control signal options required to be implemented in the PC software to be developed using Labview 2019 (64bit). Data to be acquired by the LabVIEW program and analyzed.
Please help me select the model from Cypress which also has ready supported drivers and tools. It should be compatible with Labview programming.
I am a beginner. Please give a summary of the points to consider. I shall make reference to that and work on it.
Thank you
Show LessHi, there!
I've tried demo of <1.3\firmware\serialif_examples\cyfxusbspiregmode> with pmode[2:0]=z11 and download img to spi flash by "usb control center". it looks like programming very fast and shows "succeeded". however, with pmode[2:0]=0z1 , reset the board and usb control center shows BcdUSB = 02 00.
does anyone can tell me which part of code should i modify and/or show me a demo uboot img for s25fs128s? thanks.
Show LessHello Cypress!
I have a weird behavior with fx3 and emmc, when using SIB S0 with a 32gb emmc in manual, I am able to interact with it fine in Windows as I added the extra callback required from making the connection auto to manual as is given in the samples.
I now realized that if the drive is formatted by Windows, it simply fails to format and stops been reachable, I don't see why that is happening, is it because an output that is expected from endpoint 0? If so, why does it work in auto mode but not manual? I can not seem to reach the drive anymore, but I can see that the drive successfully partitions and deletes etc. So I know the drive is not corrupted, but something fails somewhere? Any ideas would be greatly appreciated! It might be a setting on the emmc itself, for example it received some kind of lock command? I do not know....
Thanks!
Fujimi
Show LessI'm dusting off an old design, and it includes a CYUSB3014. Does this device need to be programmed? Also, I'm having trouble sourcing this device. Is there a replacement?
Show LessDear all,
In my application, I would like to write data from GPIF II to Storage Port and USB. I saw that to do a multicast, I have to choose a manual DMA which is much slower. As well, I would like to save as much as CPU power in order to do some other processing.
So would it be possible to make 2 auto DMA channels, one from GPIF II to Storage Port and another one from GPIF II (same socket) to USB ?
Best,
Christian
Show Less