W tej serii artykułów przyjrzymy się różnym typom protokołów komunikacji szeregowej dostępnych do przesyłania informacji między mikrokontrolerami, urządzeniami produkującymi i przetwarzającymi dane oraz innymi inteligentnymi urządzeniami. Artykuły, które następują po tym wprowadzeniu do komunikacji szeregowej, omówią niektóre z bardziej popularnych protokołów powszechnie używanych. Na koniec tej serii podsumujemy zalety i wady każdego z nich. Mamy nadzieję, że ten zasób okaże się cenny, kiedy znajdziesz się w sytuacji, w której potrzebujesz zaimplementować magistralę komunikacji szeregowej, pomagając Ci wybrać najlepszą opcję dla Twoich konkretnych okoliczności.
W dzisiejszych czasach elektronika cyfrowa stała się najważniejszą częścią większości urządzeń elektronicznych dostępnych na rynku. Wiele różnych układów scalonych jest używanych, gdzie ich złożone operacje zależą od informacji wysyłanych do i z innych podobnych komponentów cyfrowych. Stworzono wspólne standardy protokołów, aby umożliwić komunikację między nimi. Wyobraź sobie, że każdy układ scalony lub urządzenie komunikowałoby się za pomocą swojego unikalnego protokołu. Byłoby to tak, jakby każdy człowiek mówił swoim unikalnym językiem. Byłoby to chaos, ponieważ byłoby prawie niemożliwe, abyśmy mogli się nawzajem zrozumieć.
Aktualnie dysponujemy różnymi układami pamięci IC, cyfrowymi czujnikami, urządzeniami ochronnymi, programowalnymi zasilaczami, cyfrowymi potencjometrami, układami radiowymi IC itp. Wszystkie muszą komunikować się między sobą lub z mikrokontrolerami, mikroprocesorami, FPGA lub ASIC. Cel tych komunikacji między urządzeniami może być bardzo różny. Może to być programowanie w celu ekstrakcji informacji, dostarczanie sygnału w celu zainicjowania wykonania akcji.
Ponadto, niektóre protokoły dają nam, ludziom, możliwość interakcji z układami IC za pomocą mikrokontrolerów. Możesz wysłać sygnał do mikrokontrolera, który jest zaprogramowany, aby wysłać sygnał do układu IC za pomocą jednego z tych protokołów. Alternatywnie, możesz połączyć się z jednym z dostępnych narzędzi debugowania.
Jednym z problemów związanych z komunikacją szeregową jest trudność w znalezieniu i debugowaniu obwodu, gdy coś pójdzie nie tak. Załóżmy, że dane nie są przesyłane z jednego urządzenia do drugiego. W takim przypadku usterka może występować w jednym lub więcej z następujących miejsc: w logice urządzenia nadawczego, w jego projekcie obwodu, w sposobie kodowania komunikacji szeregowej, w magistrali komunikacyjnej, w dekodowaniu przez odbiornik, w projekcie obwodu odbiornika lub wreszcie w logice odbiornika. Przyłożenie sondy oscyloskopu do komunikacji szeregowej może pozwolić zobaczyć, czy występuje jakakolwiek aktywność, ale niewiele powie o jej ważności. Aby w pełni zobaczyć, co się dzieje, potrzebny będzie oscyloskop z funkcją dekodowania lub analizator logiki. Pozwoli to na poznanie impulsów napięciowych przemieszczających się przez impuls do znajdowania usterki poziomów napięcia, identyfikacji problemów z zakłóceniami oraz poszukiwaniu problemów z szybkością narastania i opadania sygnału.
Jednak aby dokładnie zdebugować komunikację szeregową, potrzebny jest narzędzie, które może zdekodować dane na magistrali, aby sprawdzić, czy są poprawne, czy zostały uszkodzone lub dotknięte kolizjami. Stworzono znaczną liczbę narzędzi do debugowania specjalnie do debugowania komunikacji między urządzeniami lub układami scalonymi. Jednym ze standardowych w branży analizatorów logiki jest seria analizatorów logiki Saleae Logic, przy czym model Pro oferuje wystarczającą szybkość do analizy wszystkich najpopularniejszych protokołów.
Wiele tańszych analizatorów logiki jest zbyt wolnych, aby obsłużyć protokoły o wyższej prędkości, takie jak SPI. Analizator logiki LA2016 oferuje prędkości próbkowania pomiędzy Saleae Logic 8 a Logic 8 Pro za bardzo niską cenę; posiadam jeden i używałem go z dużym powodzeniem do analizy protokołów.
Ponadto, rozważenie protokołów komunikacyjnych jest kluczowe zarówno dla projektowania firmware, jak i sprzętu. Od strony sprzętowej, zawsze należy dokładnie przejrzeć kartę katalogową wybranego mikrokontrolera. MCU mogą komunikować się tylko z predefiniowanymi protokołami za pomocą dedykowanych pinów. Projektant będzie musiał zdecydować, jakie układy scalone będą używane i jakie protokoły będą wymagały z góry przed wyborem swojego MCU.
Na przykład urządzenie STMicroelectronics STM32F103C8T6 zamontowane na popularnej płytce rozwojowej STM32 Blue Pill zawiera 2 x I2C, 3 x USART, 2 x SPI oraz 1 x CAN interfejsy komunikacyjne. Jednak niektóre z pinów dla tych protokołów komunikacyjnych są współdzielone. Na przykład, jeśli spojrzymy na pin 14 urządzenia, który jest oznaczony jako PA4. Ten pin posiada zarówno funkcje USART jak i SPI. Oznacza to, że nie możesz używać wszystkich wymienionych interfejsów SPI i USART dla swojego projektu jednocześnie. Musisz wybrać, których potrzebujesz kiedy i planować odpowiednio lub szukać innego mikrokontrolera, który obsługuje więcej interfejsów komunikacyjnych. Oczywiście, pin PA4 może być używany dla obu protokołów komunikacyjnych poprzez zmianę jego konfiguracji w trakcie działania. Jednak nadal musisz dokładnie rozważyć, w jakich momentach będzie używany do funkcjonowania, ponieważ nie mogą być używane jednocześnie. Zwiększy to zarówno złożoność projektowania sprzętu, jak i oprogramowania układowego.
Piny komunikacji szeregowej w mikrokontrolerach mogą się pokrywać, więc czytaj dokumentacje uważnie. Musisz pobrać i użyć odpowiedniego modułu biblioteki komunikacji IC w oparciu o to, jakie protokoły urządzenie będzie używać do komunikacji ze strony oprogramowania układowego.
Chociaż istnieje wiele protokołów komunikacyjnych, najpopularniejsze z nich to SPI i I2C. Każdy z protokołów ma swoje zastosowania, prędkości komunikacji, rozważania dotyczące projektowania, zalety i wady. Przejdziemy przez każdy z nich kolejno w tej serii artykułów.
W następnym artykule tej serii przyjrzymy się popularnemu urządzeniu UART i omówimy niektóre z jego zalet oraz szczegóły implementacji. Zakończymy serię, porównując różne protokoły, podkreślając ich kluczowe zalety i wady.
Masz więcej pytań? Zadzwoń do eksperta w Altium i dowiedz się, jak możemy pomóc Ci w Twoim kolejnym projekcie PCB.