USB superspeed peripherals Forum Discussions
Hello!
I want to use Slave FIFO and UART within single FX3 firmware, so I've merged two well-known Cypress examples, combine descriptors, so on. I use 0x00F1 as product ID.
Driver setup is very tricky:
1) initially my board was displayed as a Composite USB Device in the Device Dispatcher
2) I've modified cyusb3.inf by adding string
%VID_04B4&PID_00F1.DeviceDesc%=CyUsb3, USB\VID_04B4&PID_00F1&MI_00
I saw StreamerExample in Device Dispatcher after that update, but there was no COM port yet.
3) I've modified CypressSerial.inf by adding string
%CypressSerial% = CypressSerial.NTamd64,Ports\VID_04B4&PID_00F1&MI_01
I got two COM ports with that update.
I did not check UART yet, but Slave FIFO works good.
So, my questions:
1) is the procedure, described above, normal/usual with FX3 or not? Are there any less tricky ways to reach the same?
2) why do two COM ports appear, but not one? Are both of them functional or not? If no, which of them should I use?
Many thanks!
With regards,
Maksim
Show LessWe modify cyfxisosrcsink example code to disable USB3.0. let it only work on USB2.0
We have two question:
1). if MaxPktSize = 3, the streamer application can't recognize ISO endpoint.
2). if MaxPktSize = 2, the streamer application can recognize ISO endpoint, but throughput is only 15900 bytes per second.
How to improve it?
Show LessHello,
I am going to change FX3 Booting mode from I2C to SPI. so please Let me know it can be used as parts below.
- MT25QL256ABA1EW9-0SIT
- MT25QL128ABA1EW9-0SIT
BR,
Tony Kim
Show LessHi,
Currently, We are using CyU3PSpiReceiveWords ( uint8_t *data, uint32_t byteCount) function to read spi flash data,
the read speed is a little slowly, We want to get the read speed more faster,
Is It support to use DMA mode to read data from SPI flash?
I just see the function
extern CyU3PReturnStatus_t
CyU3PSpiSetBlockXfer (
uint32_t txSize, /**< Number of words to be transmitted (not bytes) */
uint32_t rxSize /**< Number of words to be received (not bytes) */
);
The function only have the read size param, My question is how to set ram address to save spi data?
Are there one sample to use the function?
Thanks,
Martin.xu
Show LessHello,
I am facing the same problem recently, so i want to know did you solve it?
Besides, I have added the CyAPI.lib,User32.lib, SetupAPI.lib,legacy_stdio_definitions.lib as static lib to my project .
Show LessHello,
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 Less