USB superspeed peripherals Forum Discussions
Hello
I'm trying to simulate two devices in one firmware application but I've a problem with reenumerating device. I have separate descriptors for each device and I want to switch between them using set_interface and altsetting (and flag glIsHid).
According to USB analyzer after reenabling CyU3PConnectState there is timeout while responding to SET_CONFIGURATION request, unfortunately the situation is the same if I'm not switching the flag and just trying to reenumerate device without changing descriptors. As a base I'm using BulkLoopAutoEnum. Code:
case CY_U3P_USB_SC_SET_INTERFACE:
{ glUsbInterface = wValue;
if(wValue == HID_SWITCH_INTERFACE)
{
CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS;
glIsHid = CyTrue;
apiRetStatus = CyU3PConnectState(CyFalse, CyTrue);
if(apiRetStatus == CY_U3P_SUCCESS)
CyU3PConnectState(CyTrue, CyTrue);
}
}
With separate img each simulated device enumerates properly.
Regards R.
Show LessHi everyone
data flow
pc->>usocket----->>>dma---->>>psockets----GPIF----
FLAGA is dedicated to thread0 ,Flagb is dedicated to thread1,Flagc is dedicated to theread2,and so on.
part code
fx3_DmaCallback_EP2 (....)
void fx3_DmaCallback_EP2 (
CyU3PDmaChannel *chHandle,
CyU3PDmaCbType_t type,
CyU3PDmaCBInput_t *input)
{
//uint16_t index;
CyU3PDmaBuffer_t buf_p,inBuf_p,outBuf_p;
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;
if (type == CY_U3P_DMA_CB_PROD_EVENT)
{
// for debug
status = CyU3PDmaChannelGetBuffer(chHandle,&inBuf_p,CYU3P_NO_WAIT);
status = CyU3PDmaChannelCommitBuffer (chHandle, input->buffer_p.count, 0);
...............................
}
I used CyU3PDmaChannelGetBuffer() API to find data form pc..the CyU3PDmaChannelCommitBuffer () function is return success. my question is why was not the FLAGC signal change
thanks
Hello,
We modified a bit the AN75779 application note example and we noticed this strange behavior on a GPIF state machine with a multi-channel manual-commit dma.
In order to avoid a call to CyU3PDmaMultiChannelSetWrapUp in the code, we replaced the INTR_CPU action in PARTIAL_BUF_IN_SCK* states with a COMMIT. The result is a double commit or at least a double DmaCallback call. The first time we get a partially filled buffer with status = 8 (and this is the expected behavior). The second time we get an empty buffer (count = 0) with an error status (status = 10).
Please notice that in PARTIAL_BUF_IN_SCK* states the "Repeat actions until next transition" checkbox is unchecked and we added a LOGIC_ONE transition to an IDLE state to be shure that the state machine does not remain in the PARTIAL_BUF_IN_SCK* state for more than a clock cycle.
Could you suggest a solution? Is this a GPIF bug?
Thank you very much in advance.
Best regards,
Gianni
Show LessToday experienced application engineers are out of reach, no matter if you deal with Cypress, ADI or Linear. Hope this community can help...
I want to verify the USB3 hardware implemtation (signal integrity etc) on my first prototype board with FX3, to be able to order more prototype boards.
So far I have not been able to "force any example code to run in USB3 only". If I boot example code as UVC or MassStorage it will only run in USB2, and Win7-host tells "This device can perform faster if you connect it to a super-speed USB 3.0 port". I have tried three different PCs with 64-bit Win7. When I compare example code from SDK 1.2 with SDK 1.1 I see differences in descriptor setup.
I have a strong feeling that the issue is related to descriptor setup.
Is the problem caused by Microsoft or Cypress? Have Cypress verified dev.kit+SW on real PC HW with Win7 or only on "professional USB certifying test systems"?
Here and now I need a SYSTEM that works without developing device drivers for windows.
Show LessI am working on a video capture card based on the GPIFII to image sensor (AN75779) document and examples. I have my own board with an FX3 on it. I am using SDK V1.2.
When I set the MultiChannel DMA to have a size of 1024 and a count of 16 I get the CY_U3P_ERROR_MEMORY_ERROR error when I call CyU3PDmaMultiChannelCreate. If I set the count to 10 the call is successful. I know the document says to use the fx3.ld file that comes with the project and I am but I still get the error. I see that there are several changes in the fx3.ld file that comes with the SDK V1.2. What can I do to make this work?
Show LessI am using SDK V1.2 and I can not create a Multi Channel DMA with a size of 1024 and a count of 16. Is it possible to do this with the latest SDK?
Show LessI incorrectly assumed the provided SlafeFifoSync example project used one of the generic templates provided in GPIF II. Then I noticed the SlaveFifoSync example has an extra state, DSS. Anyone know what this state does and where I might find the GPIF II project for this example?
Show Less