Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
STM32 USB/CDC
#12
Witam,

Z braku Discovery F4 zrobiłem test na discovery F429.
Ma on 2 porty USB - HS oraz FS. Port FS jest zajęty przez jakieś peryferium na PCB, ale dostępny jest port HS, który jest wyprowadzony na złącze mikroUSB - dla użytkownika.
W związku, że użyłem portu USB HS, a nie FS jak u Ciebie, nazwa struktury jest hUsbDeviceHS a nie hUsbDeviceFS oraz funkcja wysyłająca przez USB to CDC_Transmit_HS a nie CDC_Transmit_FS.


Konfiguracja wygenerowana najnowszym stm32CubeMX.

Nie zauważyłem żadnych problemów, na które Ty napotkałeś.

Kod testowy:
Kod:
char bufor[128];
uint8_t licznik, rozmiar;

  while (1)
  {

      sprintf(bufor, " id: %u \r\n dev_state:  %u \r\n ep0_state:  %lu \r\n dev_address: %u ",
        hUsbDeviceHS.id, hUsbDeviceHS.dev_state, hUsbDeviceHS.ep0_state, hUsbDeviceHS.dev_address);

      ILI9341_Print_String(0, 0,RED, bufor);


      if (hUsbDeviceHS.dev_state == USBD_STATE_CONFIGURED)
      {

          ILI9341_Print_String(0, 80, BLUE, " USB PODPIETE !!");

      } else
      {

         ILI9341_Print_String(0, 80, BLUE, " USB NIEAKTYWNE !!!");
      }
      

      rozmiar = sprintf(bufor, " Wiadomosc numer: %u   \r\n", licznik);

      CDC_Transmit_HS(bufor, rozmiar);
      ILI9341_Print_String(0, 100, GREEN, bufor);
      licznik++;

  }

A tu jest link do filmiku prezentujący prawidłową pracę, bez względu, czy USB jest podpięte czy odpięte.

Program nie zatrzymuje się na CDC_Transmit_HS(bufor, rozmiar) , gdy USB jest odpięte/nieaktywne. W takim wypadku sprawdzanie, czy port na komputerze jest otwarty/zamknięty nie jest potrzebne.

I widok konsoli terminala:
   
73 Paweł
Odpowiedz


Wiadomości w tym wątku
STM32 USB/CDC - przez SP9RQA - 06-04-2017, 20:14

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości