USB superspeed peripherals Forum Discussions
Hello,
I created a CX3 project to stream video from a MIPI image sensor to a Windows 10 PC using UVC.
The board mounting the sensor and the CX3 is a custom design.
I tried to verify the streaming using Amcap: the streaming works well, but only if I use a USB3.0 hub between the CX3 cable and the USB SS port of the PC.
If I connect directly the CX3 cable to the port there is a strange behaviour: I still can select the CX3-UVC device from the available devices in Amcap, but as soon as I make the sensor start streaming (using a button on the PCB) the streaming in Amcap starts and then fails after a few frames (giving the typical sound of a usb device disconnected).
After this, the CX3-UVC device is not re-enumerated I think, the device is still visible in device manager and in the Amcap available devices: if I select it again in Amcap and repeat the procedure the behaviour is the same as before.
Here is how I obtained the firmware:
I started from a blank project (File->New->Project->Cypress->CX3 Configuration Project), then I modified the cx3config.cycx file according to the sensor video specifications and I generated all the project files.
Then I wrote all the code needed to program our sensor, that is called from the main project file cycx3_uvc.c.
Inside cycx3_uvc.c I didn't change anything from the original file generated using cx3config.cycx.
Can you help me understand what is the issue?
I attach my cycx3_uvc.c file and uart logs obtained in both cases (with and without usb hub) in which I omitted all the initial configuration debug prints.
Thank you,
Riccardo
Show LessI am using CYUSB3014 board.
when i use SF_streamIN.img. it works 320MByte/s in streamer tool.
but when i compile source code. then compiled SlaveFifoSync.img file works 21MByte/s.
Other condition is all same. I don't know what is problem.
Is there any one can help me?
Show LessHello!
I'm playing with FX3 SuperSpeed DVK and stuck on PIB clocking. Could someone point me why CyU3PPibInit can't accept clkDiv greater than 32? How can I get for example 100 kHz GPIF peripheral clocking? I can't find in documentation any details except these:
typedef struct CyU3PPibClock_t
{
uint16_t clkDiv; /**< Divider value for the PIB clock. The min value is 2 and max value is 1024. */
CyBool_t isHalfDiv; /**< If set to true, adds 0.5 to the frequency divider value selected by clkDiv. */
CyBool_t isDllEnable; /**< Whether the DLL should be enabled or not. The DLL in the PIB block should
be enabled when implementing Asynchronous GPIF protocols, or Master mode
GPIF protocols. It should be left turned off when implementing synchronous
slave mode GPIF protocols. */
CyU3PSysClockSrc_t clkSrc; /**< The clock source to be used. */
} CyU3PPibClock_t;
The problem part of my code:
Show Lessvoid CyFxApplnInit (void)
{
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
CyU3PPibClock_t pibClock;
/* The problem is below! Program FREEZES after CyU3PPibInit if clkDiv is greater 32, or if clkSrc is CY_U3P_SYS_CLK_BY_XX. */
pibClock.clkDiv = 8; // 1024 is valid value but it is not work!
pibClock.clkSrc = CY_U3P_SYS_CLK;
pibClock.isHalfDiv = CyFalse;
pibClock.isDllEnable = CyTrue;
/* This runs PIB on 48 MHz (384 MHz SYS_CLK / 8 = 48 MHz), how can I get 100 kHz? */
apiRetStatus = CyU3PPibInit (CyTrue, &pibClock);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (CY_FX_DEBUG_PRIORITY, "P-port Initialization failed, Error Code=%d\r\n", apiRetStatus);
CyFxAppErrorHandler (apiRetStatus);
}
Good day, gentlemen and ladies. I have a problem with USB3 on CX3. I used CyU3PUsbInitEventLog and CyU3PUsbGetEventLogIndex to understand why USB 3 is being disabled and this is what I got:
0x6 CYU3P_USB_LOG_USB3_PHY_ON Indicates that the 3.0 PHY has been turned on
0x10 CYU3P_USB_LOG_USBSS_DISCONNECT Indicates that the USB 3.0 link has been disabled
0x4 CYU3P_USB_LOG_USB3_PHY_OFF Indicates that the 3.0 PHY has been turned off
0x5 CYU3P_USB_LOG_USB2_PHY_ON Indicates that the 2.0 PHY has been turned on
0x40 CYU3P_USB_LOG_USB2_SUSP Indicates that a USB 2.0 suspend condition has been detected
0x41 CYU3P_USB_LOG_USB2_RESET Indicates that a USB 2.0 bus reset has been detected
0x51 CYU3P_USB_LOG_USBSS_ENABLE Indicates that a USB 3.0 connection is being attempted again
0x42 CYU3P_USB_LOG_USB2_HSGRANT Indicates that the USB High-Speed handshake has been completed
0x10 CYU3P_USB_LOG_USBSS_DISCONNECT Indicates that the USB 3.0 link has been disabled
0x46 CYU3P_USB_LOG_USB2_SETCONF Indicates that USB configuration has been selected
0x40 CYU3P_USB_LOG_USB2_SUSP Indicates that a USB 2.0 suspend condition has been detected
0x41 CYU3P_USB_LOG_USB2_RESET Indicates that a USB 2.0 bus reset has been detected
0x51 CYU3P_USB_LOG_USBSS_ENABLE Indicates that a USB 3.0 connection is being attempted again
0x42 CYU3P_USB_LOG_USB2_HSGRANT Indicates that the USB High-Speed handshake has been completed
0x10 CYU3P_USB_LOG_USBSS_DISCONNECT Indicates that the USB 3.0 link has been disabled
0x46 CYU3P_USB_LOG_USB2_SETCONF Indicates that USB configuration has been selected
what can this be related to?
I use exactly the USB 3 Port since I have USB 3 devices and they connect to it normally
#ifdef UVC_APPLICATION
/* Standard Device Descriptor for USB 3 */
const uint8_t CyCx3USB30DeviceDscr[] =
{ 0x12, /* Descriptor size */
CY_U3P_USB_DEVICE_DESCR, /* Device descriptor type */
0x00, 0x03, /* USB 3.0 */
0xEF, /* Device class */
0x02, /* Device Sub-class */
0x01, /* Device protocol */
0x09, /* Maxpacket size for EP0 : 2^9 */
0xB4, 0x04, /* Vendor ID */
0xC3, 0x00, /* Product ID */
0x00, 0x00, /* Device release number */
0x01, /* Manufacture string index */
0x02, /* Product string index */
0x00, /* Serial number string index */
0x01 /* Number of configurations */
};
/* Standard Device Descriptor for USB 2 */
const uint8_t CyCx3USB20DeviceDscr[] =
{ 0x12, /* Descriptor size */
CY_U3P_USB_DEVICE_DESCR, /* Device descriptor type */
0x10, 0x02, /* USB 2.1 */
0xEF, /* Device class */
0x02, /* Device sub-class */
0x01, /* Device protocol */
0x40, /* Maxpacket size for EP0 : 64 bytes */
0xB4, 0x04, /* Vendor ID */
0xC3, 0x00, /* Product ID */
0x00, 0x00, /* Device release number */
0x01, /* Manufacture string index */
0x02, /* Product string index */
0x00, /* Serial number string index */
0x01 /* Number of configurations */
};
/* Binary Device Object Store (BOS) Descriptor */
const uint8_t CyCx3USBBOSDscr[] =
{ 0x05, /* Descriptor size */
CY_U3P_BOS_DESCR, /* Device descriptor type */
0x16, 0x00, /* Length of this descriptor and all sub descriptors */
0x02, /* Number of device capability descriptors */
/* USB 2.0 Extension */
0x07, /* Descriptor size */
CY_U3P_DEVICE_CAPB_DESCR, /* Device capability type descriptor */
CY_U3P_USB2_EXTN_CAPB_TYPE, /* USB 2.1 extension capability type */
0x02, 0x00, 0x00, 0x00, /* Supported device level features - LPM support */
/* SuperSpeed Device Capability */
0x0A, /* Descriptor size */
CY_U3P_DEVICE_CAPB_DESCR, /* Device capability type descriptor */
CY_U3P_SS_USB_CAPB_TYPE, /* SuperSpeed device capability type */
0x00, /* Supported device level features */
0x0C, 0x00,//0x0E, 0x00, /* Speeds supported by the device : SS, HS and FS */
0x02, /* Functionality support */
0x0A,//0x00, /* U1 device exit latency */
0xFF,0x07//0x00, 0x00 /* U2 device exit latency */
};
Show LessI have a Cypress device (EZ-USB FX3™ SuperSpeed USB 3.0 peripheral controller) and an android device. I want to connect them.
https://www.cypress.com/part/cyusb3014-bzxc
But I don't know how. Cypress SDK is available for this product?
I downloaded the “CyUSBSerial_SDK_Android_B73C_0”
https://www.cypress.com/documentation/software-and-drivers/usb-serial-software-development-kit
Can I use this?
Show LessHello,
I have met a strange test result when using FX3 as UVC camera.
After I connect the usb cable to PC,
first time I open software (e.g. win: amcap/vdm, ubuntu: guvc) to watch the images,
there will always be black image(no data).
And then I close the software and reopen it,
images will be shown normally.
And after the first time, the camera always goes fine.
But if I disconnect the cable and re-plug in it, I will get black image at the first time again.
I have tried to used Directshow library in Windows to debug.
And I confirmed when the first time using the camera, callback function will never be called, which means no data is received.
Has anyone ever met problem like this?
Thank you.
Show LessHi Cypress
We need two image to prevent fail update in CYUSB3014, But the 4Mbit / I2C EEPRM is Small amount in market , Can you recommend a 4Mbit / I2C component (part number) for us , Thank !!/
Show LessHi all,
First, my goal is a streamer application (non-uvc) which capable to stream RAW data.
The HW setup - I'm using the CYUSB3KIT-003 with the Aptina sensor (According to an75779).
About the firmware:
1. I follow this post FX3 / CX3 Firmware for Streaming RAW Image Data using Cypress Driver for non-uvc firmware.
2. I import the sensor.c and sensor.h from an75779 to be able to work with the Aptina sensor.
3. I use the streamer application from the SDK (The C# project)
Now, when I send vendor command 0x99 and run the streamer I see lots of 0x71 errors (screenshot is attached).
The DMA and GPIF configuration remains the same, right?
Also, I tried to follow KBA218830 but I don't see the point of this when I'm using non-uvc FW.
How can I solve this error?
Thanks!
Show Less您好!
请问下使用CY7C65211扩展SPI或UART,id读出来是63xxx,这个还需要特殊初始化吗?
谢谢
Hi guys,
I'm trying to start with a new C++ project for my application (with VS2019) and I've encountered linking issue.
First, I used the the API from "\EZ-USB FX3 SDK\1.3\library\cpp" and simply tried to open a new device with:
USBDevice = new CCyUSBDevice((HANDLE)USBDevice, CYUSBDRV_GUID, true);
It fails due to linking issues:
Next, I tried and API from "Cypress Suite USB 3.4.7" and it compiles.
I continued with this API and face another issues... I can't see the right MaxPktSize which equals to 16384.
Is this API supports USB3?
My driver version is 1.2.3.23
What is the latest API to use?
How can I fix the linking problem?
My project is attached.
Omri.
Show Less