USB superspeed peripherals Forum Discussions
Our FX3-based application will require full-duplex audio support so as to stream audio data both to the USB host, and from the USB host. I see that the Cypress FX3 USB Audio Class Example implements a USB audio class device that streams audio data to the USB host. Are there any examples available that demonstrate streaming USB playback audio from the USB host to the FX3?
Show LessHi, I'm developing USB3.0 cam solution using FX3. I'm testing codes on my board following AN75779, and there is some confusing point.
FV, LV signals are active high in the example. In my board, I'm using vertical sync(short pulses between frame) as FV, so I think it should be considered as active low.
In State machine, there are transitions using FV or !FV. The problem is this. Is FV means real H signal in state diagram or activated signal?
I have input this signal as active low in interface definition, so activated state means L signal.
This is quite confusing. Please somebody who know this help me.
Show LessI am considering using USB3.1 to replace a traditional frame grabber in an imaging application. The FX3/CX3 data sheet example list 1920x1280x16bit @ 30fps as the maximum image size. I would like to capture images at 32768x2048x8bit @ 30fps. Can I do this, or does the PC side only allow the more standard TV type images sizes?
Show LessIf I want to use USB audio mono out with CX3, what is the best method among below
a) Auto DMA USB endpoint to I2S Left channel alone, I2S right channel uninitialized.
b) Manual DMA USB endpoint to CPU and from CPU to I2S Left channel alone, I2S right channel uninitialized.
I have tried (a), with I2S continuous mode as below.
/* Configure the I2S interface. */
CyU3PMemSet ((uint8_t *)&i2sCfg, 0, sizeof (i2sCfg));
i2sCfg.isMono = CyTrue;
i2sCfg.isLsbFirst = CyFalse;
i2sCfg.isDma = CyTrue;
i2sCfg.padMode = CY_U3P_I2S_PAD_MODE_CONTINUOUS;
i2sCfg.sampleRate = CY_U3P_I2S_SAMPLE_RATE_44_1KHz;
i2sCfg.sampleWidth = CY_U3P_I2S_WIDTH_16_BIT;
status = CyU3PI2sSetConfig (&i2sCfg, NULL);
.
.
.
.
.
/* Create a DMA Auto channel between two sockets of the
* U port and the L and R I2S sockets. DMA size is set
* based on the USB speed. */
dmaCfg.size = size;
dmaCfg.count = 4;
dmaCfg.prodSckId = SOCKET_ID_CX3_UAC_SPK_PRODUCER;
dmaCfg.consSckId = CY_U3P_LPP_SOCKET_I2S_LEFT;
dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaCfg.notification = 0;
dmaCfg.cb = NULL;
dmaCfg.prodHeader = 0;
dmaCfg.prodFooter = 0;
dmaCfg.consHeader = 0;
dmaCfg.prodAvailCount = 0;
status = CyU3PDmaChannelCreate (&glCX3_UAC_I2sLeftCh,
CY_U3P_DMA_TYPE_AUTO, &dmaCfg);
if (status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PDmaChannelCreate failed, Error code = %d\n", status);
CyFxAppErrorHandler(status);
}
When I stream audio from the host (Android/Linux/Windows), I am hearing a tick noise every 1 second. This can be removed by changing the 'i2sCfg.padMode = CY_U3P_I2S_PAD_MODE_CONTINUOUS; ' as 'i2sCfg.padMode =
CY_U3P_I2S_PAD_MODE_NORMAL; '. But, then there a small background noise along with audio comes.
My descriptors advertise it as 44.1kHZ, 16 bit per sample mono audio device with bInterval=4. Cannot share the project.
1) What can be the source of such periodic 'tick' noise?
2) What shall be the suggested I2S padMode for I2S setting?
3) Manual DMA or Auto DMA best method people use for USB audio out applications?
4) Any reference code for a working prototype of USB audio out?
Show LessDear Sir,
I wan to to debug mipi block in CX3 ,for example, those counts error in mipi block, because video disappears occasionally. I enable these two MACRO
/* Uncomment the following line to provide verbose debug logging. */
#define CX3_DEBUG_ENABLED 1
/* Uncomment the following line to run the mipi error thread */
#define CX3_ERROR_THREAD_ENABLE 1
I had seen this mipi-error thread code in other uvc.c(thread create location) , But I cannot find mipi-error thread in my uvc.c , it is generated by eclipse suite.
Can anybody tell me why?
Thanks.
David
The following section is from uvc.c
/* Application define function which creates the threads. */
void
CyFxApplicationDefine (
void)
{
void *ptr = NULL;
uint32_t apiRetStatus = CY_U3P_SUCCESS;
/* Allocate the memory for the thread and create the thread */
ptr = CyU3PMemAlloc (UVC_APP_THREAD_STACK);
if (ptr == NULL)
goto StartupError;
apiRetStatus = CyU3PThreadCreate (&uvcAppThread, /* UVC Thread structure */
"30:UVC_app_thread", /* Thread Id and name */
CyCx3UvcAppThread_Entry, /* UVC Application Thread Entry function */
0, /* No input parameter to thread */
ptr, /* Pointer to the allocated thread stack */
UVC_APP_THREAD_STACK, /* UVC Application Thread stack size */
UVC_APP_THREAD_PRIORITY, /* UVC Application Thread priority */
UVC_APP_THREAD_PRIORITY, /* Pre-emption threshold */
CYU3P_NO_TIME_SLICE, /* No time slice for the application thread */
CYU3P_AUTO_START /* Start the Thread immediately */
);
/* Check the return code */
if (apiRetStatus != CY_U3P_SUCCESS)
goto StartupError;
/* Create GPIO application event group */
if (CyU3PEventCreate(&glCx3Event) != CY_U3P_SUCCESS)
goto StartupError;
#ifdef STILL_CAPTURE_ENABLE
/* Create GPIO application event group for still image related events */
if (CyU3PEventCreate(&glStillImageEvent) != CY_U3P_SUCCESS)
goto StartupError;
#endif
return;
StartupError:
{
/* Failed to create threads and objects required for the application. This is a fatal error and we cannot
* continue.
*/
/* Add custom recovery or debug actions here */
while(1);
}
}
Show LessHello everyone, I am stuck on a problem about cyusb3014.
I designed a PCB with cyusb3014-BZXI , the schematic of the PCB is almost copied by my previous project (the part of cyusb3014 in that project was working well so far).
So recently I start to debug my new PCB.
I have checked the voltage of cyusb3014 (vbus, 1.2v, 3.3v), have checked pmode pins without short circuit.
The pmode[2:0] = 0Z1 for SPI boot first.(pmode pins are pull UP/DOWN with register and no connected with fpga)
When I plug usb3.0 cable on the board, 'Cypress Benicia USB Boot Device' is shown on the list in Control Center. This is very strange because I never seen this info before( I have desinged several PCB about cyusb3014 and all work well ).
Then I try to program Slavefifo.img to SPI, and the control center shows "programing of SPI FLSH succeeded".
I replug the cable but 'Cypress Benicia USB Boot Device' still show on the list......
I checked two same board , the phenomenon are same.
Therefore, I have some attempt :
1. change new SPI FLASH
2. exchange SPI FLASH between previous board of my previous project and new board in this time
3. change pmode[2:0] to Z11
The above attempts have been tried but 'Cypress Benicia USB Boot Device' still show on the list......
So... I have no idea where the problem might be.
Could anyone give me a cue for this?
thanks!!
Show LessHi
I'm using the Denebola RDK together with a custom camera board. I started from the UVC firmware example and configured the MIPI RX according to my needs. I also enabled debugging mode and the MIPI error thread. The camera board I'm using is a custom design with my own FPGA implementation of a MIPI CSI-2 TX. It is likely that I have a few bugs there but I have no way of testing it (apart from simulation) because I don't have a high-end oscilloscope. I tought that I could use the CX3 for debugging. I was expecting that I could hook it up and that I would observe some MIPI errors from the MIPI error thread. However, I don't receive any errors. I'm explicitly printing the error count every 5 seconds and it always returns 0. I'm also printing the state of the GPIF state machine and it seems to be locked in state = 2. What could be possible problems and why don't I receive any MIPI error messages?
Thanks,
Marc
Show LessThe an84868 configure fpga in slave serial mode. after cinfiguration FPGA can communicate FX3 in slave fifo mode in this example. If I hope to make a modification on the mode of FPGA configuration to slave selectmap32, hoping fpga can still communacate FX3 in slave FIFO32 mode after configuration. I have read an87216,it shows me how to use FX3 in master mode and may solve the configuration problem . It uses state machine in gpif2, and slave fifo also needs the design of state machine in gpif2,will they confilict?
Show LessI'm getting an unusual situation with my GPIF bus running as basically a raw dump of a 16-bit wide bus at 100 MHz going into my isochronous USB buffer.
The flag CYU3P_PIB_ERR_THR0_WR_OVERRUN is called ALL the time. It "looks" like all my data is getting through, though. What would cause this to trigger continuously?
Can I ignore the flag?
Show Less