USB superspeed peripherals Forum Discussions
Hello,
i wanted to send .elf file of fx3(boot file) from usb to fx3 by creating manual in channel and send the same file to zynq through spi communication from fx3 (without storing in fx3, just passing .elf file from usb->fx3->zynq ).
is it possible?
how can i do this?what are the modification/logic should i implement regarding this case in both control centre and fx3 firmawre?
thank you.
Show LessI have been using Cypress EZ USB Suite with CYUSB3014 and a J-link debugger for years without any major problems.
But recently I upgraded the tool to FX3 SDK v1.3.4, after this I can't break the execution or set any breakpoints after the execution has started.
If I press the suspend button, the button gets disabled but nothing else. I have to press stop in the console window to be able to restart the execution.
I'm not sure if this problem appeared immediately after the upgrade, but I think so.
Are there anyone that recognize this and have a solution?
BR / Joakim
Show LessHi,
We have been working on a CX3 based camera with USB Type-B connector. This will be connected to the host through a USB Type-B to Type-A cable. When connected to host’s USB 3.0 port, during USB enumeration we are getting a CY_U3P_USB_EVENT_CONNECT event with the connection speed as SUPER SPEED.
After this we are getting the CY_U3P_USB_EVENT_SS_COMP_ENTRY and CY_U3P_USB_EVENT_SS_COMP_EXIT USB events. Followed by the CY_U3P_USB_EVENT_RESET and CY_U3P_USB_EVENT_SUSPEND.
In the event of above transactions we again get the CY_U3P_USB_EVENT_CONNECT event with the connection speed as HIGH SPEED and continues to work as USB 2.0 device.
Can anyone explain why there is a change in USB speed after Super speed compliance entry and exit?
In some scenarios after receiving the CY_U3P_USB_EVENT_SS_COMP_ENTRY event , further we are not receiving any USB event.
What will be the reason for this behaviour ??
Thanks in advance
Regards,
Indumathi
Show LessHi Cypress engineer,
I'm going to develope uvc camera based on AN75779 using new sensor, because some reason, We need to use usb2.0 port .
I Check it working fine with orign sensor size 640X480,
when I customer sensor size to 1280X1024, it is not working on the e-CAMView. But it is working on VirtualDub-1.10.4-AMD64.
Can you please help me check whether missing some midifications?
I also attached my latest entire project source file.
Regards,
Martin
Show LessHello,
I am evaluating FX3 for a new device we are developing. Our device is battery powered so low power mode is crucial.
I want a simple wake-up on GPIO interrupt. The datasheet (page 11) has a section describing the sleep modes and the exit methods.
The screenshot below shows the Standby Mode (L3) which I am interested in. In the exit methods (right most column) there is no mention for GPIO interrupts.
The technical reference manual (page 277) for the FX3 states that GPIO[44,47,34] can wake-up the device from standby mode.
I just want to make sure that the above mentioned GPIOs can indeed wake-up the device from standby mode. Or I am missing something ?
If that is the case then I think the datasheet is misguiding a little. It should either enumerate all the exit methods or state that more methods are shown in the Technical manual.
Thanks,
Show LessIt's based on the SuperSpeed explorer kit. Anyone have the energy to give it a once over? It's open source, free for anyone to use.
https://github.com/magnusjjj/basefx3kicad/blob/master/fx3kicad/firstschematic.pdf
Show LessHi Guys,
I have created a uvc project for cx3 using normal usb3.0 connector, It works fine.
Then I changed to type c connector, the reference schematic as bellow
and added the following code to select mux
/* Check the enumeration MuxControl_GPIO to High */
apiRetStatus = CyU3PConnectState(CyTrue, CyTrue);
if(CyU3PUsbGetSpeed() != CY_U3P_SUPER_SPEED)
{
apiRetStatus = CyU3PConnectState(CyFalse, CyFalse);
CyU3PDebugPrint(4, "First attempt failed = %d\n", apiRetStatus);
/* Check in other orientation */
CyU3PGpioSetValue(0, CyFalse);
apiRetStatus = CyU3PUsbControlUsb2Support (CyTrue);
apiRetStatus = CyU3PConnectState(CyTrue, CyTrue);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint(4, "USB Connect failed, Error code = %d\n", apiRetStatus);
}
}
the result is that it only works for one side, the other side is black window( both usb 3.0 detected)
I noticed that the mux pins 13 and 12 are swapped, and also pins 15 and 14 are swapped on the schematic.
is that the reason it only work for one side?
Show LessThere are some persons over cypress forum which close the thread. I don't know why the moderator allows them.
I would like to reinvoke this post,
FX3 Interrupt Endpoint + Custom Linux Driver weird behaviors
Recently I came across this problem once again and after debugging carefully I found two major points.
1) The fast interrupt which is working fine with our custom Linux and Windows Device Driver, the driver can receive interrupt data on interrupt EP.
Here fast interrupt means, when I perform some activity on our hardware board to generate an interrupt, it produced within a couple of micro/mili seconds.
For example, FPGA+microcontroller subsystem on board, let say I2C/SPI peripheral attached to the microcontroller and I need to configure that peripheral so for that, I need to write 1st on FPGA register and FPGA logic will start communication with Microcontroller and ultimately microcontroller will start to initiate I2C/SPI xfer. After complete such xfer, it will raise interrupt to FPGA and FPGA toggle GPIO to FX3 chip and put interrupt hex code toward interrupt Endpoint. such operation in my case takes few milliseconds.
2) The slow interrupt which is not working fine with our custom Linux and Windows Device Driver, the driver cannot receive interrupt data on interrupt EP.
Here slow interrupt means, when I perform some activity on our hardware board to generate an interrupt, it produced after a couple of seconds.
For example, If I have DDR4 memory attached on board and I need to scan entire memory to validate that memory is working fine or not. For that I have to configure register on board to start scanning, now custom FPGA logic will start scanning and after 7-8 seconds it will produce test done interrupt via GPIO toggle to FX3 chip.
To eliminate above problem I have two solution.
Each solution is to raise a question for me, I would expect an answer respectively from this forum.
1) Solution - 1 (Actaully workaround for me as of now):
If I fire below version of dummy vendor command before generating a slow interrupt(DDR4), I can receive interrupt on interrupt endpoint(DDR4 test done interrupt).
case 0xBF:
CyU3PDebugPrint(4,"Dummy 0xBF cmd received\r\n");
without request completion.
the interesting fact over here is that, if I fire below version,
case 0xBF:
CyU3PDebugPrint(4,"Dummy 0xBF cmd received\r\n");
CyU3PUsbAckSetup();
with request completion than on interrupt endpoint, the slow interrpt is not received.
The fast interrupt is working fine if I fire or not fire. Which is actually expected.
Q - What is the relationship between vendor command with no request completion and a slow interrupt is coming to host/PC?
2) Solution-2 (I believe this is an actaul solution):
If I change bInterval field of endpoint descriptor from 0x04 to 0x0B then all interrupt coming fine and I don't need above kind of workaround.
/* Endpoint descriptor for consumer EP2 (0x82) */
0x07, /* Descriptor size */
CY_U3P_USB_ENDPNT_DESCR, /* Endpoint descriptor type */
CY_FX_EP_2_IN, /* Endpoint address and description */
CY_U3P_USB_EP_INTR, /* Bulk endpoint type */
0x02,0x00, /* Max packet size = 32 bytes */
//0x04, OLD one which is not working fine for slow interrupt
0x0B, /* Working fine for both fast and slow interrupt ... Servicing interval for data transfers : 1 - Every micro-frame. */
/* Super speed endpoint companion descriptor for consumer EP2 (0x82) */
0x06, /* Descriptor size */
CY_U3P_SS_EP_COMPN_DESCR, /* SS endpoint companion descriptor type */
0, /* Max no. of packets in a burst(0-15) - 0: burst 1 packet at a time */
0x00, /* Max streams for bulk EP = 0 (No streams) */
0x02,0x00, /* Bytes per Service interval for the Int EP : 0 for bulk */
Now above solution raise question,
Q - Why the higher value of polling interval working fine for slow interrupt?
I know 0x04 bInterval value means 1ms as per USB 3.0 spec. formula (2^(bInterval -1) * 125uS)
and 0x0B bInterval value means 128ms.
Why it is affacting and all kind of interrupt I can received on interrupt pipe is mystery for me.
I hope this time I can get good answer!
Good Day.
Please, tell me
We are now using a video camera developed on the basis of a Denebola reference board (CX3 and OV5640).
But our quartz oscillator (RefClk source) has a frequency of 27 MHz, and not 19.2 MHz as in Denebola. Other quartz is analogue as Denebola.
Tell me. What exactly should be changed in the source code in order for everything to work correctly?
Mipi settings ? How ? What value ?
I2C, SPI settings ?
PLL ?
Many thanks.
Show Less