Mikrokontroler STM32 jako konwerter USB na 2xRS232
Sterowniki
Obecnie konwerter działa z systemem operacyjnym Linux. Jako sterownik używany jest moduł CDC_ACM. Bardzo dobrze przemyślana idea budowy sterowników pod tym systemem operacyjnym sprawia, że nie ważne, czy urządzenie udostępnia jeden wirtualny port szeregowy czy większą ich liczbę, pamięć masową, urządzenie interfejsu HID itp. O ile liczba punktów końcowych na to pozwala sterowniki zawsze będą je właściwie obsługiwać.
Po podłączeniu prezentowanego konwertera do komputera wykrywane są 2 urządzenia: /dev/ttyACM0 i /dev/ttyACM1, co można sprawdzić w katalogu /dev/ lub w terminalu komendą dmesg wyświetlającą log systemowy – pod jego koniec powinno widoczne być coś podobnego do:
[ 5564.891091] usb 2-3.3: new full speed USB device using ehci_hcd and address 5 [ 5565.004053] usb 2-3.3: configuration #1 chosen from 1 choice [ 5565.021979] cdc_acm 2-3.3:1.0: This device cannot do calls on its own. It is not a modem. [ 5565.022006] cdc_acm 2-3.3:1.0: ttyACM0: USB ACM device [ 5565.022856] cdc_acm 2-3.3:1.2: This device cannot do calls on its own. It is not a modem. [ 5565.022880] cdc_acm 2-3.3:1.2: ttyACM1: USB ACM device
Plików tych można używać jak normalnych portów szeregowych na Linuksie. Jeżeli pliki urządzeń nie są tworzone, wówczas albo nie mamy załadowanego modułu CDC_ACM albo moduł nie rozpoznaje numerów VendorID i ProductID naszego urządzenia – można wtedy ręcznie podać te numery sterownikowi. Takich urządzeń można oczywiście podpiąć do komputera więcej – będziemy wtedy mieli więcej urządzeń ttyACMx.
Ze względu na specyficzną ideę budowania sterowników w Windows sprawa jest bardziej skomplikowana – sterownik, który jest używany przy firmowym ST demo USB działa tu (po ustawieniu odpowiednich VendorID i ProductID) tylko z pojedynczym wirtualnym portem szeregowym używając systemowego usbser.sys – przy dwóch trzeba niestety zmodyfikować sterownik.