USB superspeed peripherals Forum Discussions
Hi,
It's possible to have a source code of the demo board DEMO_FX3_U3V_CAM01 ?
BR,
Mihail
We are evaluating the watchdog timer in the CX3 controller, and during an ESD test, we observed that the watchdog timer is not functioning as expected. We are using the Denebola RDK kit for this evaluation.
The CX3 controller experiences the following issues during the ESD test, even though the watchdog timer has been configured:
Issue 1: While applying an external voltage of -4 kVA, the CX3 becomes unresponsive. We expected the watchdog timer to reset the CX3, but it does not reset. In such cases, we manually toggle the reset pin of CX3 to recover the device.
Issue 2: When applying external voltage, the device undergoes continuous resets. During enumeration, the "CyU3PMipicsiInit()" function throws an error, specifically "CY_U3P_ERROR_TIMEOUT," after the device reset. Despite externally toggling the CX3 reset pin, we couldn't recover the CX3.
We conducted this test in two scenarios:
- External crystal clock source provided to CLKIN_32 pin of CX3.
- External crystal clock not provided to CLKIN_32 pin.
In both cases, the issues persisted. Could you please provide your thoughts on this observation and guide us on how to effectively use the watchdog timer with CX3?
Hi
We are usingCypress EZ-USB FX3 and TUSB73x0 , and got some errors about usb host controller transfaction.
1200 x 1200 or 1920 x 1200 are picture resolution (number of pixels for each picture)
16 is YUV encoding, each pixel needs 16 bit
30/20 are frame rates
If we use bulk transactions. Some times we got those errors from kernel messages, it's not easy to get errors, but we got those errors from time to time.
[Thu Apr 6 20:28:53 2023] uvcvideo: Non-zero status (-71) in video completion handler.
[Thu Apr 6 20:28:53 2023] xhci_hcd 0000:77:00.0: Transfer error for slot 2 ep 6 on endpoint
[Thu Apr 6 20:28:53 2023] uvcvideo: Non-zero status (-71) in video completion handler.
[Thu Apr 6 20:28:53 2023] xhci_hcd 0000:77:00.0: Transfer error for slot 2 ep 6 on endpoint
And We use a USB 3.0 protocol analyzer in between, for bulk transaction, when the issue happens, we captured lots of error. Hoster R. and retry.
I just wonder why HosterR did, and who knows this error, can I rule out Cypress? Thanks
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/%E8%B6%85%E9%AB%98%E9%80%9FUSB%E5%A4%96%E8%AE%BE/Cause-of-host-EHCI-USB-transaction-errors-between-CY-EZ-USB-FX3/td-p/638833
Show LessHello
Q)
Is it possible to set the following items of FX3/CX3 using I2C from an external microcontroller?
a) Custom PID/VID
b) Time Stamp (PTS and SCR) settings
c) Are there any registers that can be set to FX3/CX3 from an external microcontroller via I2C? Or is there a list of register settings?
Best Regards
Show LessI am trying to use GPIO 20 as a GPIO output from my FX3 firmware to an FPGA but am having difficulty getting it working. If I make the GPIO an output in GPIF and change its value in the state machine, I do see the changes in ILA so there appears to be something wrong in my firmware.
To get a GPIO configured, I first need to set gpio map to use GPIO 20 as a simple GPIO as part of setting the IO matrix. This is done in one line with:
io_cfg.gpioSimpleEn[0] = 0x00000000 | (1 << 20);
Then the GPIO module itself needs to be initiated. These values were just taken from an example:
gpioClock.fastClkDiv = 2;
gpioClock.slowClkDiv = 0;
gpioClock.simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
gpioClock.clksrc=CY_U3P_SYS_CLK;
gpioClock.halfDiv = 0;
apiRetStatus = CyU3PGpioInit(&gpioClock, NULL);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PGpioInit failed, error code = %d\n", apiRetStatus);
}
Then I need to unreserve GPIO 20:
apiRetStatus = CyU3PDeviceGpioOverride (
20, /* GPIO pin to use */
CyTrue /* Simple GPIO */
);
if (apiRetStatus != CY_U3P_SUCCESS)
{
/* Error Handling */
CyU3PDebugPrint (4, "CyU3PDeviceGpioOverride failed, error code = %d\n", apiRetStatus);
}
And lastly the gpio can be configured:
gpioConfig.outValue = CyFalse; /* Initial out value */
gpioConfig.inputEn = CyFalse; /* Enable input stage */
gpioConfig.driveLowEn = CyTrue; /* Output driver enabled for outValue = CyFalse */
gpioConfig.driveHighEn = CyTrue; /* Output driver enabled for outValue = CyTrue */
gpioConfig.intrMode = CY_U3P_GPIO_NO_INTR;
apiRetStatus = CyU3PGpioSetSimpleConfig(20, &gpioConfig);
if (apiRetStatus != CY_U3P_SUCCESS)
{
/* Error handling */
CyU3PDebugPrint (4, "CyU3PGpioSetSimpleConfig failed, error code = %d\n", apiRetStatus);
}
I then should be able to output a value with:
apiRetStatus = CyU3PGpioSetValue (20, CyTrue);
however I cannot see this doing anything AND these alterations also seem to kill my UART and I2C functionalities so something is configured wrong but I am unsure what. Any help would be greatly appreciated.
Show LessMy sensor has 1280 pixels/line, each pixel is 10 bits, and I want to deserialize data into 16-bit format. However, I found the following configurations can't work if output format is YUV422_8_2, but it can work if output format is modified to RAW10.
How to adjust the sensor or CX3 setting to correct this problem. Please advise, thanks !
Show Less
I'm trying to add a .noinit section to the FX3 project. I have followed KBA229114 to modify the memory map. Now my fx3.ld looks like:
MEMORY
{
I-TCM : ORIGIN = 0x100 LENGTH = 0x3F00
SYS_MEM : ORIGIN = 0x40003000 LENGTH = 0x2D000
DATA : ORIGIN = 0x40030000 LENGTH = 0x7F00
NOINIT : ORIGIN = 0x40037F00 LENGTH = 0x100 // Added
}
SECTIONS
{
//....
.noinit (NOLOAD): // Added
{
KEEP(*(*.noinit*))
. = ALIGN(4);
} > NOINIT
}
In addition I have the following test in main
#define RESET_MAGIC 0x01234567
__attribute__((section(".noinit"))) volatile uint32_t magic;
__attribute__((section(".noinit"))) volatile uint32_t resetCount;
void post(void)
{
if (magic != RESET_MAGIC)
{
magic = RESET_MAGIC;
resetCount = 0;
LOG_LINE("First boot");
}
LOG_LINE("Reset count: %d", ++resetCount);
}
When I run this on boot, I would expect to see "First boot", followed by "Reset count: 1".
When I press the reset button, I would expect to see "Reset count: 2", however I see the same as the first boot. This indicates to me that the primary bootloader is zeroing this portion of memory when loading from the SPI flash. Is this correct?
If so, is there any way to have a noinit section on the CX3 devices when using SPI flash as the boot source?
Show LessWhat is the minimum acceptable value for Horizontal Blanking? I am streaming a 1280x720 YUV2 video @ 30fps. 8 Bits/pixel.
Hello All,
I have a 2.46M pixel 1920x1280 camera sensor. Format UYVY is a 16 bit sensor. I developed a driver for this sensor for CX3 an looked at the UART outputs, there is no problem and it seems to be printing frames. However, the gstreamer window that opens on the computer appears black and no image. When I look at the PCLK, HSYNC, VSYNC pin on the CX3 with an oscilloscope, I see that everything is working fine. I added the frame info output from the UART below. Does anyone have any suggestions as to why this could be?
''
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 1 Frm_Sz = 4972800 B
0 2 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 2 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 3 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 4 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 5 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 6 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 7 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 8 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 9 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 10 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 11 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 12 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 13 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 14 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 15 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 16 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 17 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 18 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 19 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 20 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 21 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 22 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 23 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 24 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 25 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 26 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 27 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 28 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 29 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 30 Frm_Sz = 4972800 B
TimeDiff = 997 ms FPS = 30
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 31 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 32 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 33 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 34 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 35 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 36 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 37 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 38 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 39 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 40 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 41 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 42 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 43 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 44 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 45 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 46 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 47 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 48 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 49 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 50 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 51 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 52 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 53 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 54 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 55 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 56 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 57 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 58 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 59 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 60 Frm_Sz = 4972800 B
TimeDiff = 997 ms FPS = 30
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 61 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 62 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 63 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 64 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 65 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
Prod = 135 Cons = 134 Prtl_Sz = 2640 Frm_Cnt = 66 Frm_Sz = 4972800 B
0 0 0 0 0 0 0 0 0
''
Show LessHello,
I have implement 2 virtual com port on the FX3 development board (CYUSB003-Kit), and they are running well.
It would be nice if I can identify the port between each other, e.g. COM33(Custom_Name_XX), COM34(Custom_Name_YY).
What could I do?
Thank you
Zhangshun
Show Less