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
Hi
Thanks for your reply, Tsuneo :)
Sure it would be a little dificult to test in every PC in the world ;) I've tested in 5 different PCs, and I just expected to see some failure in this universe. I tought this point of the spec would be more "respected".
Thanks for the link, too. I'll look into it carefully.
Regards, Elisandra