Hallo,
ich versuche gerade auf meinem eigenen Board mit STM32F103C8 ein CDC
Device ans laufen zu kriegen, um Daten mit dem PC auszutauschen. Nachdem
ich mit den Dateien aus dem Beispielprojekt fürs STM3210E_EVAL Boards
nichts geworden bin (Windows hat ein Virtual COM Port erkannt, aber die
Treiberinstallation hing irgendwie in einer Endlosschleife fest) habe
ich mit STMCube ein CDC Projekt erstellt und damit wird nun auch der
Treiber richtig installiert. Mein Board wird nun als COM10 gelistet und
ich kann das Device auch mit Putty öffnen.
Aber nun stellt sich mir die Frage wie ich nun Daten vom µc aus senden
kann. Ich habe alle Header abgesucht aber keine passende Funktion
gefunden. Ich glaube fast die ist noch nicht mal implementiert. Das
einzige was nach was aussieht wäre vielleicht CDC_Transmit_FS aber die
Implementierung ist selten dämlich:
1 | uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
|
2 | {
|
3 | uint8_t result = USBD_OK;
|
4 | /* USER CODE BEGIN 8 */
|
5 | USBD_CDC_SetTxBuffer(hUsbDevice_0, UserTxBufferFS, Len);
|
6 | result = USBD_CDC_TransmitPacket(hUsbDevice_0);
|
7 | /* USER CODE END 8 */
|
8 | return result;
|
9 | }
|
Die Buf Variable wird dort überhaupt nicht benutzt! Ich habe mal
UserTxBufferFS durch Buf ersetzt und versucht irgendwas zu senden aber
wenn ich das mache dann wird die Platine nicht mal mehr richtig erkannt
sondern als Unknown Device aufgeführt. Ich glaube das ist eher eine
Low-Level Funktion und nicht um direkt Daten zu senden.
Ich habe mal die von STMCube generierten Dateien angehängt.