This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

USB CDC descriptor doubt

Hi!

First of all, some information:
I'm starting a project using LPC2388 (I have MCB2000 board) and I'm new to ARM. In this project we have some code provided by other company to speed up our development, a kind of library to access some functions like USB, UART, SPI, etc.
The code we have for USB is based on Keil's USBCDC, and it is ported to work with FreeRTOS. We have to use CDC because this project is supposed to act as a Modbus Slave and should be compatible with the softwares we have (using a USB-Serial converter is not desirable).
For testing purposes, we are echoing all data receive by USB, and it works fine, apparently we have no data loss. I use teraterm and I don't send more than 256 bytes at a time.

Now my question:
I noticed that in the descriptor they have defined the max size of the bulk endpoints in 256 bytes. As far as I know, the max size of a bulk endpoint (for a full-speed device) is 64 bytes, but please correct me if I'm wrong. So, I don't understand how it is working!
I tried to simply change the max size in the descriptor, but then I have data loss. This is probably happening because the code provided doesn't handle ZLP and it's not dividing data in 64 (or whatever is the proper max size) bytes packets.
I also tried to use a USB sniffer (software - I have Snoopy and USBlyzer) but I got more confused. I always see the host sending up to 100 bytes packets, no matter the max size defined (64 or 256 bytes).

Thanks in advance!
Regards
Elisandra