USB superspeed peripherals Forum Discussions
My FX3 development board is CYUSB3014. It directly connect to host. I want to implement a function. Development board is running Slave FIFO application that's from SPI flash, PC send a signal development board through control endpoint, development board reboot into BootLoader and wait for PC update SPI flash. I've tried to call CyFx3BootDeviceReset, but my project link failed.
How can I do it? Please help me.
Show LessHi everyone,
I have a new sensor with YUV422-8bit need to connect to CX3, I have made CX3 MIPI receiver configuration accroding to CX3 SDK, but I can't get image from CX3. And I have confirmed that the CX3 hardware is OK because I have got image from a raw sensor already, and the new YUV2 sensor is streaming correctly because I have measured the MIPI signal, I suspect there may be something throng with CX3 MIPI configuration, but I can't find it, is there anyone could help me? Below is my configuration:
I have measured HSYNC and VSYNC on CX3 board, but they are always low.
Anyone could help to generate a correct CX3 MIPI configuration for me?
Show LessHi,
How to calculate FIFO Delay Time as CX3 MIPI Interface Confiduration show. Could you give me any formula to calculate this value? Thanks!
Show LessI need the FX3 driver for Windows 11, where can I download it?
Hello,
I am working on a YUV422-10bit sensor connecting to CX3 with YUV2 output. The sensor resolution is 1280x720@30fps, I find that MIPI CSI-2 transfer YUV422-10 as 2 pixel with 5 bytes, so I think I could still configure CX3 as YUV422-8 input, but configure resolution to 1600x720. In this way, CX3 still can receive complete sensor data I think(if this is wrong, please correct me). And I actually done a test, but the result is quite abnormal. I print CX3 debug log, and found CX3 have received sensor data with different frame size, the frequency is also unequal, and preview all black image with AMcap. So if anybody could help me?
Attachment is MIPI interface configuration and debug log.
Show LessHi. For a few proto PCBAs, we are sourcing CYUSB3014-BZXI devices but the datecode is '12xx'. Concerned about the 'ES' devices which had some erratas. Specifically, unable to soft-enumerate on the 'ES' version of the component.
Have some questions:
1) Will the engineering samples of the CYUSB3014-BZXI devices have the 'ES' laser markings ? This datecode does not but wish to understand the markings.
2) Which datecode of the CYUSB3014-BZXI is considered to be bug free silicon ? Saw some mention of Rev B and Rev C silicon but how can we determine if our device is one of these iterations with erratas ?
Please assist asap as so far, unable to locate any document with these details.
Thanks.
Show LessHello,
I am working with a custom board that has a CYUSB3065-BZXI chip. I am trying to build one of the examples included in the sdk: cycx3_yuy2_ov564. The example builds successfully and the .img file is generated.In the cyusb tool, i choose the cx3 chip and select the program to RAM option and download the generated .img file into the chip. After this, it says programmed successfully,
However, the CX3 chip is now disconnected but it does not enumerate as a UVC device as expected. I have tried other example programs as well, including USBFlashProg and USBBulkSourceSink and even for those the device simply disconnects and doesnt re-enumerate as a different device.I have tried building in both debug and release mode and both give the same result.
What might be the problem and how do I resolve this?
Show LessHi, Thanks in advance. My hardware is FX3 USB super Speed device with vendorId 04b4 and product Id 00f2. My OS is Ubuntu 18.04. version. I have installed Autoslave and Automaster code in hardware. I am running controlcenter code using Qt 5.15.2. which is provided by cypress. i am trying to do bulk transfer from from slave write to master read, but getting error "LIBUSB_ERROR_IO". The code has complete root access. Apart from this i also tried in my own simple code getting the same error. The below is the code and output.
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include <libusb-1.0/libusb.h>
#define EP_DATA_IN 0x81
#define EP_DATA_OUT 0x01
#define DEVICE_CONFIGURATION 0
#define MASTER 0x00f4
#define SLAVE 0x00f2
void writeButtonClicked()
{
int rc;
libusb_context *ctx = NULL;
libusb_device_handle *dev_handle;
QString writeData = "Slave writing !!!";
int actual = writeData.length();
unsigned char *sendData;
sendData = (unsigned char *)malloc(actual);
memcpy(sendData, writeData.toLocal8Bit(), actual);
rc = libusb_init(&ctx);
if(rc < 0) {
std::cout << "Init Error " << rc << std::endl;
}
libusb_set_debug(ctx, 6);
dev_handle = libusb_open_device_with_vid_pid(ctx, 0x04b4, SLAVE); // Give SLAVE or MASTER to perform write operation
if (!dev_handle) {
fprintf(stderr, "Error finding USB device\n");
}
if(libusb_kernel_driver_active(dev_handle, DEVICE_CONFIGURATION) == 1) {
std::cout << "Kernel Driver Active" << std::endl;
if(libusb_detach_kernel_driver(dev_handle, DEVICE_CONFIGURATION) == 0)
std::cout << "Kernel Driver Detached!" << std::endl;
}
rc = libusb_claim_interface(dev_handle, DEVICE_CONFIGURATION);
if(rc != 0) {
std::cout << "Cannot Claim Interface" << std::endl;
rc = libusb_set_interface_alt_setting(dev_handle, DEVICE_CONFIGURATION, 1);
if(rc!=0)
{
std::cout <<"Cannot configure alt setting "<<std::endl;
}
else
{
std::cout <<"configured alt setting "<<std::endl;
}
}
std::cout << "Data->" << sendData << "<-" << std::endl;
std::cout << "Writing Data..." << std::endl;
std::cout << "Trying endpoint " << EP_DATA_OUT << "." << std::endl;
rc = libusb_bulk_transfer(dev_handle, EP_DATA_OUT, sendData, sizeof(sendData), &actual, 1000);
if(rc == 0)
{
std::cout << "Writing Successful!" << std::endl;
}
else
{
std::cout << "Write Error! Rc: " << rc << " Actual transfered bytes: " << actual << "." << std::endl;
std::cout << "Error code means: " << libusb_error_name(rc) << std::endl;
}
rc = libusb_release_interface(dev_handle, 0);
if(rc!=0) {
std::cout << "Cannot Release Interface" << std::endl;
}
if (dev_handle)
libusb_close(dev_handle);
libusb_exit(ctx);
}
void readButtonClicked()
{
int rc;
libusb_context *ctx = NULL;
libusb_device_handle *dev_handle;
int actual = 0;
unsigned char *readData = new unsigned char[512];
rc = libusb_init(&ctx);
if(rc < 0) {
std::cout << "Init Error " << rc << std::endl;
}
libusb_set_debug(ctx, 6);
dev_handle = libusb_open_device_with_vid_pid(ctx, 0x04b4, MASTER); // Give SLAVE or MASTER to perform Read operation
if (!dev_handle) {
fprintf(stderr, "Error finding USB device\n");
}
if(libusb_kernel_driver_active(dev_handle, DEVICE_CONFIGURATION) == 1) {
std::cout << "Kernel Driver Active" << std::endl;
if(libusb_detach_kernel_driver(dev_handle, DEVICE_CONFIGURATION) == 0)
std::cout << "Kernel Driver Detached!" << std::endl;
}
rc = libusb_claim_interface(dev_handle, DEVICE_CONFIGURATION);
if(rc != 0) {
std::cout << "Cannot Claim Interface" << std::endl;
rc = libusb_set_interface_alt_setting(dev_handle, DEVICE_CONFIGURATION, 1);
if(rc!=0)
{
std::cout <<"Cannot configure alt setting "<<std::endl;
}
else
{
std::cout <<"configured alt setting "<<std::endl;
}
}
std::cout << "Trying endpoint " << EP_DATA_IN << "." << std::endl;
rc = libusb_bulk_transfer(dev_handle, EP_DATA_IN, readData, sizeof(readData), &actual, 1000);
if(rc >=0)
{
std::cout << "Read Success! Rc: " << libusb_error_name(rc) << " Actual transfered bytes: " << actual << "." << std::endl;
}
else
{
std::cout << "Read Error! Rc: " << rc << " Actual transfered bytes: " << actual << "." << std::endl;
std::cout << "Error code means: " << libusb_error_name(rc) << std::endl;
}
rc = libusb_release_interface(dev_handle, 0);
if(rc!=0) {
std::cout << "Cannot Release Interface" << std::endl;
}
if (dev_handle)
libusb_close(dev_handle);
libusb_exit(ctx);
}
//Output Slave writing Master reading
libusb: debug [libusb_get_device_list]
libusb: debug [discovered_devs_append] need to increase capacity
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_open] open 2.16
libusb: debug [usbi_add_pollfd] add fd 26 events 4
libusb: debug [libusb_kernel_driver_active] interface 0
libusb: debug [libusb_claim_interface] interface 0
Data->Slave writing !!!<-
Writing Data...
Trying endpoint 1.
Writing Successful!
libusb: debug [libusb_alloc_transfer] transfer 0x563230a5b760
libusb: debug [libusb_submit_transfer] transfer 0x563230a5b760
libusb: debug [add_to_flying_list] arm timerfd for timeout in 1000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 8
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll fds modified, reallocating
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=0 transferred=8
libusb: debug [handle_bulk_completion] handling completion status 0 of bulk urb 1/1
libusb: debug [handle_bulk_completion] last URB in transfer --> complete!
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x563230a5b760 has callback 0x7f2537dfbb30
libusb: debug [sync_transfer_cb] actual_length=8
libusb: debug [libusb_free_transfer] transfer 0x563230a5b760
libusb: debug [libusb_release_interface] interface 0
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 26
libusb: debug [libusb_exit]
libusb: debug [libusb_exit] destroying default context
libusb: debug [libusb_get_device_list]
libusb: debug [discovered_devs_append] need to increase capacity
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_get_device_descriptor]
libusb: debug [libusb_open] open 2.17
libusb: debug [usbi_add_pollfd] add fd 26 events 4
libusb: debug [libusb_kernel_driver_active] interface 0
libusb: debug [libusb_claim_interface] interface 0
Trying endpoint 129.
libusb: debug [libusb_alloc_transfer] transfer 0x563230a35450
libusb: debug [libusb_submit_transfer] transfer 0x563230a35450
libusb: debug [add_to_flying_list] arm timerfd for timeout in 1000ms (first in line)
libusb: debug [submit_bulk_transfer] need 1 urbs for new transfer with length 8
libusb: debug [libusb_handle_events_timeout_completed] doing our own event handling
libusb: debug [handle_events] poll fds modified, reallocating
libusb: debug [handle_events] poll() 3 fds with timeout in 60000ms
Master Read Error! Rc: -1 Actual transfered bytes: 0.
Error code means: LIBUSB_ERROR_IO
libusb: debug [handle_events] poll() returned 1
libusb: debug [reap_for_handle] urb type=3 status=-71 transferred=0
libusb: debug [handle_bulk_completion] handling completion status -71 of bulk urb 1/1
libusb: debug [handle_bulk_completion] low level error -71
libusb: debug [disarm_timerfd]
libusb: debug [usbi_handle_transfer_completion] transfer 0x563230a35450 has callback 0x7f2537dfbb30
libusb: debug [sync_transfer_cb] actual_length=0
libusb: debug [libusb_free_transfer] transfer 0x563230a35450
libusb: debug [libusb_release_interface] interface 0
libusb: debug [libusb_close]
libusb: debug [usbi_remove_pollfd] remove fd 26
libusb: debug [libusb_exit]
libusb: debug [libusb_exit] destroying default context
Show Less
Hi, I have a question with CX3.
Does SPI support 3-wire communication in CX3?