Hi,
I use a modified version of Keil's USB CDC-ACM function class implementation. It works really well but I am having a problem in the way I am using it. I use the virtual COM-port to connect as a modem to the host PC. My target connects through PPP to the USB CDC-ACM input/output. This allows me to create multiple sockets for multi-channel TCP/IP communication. This creates the problem! With increasing communication throughput my application showes signs of instability. I am looking for a way how I could limit the data throughput at the USB device level. Could someone provide me with an feasable example of how to achieve this? I appreciate your help - thank you!
-Frank
Good morning Tsuneo,
you suggested: - Select the bulk OUT EP (USB_CTRL) - Check PKT_RDY bit of RX_PLENGTH - if not ready, return
Here is a part of my USB_ReadEP:
USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_RD_EN; cnt = RX_PLENGTH; if ((cnt & PKT_RDY) == 0) { return (0); }
I return if the packet is not ready. The function is then called again in USB_SOF_Event () until a packet is ready and can be processed.
This solution doesn't work! It seems that after selecting the endpoint I have to finish the operation.
Do you know what the problem is?
Thank you! -Frank