0

We are developing USB device on STM32F7xx FS port. There is a limited number of endpoints (0 control and 5 for data) to use. We want to enumerate our device as 3 CDC-ACM ports. Every USB CDC-ACM has use three endpoints:

  1. interrupt
  2. data IN.
  3. data OUT.

Usage of endpoints looks like that

EP | OUT         | IN
---+-------------+-----------
1  |             | INTERRUPT 1
2  | BULK 1      | BULK 1
3  |             | INTERRUPT 2
4  | BULK 2      | BULK 2
5  |             | 

Where to put third CDC-ACM ? Is possible to declare one of our CDC-ACMs with only BULK data endpoints, without INTERRUPT endpoint?

J_S
  • 2,985
  • 3
  • 15
  • 38
s.paszko
  • 633
  • 1
  • 7
  • 21

1 Answers1

4

It's not the best answer but from my investigation :

Every CDC-ACM line must have two interfaces configured:

  • Data interface – requires one Bulk IN and one Bulk OUT endpoint.
  • Communications interface – requires one Interrupt IN endpoint.

For control communication it uses:

  • the USB control channel to send line control information from the host to the serial port on theembedded system.
  • the Interrupt IN USB endpoint to send line status information from the serial port on theembedded system to the USB host.
  • Line control and status information is typically ignored if the serial port is virtual
  • The built-in windows XP driver ignores notifications.

It's possible to set CDC-ACM INTERRUPT endpoint to number not handled in STM32F7xx (above > 7). Enumeration with host linux will be sucessfully, communication data will arrive but interrupt data will be lost. From my tests(not finished) there is a problem with connect/disconnect indication.

s.paszko
  • 633
  • 1
  • 7
  • 21