Hello,
I create the usb composite cdc msc project, and I'm going to see usb_device_descriptor.c/.h, I don't understand that Bulk IN and Bulk OUT endpoint number is same in the endpoint descriptor of Data Interface descriptor (below picture : Green wire).
I try to change Bulk OUT number 3 to number 5, This change will cause cdc to don't work.
I think it is related to the driver(INF), but not very sure.
Why the Bulk IN and Bulk OUT endpoint number is same?
Best Regards,
Jim
Solved! Go to Solution.
Hi Jim,
Please see the USB 2.0 specification. In section 5.3.1.2, it shows
"Functions can have additional endpoints as required for their implementation. Low-speed functions are
limited to two optional endpoints beyond the two required to implement the Default Control Pipe. Fullspeed
devices can have additional endpoints only limited by the protocol definition (i.e., a maximum of 15
additional input endpoints and 15 additional output endpoints)."
Regards,
Jing
Hi Jing,
I am going to see 5.3.1.2 Non-endpoint Zero Requirements, but the next chapter "5.3.2. Stream Pipes" have describe
Stream pipes deliver data in the data packet portion of bus transactions with no USB-required structure on
the data content. Data flows in at one end of a stream pipe and out the other end in the same order. Stream
pipes are always uni-directional in their communication flow.
A stream pipe to a device is bound to a single device endpoint number in the appropriate direction (i.e.,
corresponding to an IN or OUT token as defined by the protocol layer). The device endpoint number for the
opposite direction can be used for some other stream pipe to the device.
Stream pipes support bulk, isochronous, and interrupt transfer types, which are explained in later sections.
So, I think an endpoints number only set one transmission direction.
Best Regards,
Jim
Hi,
No. For example, the pipe on endpoint 1 out and endpoint 1 in is different pipe, they are different endpoint.
Regards,
jing
Hi Jim,
Please see the USB 2.0 specification. In section 5.3.1.2, it shows
"Functions can have additional endpoints as required for their implementation. Low-speed functions are
limited to two optional endpoints beyond the two required to implement the Default Control Pipe. Fullspeed
devices can have additional endpoints only limited by the protocol definition (i.e., a maximum of 15
additional input endpoints and 15 additional output endpoints)."
Regards,
Jing
Thank you for your reply, I tested that IN and OUT endpoint number is same to work.