trzeba zaimplementować stos urządzenia jako urządzenia CDC ACM (znany również jako wirtualny port COM lub VCP). Większość dostawców mikrokontrolerów z obsługą USB ma przykładowy kod lub uwagi dotyczące aplikacji.
W związku z tym urządzenie będzie wyglądać jak port COM w odniesieniu do systemu Windows. Na końcu urządzenia otrzymasz surowe bloki danych przesyłanych. Odpowiednia warstwa abstrakcji może zostać zaimplementowana dla interfejsów UART i USB, aby zapewnić ten sam interfejs, jeśli to konieczne.
Jedną z nich jest to, że urządzenia USB wymagają identyfikatora dostawcy przydzielonego przez Forum Implementatora USB, pod numerem $5000 fee (poprawny 23 czerwca 2016 r.). Jeśli zamierzasz wypuścić urządzenie na wolność, naprawdę będziesz go potrzebować, jeśli Twoje urządzenie ma być rozpoznawane i zachowywać się poprawnie z innymi urządzeniami. Niektórzy dostawcy mikrokontrolerów pozwalają na używanie ich identyfikatora dostawcy dla podzbioru identyfikatorów produktów za darmo lub za mniejszą opłatą, ale mogą to robić tylko wtedy, gdy kupujesz od nich znaczące ilości urządzeń.
Innym problemem jest to, że w systemach OSX i Linux CDC/ACM jest rozpoznawany bez żadnych dodatkowych sterowników, Windows jest bardziej wybredny i wymaga pliku INF, aby powiązać konkretnego dostawcę USB i identyfikator produktu ze sterownikiem usbser.sys. Następnie wkracza się w cały świat podpisywania sterowników, co jest niezbędne w przypadku korzystania z systemu Windows Vista 64 lub dowolnej wersji systemu Windows 7. Podpisywanie podpisu kodu również będzie kosztować pieniądze. Jeśli twój dostawca podał przykład kodu VCP, prawdopodobnie zapewnią również podpisanego sterownika. Przykład STCP VM STMicroelectronios ma nawet certyfikat WHQL, więc można go uzyskać automatycznie przez Windows Update.
Rezultat jest taki, że w przypadku eksperymentów można to zrobić, jeśli dostawca już dostarcza kod i podpisany sterownik (lub użytkownik nie korzysta z systemu Windows), ale aby wdrożyć produkt, potrzebny będzie identyfikator dostawcy i podpisywanie kodu certyfikat. To szczerze mówiąc, jest to pole minowe.
Prostszym rozwiązaniem jest użycie FTDI USB < -> Chip szeregowy. Jest to szczególnie użyteczne w przypadku mikrokontrolera bez własnego kontrolera USB, ale szybkość przesyłania danych będzie ograniczona przez interfejs mikro i/lub FTDI UART, a nie przez szybkość USB. Chip FTDI może być użyty tak jak jest, używając VID/PID FTDI lub możesz go dostosować za pomocą własnego VID/PID.Dostosowywanie powoduje powrót do konieczności uzyskania identyfikatora VID i certyfikatu podpisu, ale pozwala na unikalne identyfikowanie urządzenia, a nie ogólnego portu szeregowego.
Zdecydowanie za pomocą FTDI jest najlepszym sposobem, aby przejść. – TJD
FTDI? Proszę wytłumacz. Mój menedżer prosi o skonfigurowanie zintegrowanego urządzenia peryferyjnego USB do działania jako UART. O ile mogę powiedzieć, nie jest to możliwe, ale nalega, że tak jest. –
Chipy FTDI konwertują UART na USB. Więc wewnętrznie używałbyś tylko zwykłego urządzenia peryferyjnego UART, ale zewnętrznie podłączasz się przez USB. Po stronie komputera dostajesz wirtualny port COM, dzięki czemu możesz wchodzić z nim w interakcje jako normalny port szeregowy. To jest bardzo czyste i łatwe, i sposób, w jaki wszyscy to robią. Nie mogę sobie wyobrazić, dlaczego naprawdę musiałbyś używać peryferii USB swojego chipa. – TJD