USB superspeed peripherals Forum Discussions
Hi, I'm trying to get the CX3 to work with a csi-2 bridge (toshiba TC358746AXBG). I'm starting with the ez-usb image sensor configuration tool and then i enter the bridge parameters.
Here are the parameter i measured on a scope.
And here are the result that i have. The state machine value is always 0x2 and i got no error from CyU3PMipicsiGetErrors(). I also used CyU3PMipicsiSetPhyTimeDelay(1,0x0B) to set a delay as suggested by the CX3 MIPI interface.
Does it need something else to work ? also, the value i measured on the scope. I also already tried to test if it work in continuous clock mode.
h-active = 30us
h-blank = 6.8 us
V-active = 24.8ms
v-blank = 8.48ms
Thank you for your help
Ps, when i edit some of the parameter ex. h-blank, hs-prepare... nothing change in h and c files. does the compiler directly use the cycx file ?
Show LessHi,
I got continued "CYU3P_PIB_ERR_THR1_RD_UNDERRUN" flag when wrote about 200K data to FPGA with below setting:
GPIF:32bit
DMA buffer size:16384
DMA count:4
host write 16384 every time
Could U help to explain this?
Show LessHi,
We are using FX3 chip and we have already gotten a certified driver with our own VID based on the modified cyusb3.inf. The device is recognized in windows and can be seen in Cypress control center. However, the Cypress sdk ifor C++ does not see the device. CCyUSBDevice->deviceCount always returns 0 unless we use Cypress's VID. What can be the issue? Thanks
(Urgent)
Show LessHi,
I am using an FX3 to stream larger chuncks(~3MB) of data from GPIF to the host though a DMA channel set to AUTO_MANY_TO_ONE. I am triggering the GPIF Callback when reaching the end of the GPIF input data to WrapUp the channel and transmit the last partially filed buffer and end the transmission. I have a smaller chunk of status data (~128bytes) in the FX3s RAM I would like to append at the end of the transmission (that I dont have to transmit it separately).
Is there a way to append data to a BULK transmission in the GPIF callback before wrapping up an AUTO_MANY_TO_ONE DMA channel?
Is CyU3PDmaChannelSetupSendBuffer a way to go?
Thanks in advance.
Show LessHello.
Now I am looking at an example for a CYUSB3KIT-003 kit.
The example is called SRAM.
"3.6.2 SRAM Example"
In source code there is example of reading from memory(file "cyfxsram.c").
CyU3PDebugPrint(4,"Read\n\r");
apiRetStatus = CyU3PGpifSMSwitch (256, START1, 256, 0, 0);
if(apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (CY_FX_DEBUG_PRIORITY, "CyU3PGpifSMSwitch failed, Error code = %d\r\n", apiRetStatus);
}
CyU3PUsbAckSetup ();
isHandled = CyTrue;
But there is no example of writing to memory.
Tell me, is it so?
How can I write to memory?
Show LessHi all,
I want to configure the board as follows.
FPGA <-> FX3 <-> PC (USB 3.1 Gen 1)
At this time, the interface between the FPGA and the FX3 is conceived as a stream in method of the slave FIFO.
The main function is to transfer video data to PC, but I want to use UART communication together.
In case of not transmitting video data, UART communication between PC, FX3 and FPGA is tried to send and receive commands.
If you can, please let me know if you can configure the board in this way.
Show LessGood day.
We made a custom video camera on chip CX3 similar to devkit Denebola.
Sometimes, when running, the current consumption of the microcontroller reaches 1 ampere.
Tell me please, what can it be connected with?
With the wrong setting of clock frequencies and clocking scheme (in particular, plt)?
Or are other reasons possible?
Thank you very much.
Show LessHi! I am trying to do next thing:
After receiving some signal over GPIO, I have to suspend data flow from GPIF to USB in AUTO DMA mode. But I can“t get access buffer to write a signature of that signal. My code is like this/
// Notification event callback
void DmaNotificationEvent(CyU3PDmaChannel *handle, CyU3PDmaCbType_t type, CyU3PDmaCBInput_t *input)
{
if(type == CY_U3P_DMA_CB_CONS_SUSP)
{
}
}
That is code where I“m configuring AUTO DMA channel:
/* Create a DMA AUTO channel for the GPIF to USB transfer. */
CyU3PMemSet ((uint8_t *)&dmaCfg, 0, sizeof (dmaCfg));
dmaCfg.size = CY_FX_DMA_BUF_SIZE;
dmaCfg.count = CY_FX_DMA_BUF_COUNT;
dmaCfg.prodSckId = CY_FX_GPIF_PRODUCER_SOCKET;
dmaCfg.consSckId = CY_FX_EP_CONSUMER_SOCKET;
dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaCfg.notification = CY_U3P_DMA_CB_CONS_SUSP;
dmaCfg.cb = DmaNotificationEvent;
dmaCfg.prodHeader = 0;
dmaCfg.prodFooter = 0;
dmaCfg.consHeader = 0;
dmaCfg.prodAvailCount = 0;
apiRetStatus = CyU3PDmaChannelCreate (&glDmaChHandle, CY_U3P_DMA_TYPE_AUTO, &dmaCfg);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PDmaChannelCreate failed, Error code = %d\n", apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
/* Set DMA Channel transfer size */
apiRetStatus = CyU3PDmaChannelSetXfer (&glDmaChHandle, CY_FX_GPIFTOUSB_DMA_TX_SIZE);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PDmaChannelSetXfer failed, Error code = %d\n", apiRetStatus);
CyFxAppErrorHandler(apiRetStatus);
}
From my thread routine I“m calling that function:
apiRetStatus = CyU3PDmaChannelSetSuspend(&glDmaChHandle, CY_U3P_DMA_SCK_SUSP_NONE, CY_U3P_DMA_SCK_SUSP_CONS_PARTIAL_BUF);
and nothing happens. No call to DmaNotificationEvent() with CY_U3P_DMA_CB_CONS_SUSP event. What is the reason? I could not find any information on that situation. Thank you for your reply in advance!
I have a USB/UART bridge implemented with a MANUAL dma channel. The producer socket is the UART and the consumer is a USB out EP. I want to send debug messages to this consumer socket so that the terminal on the receiving PC will show these messages. The UART/USB bridge currently works (I am testing using a UART loopback). I found in another thread that the CyU3PDmaChannelSetupSendBuffer command can be used to send a different buffer to the consumer socket of a DMA channel.
I've tried this approach but I am not seeing any of the data sent via this method being sent. The UART/USB bridge loopback works fine. I have two terminals open on my pc. One is the USB/UART bridge and the other is connected to the UART RX/TX pins of the FX3. I can type in one terminal and watch the characters appear in the other going both directions.
Is there something I am missing with the parameters of the DMA channel (buffer size, count, type) that would affect the CyU3PDmaChannelSetupSendBuffer API call?
Is there an approach where I can configure firmware logging capability with CyU3PDebugInit to set the socket and still use the CyU3PDebugPrint() function?
Show LessHello,
I'm using CYUSB3014. I need to upload data from FPGA via CYUSB3014 to PC. I use slave_fifo mode and I use FPGA test procedure 'fpga_slavefifo2b_verilog_ok' from cypress, I use the "Streamer" software from cypress, and the Packets per Xfer is 8, the packet length is 8192 bytes, then I see the Transfer Rate is about 120MB/s. But, when I upload the data,which speed is constant 80MB/s. When upload some packets(8*8192bytes) , then I find the sigal "flagb" will keep 0 for some time ,which will result in missing some packetscan not upload. I want to know Why did this happen? is it in sometimes the speed is very low? if I should add a big fifo or DDR to buffer my data. thanks!