cancel
Showing results for 
Search instead for 
Did you mean: 

USB Host unable to detect endpoint address 8 and above

Vishnudev  K
Associate II
Posted on June 20, 2018 at 16:17

 Iam trying create custom usb device and host .

STM32F429i-disco  is used as usb host.

STM3210-E-Eval is used as device

My current problem is when i configure the device IN endpoint address as 88, it seems not detected by the host.

It was 81 before. I took MSC class eg and modified. I was able to work with 86 endpoint

The problem seems to be with endpoint 8 and above.

Host seems unable to detect.

Please give me some advice. I need to communicate the host with a device using endpoints 88 and 04 finaly.

I was able to communicate with device of address 86 and 02 successfully.

#endpoints #device #usb #stm32f4 #not-detected #host #stm32f1 #stm
9 REPLIES 9
Ben K
Senior III
Posted on June 20, 2018 at 16:26

Note that devices are not required to implement all possible endpoints in hardware (in fact only EP0 is required). For example OTG_FS can have as few as 4 endpoints for both directions in some STM32 devices. Refer to the device datasheet and reference manual for accurate information.

Posted on June 20, 2018 at 16:27

You are saying that STM32F429i doesnt support endpoints more than 4?

But host will get the endpoint from the device ri8?

So it should be able to configure with that?

Posted on June 20, 2018 at 16:34

No, I'm only saying that not all endpoints are implemented in each peripheral. You really should check the available documentation on the number of endpoints supported by each peripheral.

For other device lines where the 'USB' IP is used instead of OTG_FS/HS, the endpoints can be freely assigned to endpoint addresses, but for the OTG cores this isn't possible as far as I know. With these the endpoint addresses are fixed.

Posted on June 20, 2018 at 16:42

Ok.. i didnt understand the difference between  two things USB_IP OTG_FS/HS and OTG cores.

Could you explain some more. 

Posted on June 20, 2018 at 17:15

STM32 microcontrollers are available with two different kinds of USB peripheral on the chip, one of them is simply called 'USB', the other is 'OTG_FS' and OTG_HS'. You can see this in the CubeMX. Using the latter (either OTG_FS or OTG_HS) you cannot control which endpoint addresses you can use, they are fixed.

Posted on June 20, 2018 at 17:29

ok..So OTG is used for HOST support.

Could you tell which stm board supports 16 endpoints, I need to make host communicate with 8th endpoint

Posted on June 20, 2018 at 21:24

In CubeMX select the USB Device under the Peripheral Choice. Note that although the device supports independent endpoint address assignment, the HAL software doesn't support it.

I don't know who writes your requirements, but it's a serious design limitation to have the used endpoints defined by the host software. The host software should read the device configuration and determine the endpoints of the necessary interface by itself.

Posted on June 21, 2018 at 07:40

ya that is what i thought. While debugging the host, the endpoint numbers are changed automaticaly to that of host (in case of 8 also). But for 8th endpoint, host is unable to send/receive anything from device

Vishnudev  K
Associate II
Posted on June 22, 2018 at 08:38

Anyone knows any PC usb host/device simulator. I want to test my device/host with working host/device.

The application should be programmable