USB superspeed peripherals Forum Discussions
If I want to develop USB3.0 custom device drivers, is there any reference?
In my case, A RGB sensor outputs data to the CYUSB3014, then I want the upper computer accepts RGB data, based on the custom protocol.
Show LessHi,
We have SDR host board with Cypress USB cable connected to PC, In most of the lab machines it works well just by installing cysub3.0 driver.
But the issue here is when we connect to laptop sometimes the "Cypress FX3 USB StreamerExample device" is shown with exclamation yellow mark in device manager.
We tried installing cypressDriver but it did'nt help, Any idea how to fix this issue.
Thanks,
Poorna Chandran
Show LessI need to have my sensor triggered externally to synchronize to other hardware and a flash. Can the FX3 UVC interface be used in this way or can it only be used for streaming applications with fixed frame rate? Can the FX3 do this with the standard driver? In the past, I have used industrial cameras with USB for GigE Vision. Those cameras are too large for my current application so I am looking into building my own with the FX3.
As you can tell, I'm just beginning this journey. Any direction would be appreciated.
Show LessI am trying to use implement an encryption algorithm on the CX3 known as XTEA. I used the following code on the CX3 and Windows, but got a different result when using 64 for Num_rounds, v[2] = {0x274DCC86, 0x3E0DA996} and key={0x12345678, 0x12345678, 0x12345678, 0x12345678}.
void decipher(const size_t Num_rounds, uint32_t v[2], uint32_t const key[4])
{
size_t index;
uint32_t v0 = v[0];
uint32_t v1 = v[1];
const uint32_t Delta = 0x9E3779B9;
uint32_t sum = Delta * Num_rounds;
for (index = 0U; index < Num_rounds; index++)
{
v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 0x3]);
v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 0x3]);
}
v[0]=v0;
v[1]=v1;
}
The deciphered data should return 0, but doesn't on CX3. Is this a known issue I don't know about or am I doing something wrong?
Show LessNow, I am working with CX3 dev board for bring up ov5680 sensor.
The problem is that I am not sure how should I modify uvc descriptor for raw10 bit.
I already implemented uvc raw8 format, and at host pc I can preview the raw8 stream as well.
But when I modify the descriptor for RAW10, It cannot preview.
Please help me to check below dscr, feedback to me.
Thanks
#ifdef BAYER_RAW10
/* Class specific Uncompressed VS format descriptor */
0x1B, /* Descriptor size */
NMG_UVC_CS_INTRFC_DESCR, /* Class-specific VS interface Type */
0x04, /* Subtype : VS_FORMAT_UNCOMPRESSED */
0x01, /* Format desciptor index */
0x01, /* Number of Frame Descriptors that follow this descriptor: 3 */
/* GUID, globally unique identifier used to identify streaming-encoding format: BY10 */
0x42, 0x59, 0x31, 0x30, /*MEDIASUBTYPE_BY10 GUID: 30315942-0000-0010-8000-00AA00389B71 */
0x00, 0x00, 0x10, 0x00,
0x80, 0x00, 0x00, 0xAA,
0x00, 0x38, 0x9B, 0x71,
0x0A, /* Number of bits per pixel: 10 */ => Is it correct bit size for RAW10 ?
0x01, /* Optimum Frame Index for this stream: 1 (1944p) */
0x00, /* X dimension of the picture aspect ratio; Non-interlaced */
0x00, /* Y dimension of the pictuer aspect ratio: Non-interlaced */
0x00, /* Interlace Flags: Progressive scanning, no interlace */
0x00, /* duplication of the video stream restriction: 0 - no restriction */
/* Class specific Uncompressed VS frame descriptor 1 - 5MP@30fps */
0x1E, /* Descriptor size */
NMG_UVC_CS_INTRFC_DESCR, /* Descriptor type*/
0x05, /* Subtype: Uncompressed frame interface*/
0x01, /* Frame Descriptor Index: 1 */
0x01, /* No Still image capture method supported */
0x20, 0x0A, /* Width in pixel: 2592 */
0x98, 0x07, /* Height in pixel: 1944 */
0x00, 0x04, 0x1A, 0x5A, /* Min bit rate @30fps (bits/s): 2592 x 1944 x 30 x 10 = 1511654400 */ => Is it correct bit rate for RAW10 @30fps?
0x00, 0x04, 0x1A, 0x5A, /* Max bit rate @30fps (bits/s): 2592 x 1944 x 30 x 10 = 1511654400 */
0xC0, 0x1B, 0x60, 0x00, /* Maximum video frame size in bytes(Deprecated): 2592 x 1944 x 10 / 8 = 5038848 */
//0x00, 0xA0, 0x29, 0x90, /* Min bit rate @30fps (bits/s): 2592 x 1944 x 30 x 16 = 2418647040 */
//0x00, 0xA0, 0x29, 0x90, /* Max bit rate @30fps (bits/s): 2592 x 1944 x 30 x 16 = 2418647040 */
//0x00, 0xC6, 0x99, 0x00, /* Maximum video frame size in bytes(Deprecated): 2592 x 1944 x 16 / 8 = 5038848 */
0x15, 0x16, 0x05, 0x00, /* Default frame interval (in 100ns units): (1/15)x10^7 */
0x01, /* Frame interval type : No of discrete intervals */
0x15, 0x16, 0x05, 0x00, /* Frame interval 3: Same as Default frame interval */
/* Still image descriptor -YUV with QVGA resolution */
0x0A,
0x24,
0x03,
0x00,
0x01, //No of frame Resolutions Follows
0x20,0x0A, //2592x1944
0x98,0x07,
0x00,
#endif /* BAYER_RAW10 */
Show LessI am trying to integrate UVC application with another application.
It is throwing the following error. "No streaming interface found for terminal 4"
But the linux system recognises the uvc camera and enumerates it. Have attached screenshot and descriptor file.
What might be the reason for this?
I have also attached my USB descriptor file.
P.S I have commented out usb2,usb1 descriptor to make things simpler. I am using a computer with USB3 so it is not a problem.
Hi,
I'm working with AN75779 UVC sample code for streaming video data using isoc transfer mode, not bulk mode.
After correcting the desciptor and end point configuration, I confirmed normal recongition(enumeration) in isoc mode.
But, when I streaming video via AMCAP, it fails always. ("This graph cannot preview" message window occurs)
In bulk mode, it works normally well.
Using the UART log, I reviewed the difference part between bulk and isoc mode log.
And I discovered that the commit control is not issued on video streaming request sequence in isoc mode.
As I know, after a correct streaming parameters has been obtained by probe control,
commit control is generated after that.
In UVC.c file, I added a log as below.
static void UVCHandleVideoStreamingRqts (void)
{
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
uint16_t readCount;
dbg(4, " UVCHandleVideoStreamingRqts : %d %d \r\n", wValue, bRequest);
~~~~~~~~~
}
But, I could't find a log that wValue equals to 0x0200(=commit control).
I don't know why commit contorl has not issed.
Please let me know if I'm missing something or if you need additional information.
Thanks in advance.
Show LessHi
I have downloaded the newest version of an75779 dated 20/8-2017, and implemented it on my custom board.
This version fixed the frame freeze issue i had. But it will not start the video stream on Mac OS, Windows 7, 10 and Linux works fine.
The debugprintout looks like this:
UsbEventCB: Detected SS USB Connection
Application Started
Clear feature request detected...
Application Stopped
Clear feature request detected...
Application Stopped
Clear feature request detected...
Application Stopped
Clear feature request detected...
Application Stopped
But no picture on the Mac
I can get working, with this change in the code:
case CY_U3P_USB_TARGET_ENDPT:
if( bRequest == CY_U3P_USB_SC_CLEAR_FEATURE )
{
if( wIndex == CY_FX_EP_BULK_VIDEO )
{
/* Windows OS sends Clear Feature Request after it stops streaming,
* however MAC OS sends clear feature request right after it sends a
* Commit -> SET_CUR request. Hence, stop the video streaming and clear
* the stall condition and sequence numbers */
CyU3PDebugPrint (4, "Clear feature request detected...\r\n");
/* Clear the stall condition and sequence numbers. */
CyU3PUsbStall( CY_FX_EP_BULK_VIDEO, CyFalse, CyTrue );
// CyFxUVCApplnAbortHandler();
uvcHandleReq = CyTrue;
/* Complete Control request handshake */
CyU3PUsbAckSetup();
}
}
break;
By not running the CyFxUVCApplnAbortHandler(); function.
Can this be right?
best regards
Jesper Svanberg
Show LessI would like assistance with the following questions:
1) Changing the GPIF bus width at run-time : Consider an application where the image sensor produces 12-bit data. We may want to capture all 12 bits of image data, or just the most-significant 8 bits, depending on the user selection at run-time. This calls for the firmware to change its behavior (at run-time). I did a little digging myself and came across some material that other developers had put up for achieving the same result. Basically, they had suggested the following steps:
CyU3PUsbAckSetup();
CyU3PGpifDisable(1);
CyFxGpifRegValue[1] = 0x00000003; // 8-bit or use CyFxGpifRegValue[1]=0x00000067; for 16 bit
retstatus = CyU3PGpifLoad(&CyFxGpifCon g);
if(retstatus != CY_U3P_SUCCESS)
CyU3PDebugPrint(1,"\r\n gpi oad failed error %x \r\n",retstatus);
retstatus = CyU3PGpifSMStart(0,0);
if(retstatus != 0)
CyU3PDebugPrint(1,"\r\n gpifsmstart failed error %x \r\n",retstatus);
Is the sequence suggested above correct?
2) Getting FX3 to work with non-UVC platforms, preferable a fully-pledged USB3 Vision standard : I have seen some scattered material in the community posts, but there needs to be an official Application Note, or better still a fully-working template that can be customized to different sensors. The market and technical need for such Application Note exists already.
3) Modifying the example that comes with the Application Note AN75779 to make a new application is problematic : Based on my experience, renaming the application breaks the tool-chain. A work-around is to have multiple copies of the same application in different Work Spaces, and name each Work Space to reflect the image sensor being used. This is not acceptable in an industrial/business environment. The ideal solution is to have a new template for imaging application. This allows people to create a new project (with a unique name) which makes the management of projects much easier.
Thanks in advance,
Mo
Show LessI need some help selecting the optimum voltage for VIO1. In particular, I am interested in anyone's real-life experience of using different voltages (1.8, 2.5, and 3.3 volts) at different frequencies. For example, if the FX3 is operated at 100 MHz, can the I/Os be truly driven at 3.3 volts?, Or do I need to go for 1.8 volts to minimize noise?
What would be (really) nice to have is a table that shows the maximum frequency that can be reliably achieved at each voltage.
Thanks,
Mo
Show Less