[SPI i I2C] Analiza protokołów szeregowych oscyloskopami Rohde&Schwarz, część 2
Widoczne są dwie opcje związane z sekwencją startową. Są to: sekwencja startowa rozpoczynająca transmisję i tzw. powtórzony start stosowany wtedy, gdy konieczne jest przesłanie adresu odczytu urządzenia Slave. Po pierwszym starcie przesyłany jest adres Slave’a i adres rejestru, z którego będą czytane dane. W rzeczywistości są to dane przesyłane do Slave’a, więc żeby móc z niego czytać należy powtórnie wygenerować sekwencję startu z adresem Slave’a i bitem R/W oznaczającym odczyt. Dalej następuje transmisja danych trwająca do momentu, aż Slave nie wyśle potwierdzenia ACK. Brak bitu potwierdzenia oznacza, że urządzenie nie ma już danych do wysłania. Powinna być więc wygenerowana sekwencja Stop. Sekwencja ta może być również wybierana jako warunek wyzwolenia. Po wybraniu każdej z tych opcji, w dolnej części zakładki jest wyświetlana grafika wyjaśniająca przebieg zdarzenia wyzwalającego. Przykłady wyzwolenia oscyloskopu sekwencją startu, powtórzoną sekwencją startu i sekwencją stopu przedstawiono na rys. 14. Jeśli interfejs jest wykorzystywany intensywnie, z małymi przerwami między kolejnymi transmisjami, wybór sekwencji startu lub stopu jako warunku wyzwolenia nie będzie najlepszym rozwiązaniem, gdyż trudno je będzie rozróżnić. W tym przypadku znacznie efektywniejsze będzie wyzwalanie np. po wykryciu konkretnego adresu urządzenia (rys. 15). Możliwości konfiguracji układu wyzwalającego jest sporo. Adres może być określany jako 7–bitowa liczba bez uwzględniania występującego za nim bitu R/W, albo łącznie z bitem R/W, można też wybrać 10-bitową wersję adresu. Następnie należy wybrać relację (mniejszy, równy, większy itp.), jaką powinien spełniać adres w odniesieniu do ewentualnego parametru. Na końcu należy zdecydować, czy ma być uwzględniany kierunek transmisji (Read, Write) czy nie (Either). Można też wyzwalać oscyloskop po znalezieniu konkretnej danej występującej na wskazanej pozycji w bloku adresowanym do podanego urządzenia. Do ustawienia parametrów wyzwalania należy wówczas wybrać opcję „Adress and data”. Zasada doboru parametrów jest podobna jak w poprzedniej metodzie. Na rys. 16 przedstawiono wyzwolenie oscyloskopu po wykryciu danej równej 01h o indeksie równym 3. Dana ta jest przesyłanej do urządzenia o adresie A5h. W chwili wyzwolenia można przy okazji zaobserwować brak potwierdzenia ACK, które powinno być wygenerowane przez urządzenie Slave.
Rys. 14. Przykłady wyzwolenia na: a) sekwencji startu, b) powtórzonej sekwencji startu, c) sekwencji stopu
Rys. 15. Zakładka wyboru zdarzeń wyzwalających – opcje wykrywania adresu i danej
Rys. 16. Przykłady wyzwolenia na określonej danej występującej na wskazanej pozycji w bloku kierowanym do konkretnego urządzenia
Wnioski
Interfejsy SPI i I2C są obecnie, wobec odchodzącego do lamusa RS232, najczęściej stosowanymi rozwiązaniami wykorzystywanymi przede wszystkim do realizacji wewnętrznej komunikacji pomiędzy poszczególnymi blokami funkcjonalnymi urządzeń elektronicznych. Trzeba jednak pamiętać, że chociaż coraz rzadziej mamy do czynienia z samym interfejsem RS232, to stosowany w nim protokół jest nadal wykorzystywany i znamy go pod nazwą UART. Nadal jest to jeden z najczęściej wykorzystywanych protokołów asynchronicznych. Wymienione protokoły (UART, SPI, I2C) są na tyle uniwersalne, że można jest implementować w większości sprzętu elektronicznego powszechnego użytku i profesjonalnego. Tam, gdzie rosną wymagania funkcjonalne lub stawiane są dodatkowe obostrzenia parametrów technicznych trzeba sięgać po protokoły/interfejsy bardziej ukierunkowane na konkretne zastosowania. Będzie o tym mowa w kolejnych odcinkach.
Jarosław Doliński