USB superspeed peripherals Forum Discussions
text.format{('custom.tabs.no.results')}
I‘m trying to cfg CX3 3065 for receiving data with OV sensor, The MIPI CSI-2 is configured as below:
And the MIPI error thread has got some errcnt: frmErrCnt ctlErrCnt recSyncCnt unrecSyncCnt, So how can i cfg toEliminate these errors ?
Show LessIn the demo there is a method of DWORD WINAPI CBulkLoopAppDlg::PerformBulkloopTransfer(LPVOID lParam);
I didn't understand why bulkin at first。
What's the target of next code?
// Queue-up the first batch of transfer requests
for (int nCount = 0; nCount < QueueSize; nCount++)
{
////////////////////BeginDataXFer will kick start the IN transactions.................
contextsInput[nCount] = epBulkIn->BeginDataXfer(buffersInput[nCount], totalTransferSize, &inOvLap[nCount]);
if (epBulkIn->NtStatus || epBulkIn->UsbdStatus)
{
if (epBulkIn->UsbdStatus == USBD_STATUS_ENDPOINT_HALTED )
{
epBulkIn->Reset();
epBulkIn->Abort();
Sleep(50);
contextsInput[nCount] = epBulkIn->BeginDataXfer(buffersInput[nCount], totalTransferSize, &inOvLap[nCount]);
}
if (epBulkIn->NtStatus || epBulkIn->UsbdStatus)
{
// BeginDataXfer failed
// Handle the error now.
epBulkIn->Abort();
for (int j=0; j< QueueSize; j++)
{
CloseHandle(inOvLap
delete [] buffersInput
}
pThis->m_edtFailure.SetWindowText(L"0x1");
// Bail out......
delete []contextsInput;
delete [] buffersInput;
CString strMsg;
strMsg.Format(L"BeginDataXfer Failed with (NT Status = 0x%X and USBD Status = 0x%X). Bailing out...", epBulkIn->NtStatus, epBulkIn->UsbdStatus);
AfxMessageBox(strMsg);
return 0;
}
}
}
Show LessHi,
I'm using cyusb3014 (not reference kit) fx3 controller to read/write extrenal NOR flash(MT25QU01GBBB8E12) using custom Spi pins using the example code given along with the SDK. The example code used for this purpose :
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\serialif_examples\cyfxusbspigpiomode.
Gpio pins used for this are:
Gpio[36] -CLK
Gpio[35] -SS
Gpio[33] -MISO
Gpio[34] - MOSI.
When i try to read the firmware ID using the vendor command (0xB0), i got the id successfully.
But when i try to read/write data using the vendor commands, it seems to get stuck at CyFxSpiWaitForStatus() function.
Is there anything i need to take care before read/write flash?
Regards,
Sathya
Show Lessconst uint8_t CyFxUSBSSConfigDscr[] __attribute__ ((aligned (32))) =
{
/* Configuration descriptor */
0x09, /* Descriptor size */
CY_U3P_USB_CONFIG_DESCR, /* Configuration descriptor type */
0x4f,0x00, /* Length of this descriptor and all sub descriptors */
0x02, /* Number of interfaces */
0x01, /* Configuration number */
0x00, /* COnfiguration string index */
0x80, /* Config characteristics - Bus powered */
0x32, /* Max power consumption of device (in 8mA unit) : 400mA */
/* Interface descriptor */
..............
}
I set 0x02, /* Number of interfaces */,but returned 1 and Length of this descriptor is also wrong
I don't know why
Show Less
Hi,
My issue:
I have a sensor streaming CSI2 at 1.2 Gbps, 120 fps, resolution 240x180, 2 mipi lanes, RAW12 format --> No problem in this case
I have the possibility to double the data of each pixel --> (480x180), keeping the line readout length fixed --> I cannot stream in this case
while I can correctly stream in the same situation with a mipi2usb done in FPGA instead of CX3.
By artificially extending the readout time on the sensor of each line I can stream correctly from CX3.
My goal:
I want to stream through CX3 without slowing down the readout of the sensor (or at least understand the CX3 limitation)
My understanding of the issue:
I need 6.4 usec to readout 2 lines (in parallel) on the sensor and I need to committ all the data on the mipi bus during this time (before next 2 lines become available)
The time needed for the mipi to committ data is:
480* 2 *12 bits / 1.2 Gbps / 2 lanes = 4.8 usec + (THS + LineBlanking)
[By measurements I have: THS_Prepare = 220ns, THS_Trail=80ns, LineBlanking=460 ns] --> Total mipi time = 6.4 usec
This leaves 460 ns usec of line/horizontal blanking to the CX3 --> Is this enough (see attached image tek00024.png)?
Attempt#1
By relaxing the readout time we are virtually increasing horizontal blanking, and everything seem to work again (we need at least 2.6 usec of line blanking to stream)
Attempt#2:
What we have tried is to use RGB888 format instead of RAW12. In this case it seems we don't have the limitation, meaning we can stream
480 lines without reducing readout.
This is not acceptable since we have to manage externally the RAW12 data unpacking, and does not explain why the native RAW12 is not working.
This also leads me to think that CSI2 PHY layer may not be the problem but maybe how data is managed in the fixed GPIF.
My guesses:
- RAW12 "demosaicing" is introducing overhead
- Some insufficient buffering during data processing in (or before) the GPIF
- More bandwitdth (2.4 Gbps in case of RGB888 instead of 1.2 Gbps in case of RAW12 are "helping" to consume data faster and suffer less by previous point)
What do you think?
Is there a lower hard limit for line blanking in the Mipi receiver?
Here below the mipi configuration:
CyU3PMipicsiCfg_t RAW12_HQvga =
{
CY_U3P_CSI_DF_RAW12,
MIPI_LANES, /* uint8_t numDataLanes */
0, /* uint8_t pllPrd */
39, /* uint16_t pllFbd */
CY_U3P_CSI_PLL_FRS_500_1000M, /* CyU3PMipicsiPllClkFrs_t pllFrs */
CY_U3P_CSI_PLL_CLK_DIV_8, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */
CY_U3P_CSI_PLL_CLK_DIV_8, /* CyU3PMipicsiPllClkDiv_t parClkDiv */
0x0707,
CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */
240,
20,
};
Thank you,
Nico
Show LessHello all,
I am working on Cypress project, i need to interface cypress with BlueNrg1(BLE) through I2C communication, But cypress showing error message of 74. Is it possible to interface cypress with BLE by I2C communication?.
I Have doubt on Cypress source code of Reg Mode and i attached screen shot also.
1. Whats is Byte Address in source code?.
2. is slave device should have EEPROM for I2C communication?.
Show LessHi
I am developing Denebola with OVM7251 Camera module.
I already test streaming with Superspeed USB connection. (VGA / 100,60,30 FPS)
but I can't use it in Highspeed. (VGA / 30FPS)
Uart output below
Prod = 11 Cons = 10 Prtl_Sz = 7184 Frm_Cnt = 25 Frm_Sz = 412160 B
Prod = 11 Cons = 10 Prtl_Sz = 7184 Frm_Cnt = 26 Frm_Sz = 412160 B
Prod = 11 Cons = 10 Prtl_Sz = 7184 Frm_Cnt = 27 Frm_Sz = 412160 B
Prod = 11 Cons = 10 Prtl_Sz = 7184 Frm_Cnt = 28 Frm_Sz = 412160 B
Prod = 11 Cons = 10 Prtl_Sz = 7184 Frm_Cnt = 29 Frm_Sz = 412160 B
Prod = 11 Cons = 10 Prtl_Sz = 7184 Frm_Cnt = 30 Frm_Sz = 412160 B
TimeDiff = 991 ms FPS = 30
Mipi config is below
CY_U3P_CSI_DF_RAW10, /* CyU3PMipicsiDataFormat_t dataFormat */
1, /* uint8_t numDataLanes */
1, /* uint8_t pllPrd */
90, /* uint16_t pllFbd */
CY_U3P_CSI_PLL_FRS_125_250M, /* CyU3PMipicsiPllClkFrs_t pllFrs */
CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t csiRxClkDiv */
CY_U3P_CSI_PLL_CLK_DIV_8, /* CyU3PMipicsiPllClkDiv_t parClkDiv */
0, /* uint16_t mClkCtl */
CY_U3P_CSI_PLL_CLK_DIV_2, /* CyU3PMipicsiPllClkDiv_t mClkRefDiv */
640, /* uint16_t hResolution */
1 /* uint16_t fifoDelay */
I try change mipi config, but Frm sz did not reach to 614400 B
How can i fix it?
Show LessHi,
I'm trying new project something which is similar to the FX3+FPGA+HelionVision ISP-Based Industrial Camera Reference Design- KBA222700. FX3 part looks similar to my project.
Boot option for FX3 is I2C with USB fallback on failure.
I need to configure FPGA through FX3 on every reset. The configure file for FPGA need to be preloaded in SPI Flash. Since there is only 1 dedicated SPI interface in FX3, I thought of using Custom SPI interface for loading config file to fpga. But it seems to have problem with clock cycles. I need help for this FPGA configuring part.
So, it will be helpful if you guys can provide the FX3 firmware for this reference design.
Regards,
Sathya.
Show LessHi,
I am using Ubuntu 16.04 64 bit in Virtual Box. I followed the instructions in cyusb Linux SDK, but ran into error on building the cyUSB application. I did install the usblib 1.0.9 , libusb-1.0.16-rc10 and Qt4. From the cyusb_linix_1.0.5 directory, I ran make, then ./install.sh, but I got the error - libusb_get_ss_endpoint_companion_descriptor’ was not declared in this scope. Below is the log. please help. Thanks. Phil
phil@phil-VirtualBox:~/Cypress/cyusb_linux_1.0.5$ make
g++ -fPIC -o lib/libcyusb.o -c lib/libcyusb.cpp
g++ -shared -Wl,-soname,libcyusb.so -o lib/libcyusb.so.1 lib/libcyusb.o -l usb-1.0 -l rt
cd lib; ln -sf libcyusb.so.1 libcyusb.so
rm -f lib/libcyusb.o
phil@phil-VirtualBox:~/Cypress/cyusb_linux_1.0.5$ sudo ./install.sh
[sudo] password for phil:
Your current directory is /home/phil/Cypress/cyusb_linux_1.0.5. This is where the cyusb_suite software will be installed...
g++ -fPIC -o lib/libcyusb.o -c lib/libcyusb.cpp
g++ -shared -Wl,-soname,libcyusb.so -o lib/libcyusb.so.1 lib/libcyusb.o -l usb-1.0 -l rt
cd lib; ln -sf libcyusb.so.1 libcyusb.so
rm -f lib/libcyusb.o
rm -f moc_controlcenter.cpp
rm -f ui_controlcenter.h
rm -f controlcenter.o main.o fx2_download.o fx3_download.o streamer.o moc_controlcenter.o
rm -f *~ core *.core
/usr/lib/x86_64-linux-gnu/qt4/bin/uic controlcenter.ui -o ui_controlcenter.h
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o controlcenter.o controlcenter.cpp
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp
main.cpp: In function ‘void get_config_details()’:
main.cpp:625:66: error: ‘libusb_get_ss_endpoint_companion_descriptor’ was not declared in this scope
libusb_get_ss_endpoint_companion_descriptor (NULL, ep, &compd);
^
main.cpp:646:66: error: invalid use of incomplete type ‘struct get_config_details()::libusb_ss_endpoint_companion_descriptor’
summ[summ_count].reqsize = (summ[summ_count].maxps * (compd->bMaxBurst +
^
main.cpp:623:12: note: forward declaration of ‘struct get_config_details()::libusb_ss_endpoint_companion_descriptor’
struct libusb_ss_endpoint_companion_descriptor *compd = NULL;
^
main.cpp:647:14: error: invalid use of incomplete type ‘struct get_config_details()::libusb_ss_endpoint_companion_descriptor’
(compd->bmAttributes + 1));
^
main.cpp:623:12: note: forward declaration of ‘struct get_config_details()::libusb_ss_endpoint_companion_descriptor’
struct libusb_ss_endpoint_companion_descriptor *compd = NULL;
^
main.cpp:649:66: error: invalid use of incomplete type ‘struct get_config_details()::libusb_ss_endpoint_companion_descriptor’
summ[summ_count].reqsize = (summ[summ_count].maxps * (compd->bMaxBurst +
^
main.cpp:623:12: note: forward declaration of ‘struct get_config_details()::libusb_ss_endpoint_companion_descriptor’
struct libusb_ss_endpoint_companion_descriptor *compd = NULL;
^
Makefile:233: recipe for target 'main.o' failed
make: *** [main.o] Error 1
phil@phil-VirtualBox:~/Cypress/cyusb_linux_1.0.5$
Show Less