Hallo,
ich habe ein STM32 Board, bei welchem keine zweite USB - Anschluss (bis
auf die Debugger - Schnittstelle) ausgeführt ist. Es sind die Anschlüsse
für USB_DM und USB_DP zwar vorhanden, aber ich wollte darauf verzichten
sondern über die USB - Debugger - Schnittstelle die Kommunikation (CDC -
Klasse /Device) aufbauen. Jedoch scheitere ich derzeit daran, da stets
nur die bereits bestehende Schnittstelle "STMicroelectronics STLink
Virtual COM Port" und nicht die über HAL - konfigurierte CDC
Schnittstelle im Gerätemanager (Windows 10) angezeigt wird.
Könnte mir jemand sagen, ob das überhaupt funktionieren kann, oder was
ich falsch gemacht habe. Falls ihr es benötigt, kann ich auch das
Projekt hochladen.
Einstellungen:
USB - CDC FS Device
Ich habe das Debugging über das Konfigurationstool deaktiviert.
NUCLEO-L432KC: https://os.mbed.com/platforms/ST-Nucleo-L432KC/
Da habe ich das LineCoding eingefügt. Ansonsten habe ich nichts
verändert.
usbd_cdc_if.c
1 | USBD_CDC_LineCodingTypeDef linecoding =
|
2 | {
|
3 | 115200, /* baud rate*/
|
4 | 0x00, /* stop bits-1*/
|
5 | 0x00, /* parity - none*/
|
6 | 0x08 /* nb. of bits 8*/
|
7 | };
|
8 |
|
9 | static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length)
|
10 | {
|
11 | /* USER CODE BEGIN 5 */
|
12 | switch(cmd)
|
13 | {
|
14 | case CDC_SEND_ENCAPSULATED_COMMAND:
|
15 |
|
16 | break;
|
17 |
|
18 | case CDC_GET_ENCAPSULATED_RESPONSE:
|
19 |
|
20 | break;
|
21 |
|
22 | case CDC_SET_COMM_FEATURE:
|
23 |
|
24 | break;
|
25 |
|
26 | case CDC_GET_COMM_FEATURE:
|
27 |
|
28 | break;
|
29 |
|
30 | case CDC_CLEAR_COMM_FEATURE:
|
31 |
|
32 | break;
|
33 |
|
34 | case CDC_SET_LINE_CODING:
|
35 | linecoding.bitrate = (uint32_t)(pbuf[0] | (pbuf[1] << 8) |\
|
36 | (pbuf[2] << 16) | (pbuf[3] << 24));
|
37 | linecoding.format = pbuf[4];
|
38 | linecoding.paritytype = pbuf[5];
|
39 | linecoding.datatype = pbuf[6];
|
40 | break;
|
41 |
|
42 | case CDC_GET_LINE_CODING:
|
43 | pbuf[0] = (uint8_t)(linecoding.bitrate);
|
44 | pbuf[1] = (uint8_t)(linecoding.bitrate >> 8);
|
45 | pbuf[2] = (uint8_t)(linecoding.bitrate >> 16);
|
46 | pbuf[3] = (uint8_t)(linecoding.bitrate >> 24);
|
47 | pbuf[4] = linecoding.format;
|
48 | pbuf[5] = linecoding.paritytype;
|
49 | pbuf[6] = linecoding.datatype;
|
50 | break;
|
51 |
|
52 | case CDC_SET_CONTROL_LINE_STATE:
|
53 |
|
54 | break;
|
55 |
|
56 | case CDC_SEND_BREAK:
|
57 |
|
58 | break;
|
59 |
|
60 | default:
|
61 | break;
|
62 | }
|
63 |
|
64 | return (USBD_OK);
|
65 | /* USER CODE END 5 */
|
66 | }
|