USB superspeed peripherals Forum Discussions
System: win11
The driver has been properly installed, and the factory default routine can run normally when I2C is started or USB is started.
Select USB to boot, and after downloading the cyfxusbuart firmware, the device manager shows that the configuration descriptor is invalid.
May I ask if this is a driving problem?
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/%E8%B6%85%E9%AB%98%E9%80%9FUSB%E5%A4%96%E8%AE%BE/CYUSB3KIT-003%E5%BC%80%E5%8F%91%E6%9D%BFcyfxusbuart%E4%BE%8B%E7%A8%8B-%E9%85%8D%E7%BD%AE%E6%8F%8F%E8%BF%B0%E7%AC%A6%E6%97%A0%E6%95%88%E6%9E%9A%E4%B8%BE%E5%A4%B1%E8%B4%A5/td-p/653370
Show LessI am implementing a UVC application using a manual, 2 socket, many-to-one DMA. We are encountering output buffer overruns so I would like to send error packets to the sink to notify of this issue. Reading the UVC spec, it seems I can send UVC packets containing just the UVC header and error bit set for the duration of the overruns.
The example USBVideoClassBulk manually inserts buffers into a DMA channel with no buffers however I would be inserting into a DMA with 2 buffers per socket.
Is this understanding correct? If so, how can I insert an empty buffer into the existing DMA channel? If I am incorrect, how should I handle the output buffer overruns?
Show LessHello,
I'm debug the CYUSB3014 evb board base on the an75779 demo code, when I enable the USB_DEBUG_INTERFACE in uvc.h, and install the driver, but when I use the Control Center, it only can write once, and need write success again, I add a printf in the UVCAppEP0Thread_Entry, it nerver goto this function, I think it doesn't make sense, I attach the project, can you give some suggestions, thanks.
Show Less
We want to test the Synchronous transfer mode, can you provide the example?The example in SDK is bulk mode,Is there a tutorial if we modify it, or just fix descriptors in USB dscr?
Show LessCYUSB3014 is used, and its firmware is expected to be downloaded to the EEPROM through IIC, but the download failed. The EEPROM is 24LC1025-I/SN. The following is the schematic diagram.
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/%E8%B6%85%E9%AB%98%E9%80%9FUSB%E5%A4%96%E8%AE%BE/CYUSB3014%E7%9A%84%E5%9B%BA%E4%BB%B6%E6%97%A0%E6%B3%95%E4%B8%8B%E8%BD%BD%E5%88%B0EEPROM/td-p/648558
Show LessHello,
I am starting work with FX3 chipset, and follow appnote AP75705 example USB Bulk Loop Auto.
I have compile the code; Program the board via "Control center", I am having problem when trying to perform BULK transfer,
once I hit button "Transfer data Out" I am getting error 997:
BULK OUT transfer
BULK OUT transfer failed with Error Code:997
I have search support forums and find two similar topics:
I have tried to update driver on PC, didnt help.
I wasnt clear about how to change "endpoint timeout" at control center application, suggested in one of the postings above.
Also, if there is anything else what can be done to get the application up running, please advise at your earliest convenience.
Regards,
Stalker
Show Less
I am working on a project where we would like to connect an ADC directly to the FX3 and send to the host only alternate samples (i.e. every other sample); for instance the GPIF II PCLK would be running at 100MHz, but the samples sent to the host would be at a rate of 50MHz.
Is this possible using the GPIF II state machine? If so, do you know of a similar project to see how they did it (without using an FPGA)?
Thanks in advance,
Franco
Show LessHello,
I'm debuging the USB MSC on the CYUSB3014 board, I check the demo code(USBMassStorageDemo), it define the buffer on the ram, I want to write all data into spi flash, so I change the buffer to 32KB, and modify the CY_FX_MSC_CARD_CAPACITY to 4*1024*1024, and handle the write and read operations as below, spilt the data into many slice of 4096, but it doesn't work, I attach the code, can you give some suggestions, thanks a lot.
case CY_FX_MSC_SCSI_READ_10:
{
startAddr = (((uint32_t)glMscCbwBuffer[17] << 24) | ((uint32_t)glMscCbwBuffer[18] << 16) |
((uint32_t)glMscCbwBuffer[19] << 😎 | ((uint32_t)glMscCbwBuffer[20]));
numBlks = (((uint16_t)glMscCbwBuffer[22] << 😎 | ((uint16_t)glMscCbwBuffer[23]));
if (!CyFxMscApplnCheckCbwParams (lun, CyTrue, CyTrue, CyTrue, (numBlks * glLunBlkSize),
&dataLength))
break;
glMscState = CY_FX_MSC_STATE_DATA;
for(int i=0;i<numBlks;i++)
{
CyFxSpiTransfer ((startAddr) * glLunBlkSize,glLunBlkSize, glMscStorageDeviceMemory,1);
status = CyFxMscApplnSendDataToHost ((glMscStorageDeviceMemory),
(glLunBlkSize));
startAddr++;
CyU3PDmaChannelWaitForCompletion (&glChHandleMscIn, CYU3P_WAIT_FOREVER);
}
if (status != CY_U3P_SUCCESS)
{
glMscCmdStatus = 1;
glSensePtr = CY_FX_MSC_SENSE_CRC_ERROR;
CyU3PEventSet (&glMscAppEvent, CY_FX_MSC_SIBCB_EVENT_FLAG, CYU3P_EVENT_OR);
}
else
glMscResidue = 0;
}
case CY_FX_MSC_SCSI_WRITE_10:
{
startAddr = (((uint32_t)glMscCbwBuffer[17] << 24) | ((uint32_t)glMscCbwBuffer[18] << 16) |
((uint32_t)glMscCbwBuffer[19] << 😎 | ((uint32_t)glMscCbwBuffer[20]));
numBlks = (((uint16_t)glMscCbwBuffer[22] << 😎 | ((uint16_t)glMscCbwBuffer[23]));
if (!CyFxMscApplnCheckCbwParams (lun, CyTrue, CyFalse, CyTrue, (numBlks * glLunBlkSize),
&dataLength))
break;
glMscState = CY_FX_MSC_STATE_DATA;
for(int i=0;i<numBlks;i++)
{
status = CyFxMscApplnReceiveUsbData (glMscStorageDeviceMemory,(glLunBlkSize));
CyU3PDmaChannelWaitForCompletion (&glChHandleMscOut, CYU3P_WAIT_FOREVER);
W25QXX_SectorErase4KB(startAddr);
CyFxSpiTransfer ((startAddr) * glLunBlkSize,glLunBlkSize,glMscStorageDeviceMemory,0);
W25QXX_Wait_Busy();
startAddr++;
//CyU3PDebugPrint (4, "ReceiveUsbData num = %d\r\n", i);
}
CyU3PDebugPrint (4, "MSC_SCSI_WRITE startAddr %X\n", startAddr);
if (status != CY_U3P_SUCCESS)
{
glMscCmdStatus = 1;
glSensePtr = CY_FX_MSC_SENSE_CRC_ERROR;
CyU3PEventSet (&glMscAppEvent, CY_FX_MSC_SIBCB_EVENT_FLAG, CYU3P_EVENT_OR);
}
else
glMscResidue = 0;
}
glMscStorageDeviceMemory = (uint8_t *)CyU3PDmaBufferAlloc (32*1024);
#define CY_FX_MSC_CARD_CAPACITY (4*1024*1024)
CyFxMscAppInitVars (
void)
{
glLunState = CyTrue;
glLunBlkSize = 4096;
glLunNumBlks = ((CY_FX_MSC_CARD_CAPACITY / 4096) - 1);
glSensePtr = CY_FX_MSC_SENSE_DEVICE_RESET;
glLunStopped = CyFalse;
}
The image is part of my state machine, the data bus is 32 bits. When watermark is set to 1 4-bytes-word, the state machine works well. In this case, the GPIF can continuously transfer data to DMA with no data loss.