USB superspeed peripherals Forum Discussions
你好 我做了5块板子 用的3014 ,第一次上电 只有一块板子 可以正常启动,正常烧写ram 和 flash ; 2块板子 PC上完全识别不了 ; 2块板子 ,PC能识别到 ,烧写ram是可以的 ,但是烧写Flash 失败 ;用 USBBulkSourceSink.img 这个固件烧写ram , C++ Stream 软件里面也不能识别Endpoint ;
请问有可能是哪些原因造成的 硬件上该怎么排查
Show LessHi ,
I am using the FX3 with FPGA and it works properly when i send 1024 byte from PC -> FX3 -> FPGA and received 1024 byte from FPGA -> FX3 -> PC with the sync slave fifo mode 16 bit data bus.
As i would like to send a large amount of data e.g. from sensor -> FPGA -> FX3 -> PC.
dmaCfg.size = size; // which is 1024 when it is super speed.
therefore, once i send 1024 byte, the full flag will asserted and need to wait until i received the data and send the next. It will become slow if i use this method.
Therefore, i try to modify dmaCfg.size = 16384; Then, i can send the data continuously from FPGA and it looks good.
*i am using the CY_U3P_DMA_TYPE_MANUAL
However, even i send a command with function bool outEndpoint.XferData(ref outData, ref xferLen), i need to fill in 16384 byte, then it will send it out.
Is there any solution that i can send e.g. 1024 byte, FX3 will also send out the data and do not need to fill in the whole dmaCfg.size. As i only need to use the large buffer when i stream the data from sensor to FX3.
Thanks
Paul
Show LessThe EEPROM of the CYUSB3014-BZXC cannot be burned into the firmware using IIC, every time the burn-in fails, the EEPROM used is 24LC1025-I/SN, and the attachment is our schematic.
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/%E8%B6%85%E9%AB%98%E9%80%9FUSB%E5%A4%96%E8%AE%BE/CYUSB3014-BZXC-%E7%9A%84EEPROM%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8IIC%E7%83%A7%E5%85%A5%E5%9B%BA%E4%BB%B6/td-p/648463
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
Hi All,
am working on ar1820 sensor with CX3 controller .
here taking raw firmware in 10 bits of depth.
it's working fine on some boards exactly out of 10, 5 are working boards and 5 are not working for the boards.
Settings Details:
4 lane - 576Mbpl[MIPI Clock]
24line - 96Mhz[Parallel Clock]
resoution - 4912x3684@9fps.
debugging steps:
1. checked error register on Toshiba
MIPI-CSI Protocol and Physical Layer Errors in CX3... - Infineon Developer Community
it looks Multi-Data Lane Sync Byte Error Count and Unrecoverable Packet Header Error .
thing is Lane sync error happens in lanes 2 and 3 alone.
is there a Lane alignment register present in the Toshiba? or any related solutions?
Thanks for your effort in this matter.
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 LessThe EEPROM of the CYUSB3014-BZXC cannot be burned into the firmware using IIC, every time the burn-in fails, the EEPROM used is 24LC1025-I/SN, and the attachment is our schematic.
The EEPROM of CYUSB3014-BZXC cannot use IIC to burn firmware, and every time the firmware fails, the EEPROM used is 24LC1025-I/SN. Attached is our schematic diagram
smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/%E8%B6%85%E9%AB%98%E9%80%9FUSB%E5%A4%96%E8%AE%BE/CYUSB3014-BZXC-%E7%9A%84EEPROM%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8IIC%E7%83%A7%E5%85%A5%E5%9B%BA%E4%BB%B6/td-p/648437
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;
}