2021-10-13 10:51 PM
The STM32F105RBT6 manual shows that there are 1 control endpoint, 3 IN endpoints, 3 OUT endpoints, but the USB driver code generated by CubeMX now shows hpcd_USB_OTG_FS.Init.dev_endpoints = 4; are these 3 IN and OUT endpoints shared? 4 endpoints and 1 is the control endpoint for user-defined use, only 3 are not enough and they are less than the lower-end STM32F103
Solved! Go to Solution.
2021-10-19 09:46 AM
Hello @arilink ,
First let me thank you for your feedback.
In fact, each USB has 1 control end point + x IN EPs + OUT EPs (IN and OUT endpoints are always equal) then the generated value must be x+1.
Thus, dev_endpoints value is correctly generated by CubeMX: hpcd_USB_OTG_FS.Init.dev_endpoints = 4.
Furthermore, backing to STM32F105xx, STM32F107xx, STM32F2xx and STM32F4xx USB On-The-Go host and device library User Manual > OTG_FS interface main features, the OTG_FS interface has four bidirectional endpoints, including 1 control endpoint and 3 device endpoints which support bulk, interrupt and isochronous transfers.
Hope this answers your question, if this this case, please click on the Select as Best button on my reply . This will help other members of the community find this solution more quickly.
Khouloud.
2021-10-19 09:46 AM
Hello @arilink ,
First let me thank you for your feedback.
In fact, each USB has 1 control end point + x IN EPs + OUT EPs (IN and OUT endpoints are always equal) then the generated value must be x+1.
Thus, dev_endpoints value is correctly generated by CubeMX: hpcd_USB_OTG_FS.Init.dev_endpoints = 4.
Furthermore, backing to STM32F105xx, STM32F107xx, STM32F2xx and STM32F4xx USB On-The-Go host and device library User Manual > OTG_FS interface main features, the OTG_FS interface has four bidirectional endpoints, including 1 control endpoint and 3 device endpoints which support bulk, interrupt and isochronous transfers.
Hope this answers your question, if this this case, please click on the Select as Best button on my reply . This will help other members of the community find this solution more quickly.
Khouloud.
2021-10-19 12:37 PM
> only 3 are not enough
Whatever the number is, it's never enough for all possible use modes.
> and they are less than the lower-end STM32F103
The 'F103 has an entirely different USB module, device only, whereas the 'F105/107/'F2/'F4/'F7 and the upper-end 'L4 have device-host-OTG module (of which 'F2/'F4/'F7 have two), with number of endpoints changing from model to model.
JW
2021-10-20 06:45 PM
I see. Thank you very much for your answers
2021-10-20 06:47 PM
I don’t understand why the number of endpoints of high-end models is less than that of low-end models, and 4 endpoints are not enough for USB composite devices.
2021-10-21 12:49 AM
The OTG module is much more complex and probably consumers more silicon space per endpoint.
At the end of the day, why would it matter - just take it as a fact and move on. If 2x3+control EP won't suit your application, choose a different STM32 model (or any other solution out there).
JW