Konwertery poziomu dla sygnałów SPI oraz I2C
Interfejs szeregowy jest często stosowany, aby zapewnić komunikację między różnymi układami scalonymi w obrębie płytki – zwłaszcza w systemach o ograniczonych rozmiarach, w których występują transmisje z niską i średnią szybkością. Najpopularniejszymi interfejsami szeregowymi są I2C oraz SPI. Jeśli w systemie różne napięcia zasilają mikroprocesor i układy peryferyjne, potrzebne są odpowiednie konwertery poziomu, aby móc stosować do komunikacji jeden z tych interfejsów.
Istnieje kilka powodów, dla których współczesne systemy wykorzystują dwa lub więcej napięć zasilania. Po pierwsze, szybkie mikroprocesory i procesory sygnałowe są implementowane w najbardziej zaawansowanym procesie technologicznym, aby osiągnąć maksymalną wydajność przy jak najmniejszym poborze mocy. Po drugie, powodem stosowania innych napięć zasilania jest konieczność użycia układów specjalizowanych (ASIC) lub FPGA razem z mikroprocesorem. We wszystkich tych zastosowaniach projektant musi stosować jedno- lub dwukierunkowe konwertery poziomów dla sygnałów magistrali. Aby rozwiązać te problemy, została zaprojektowana rodzina konwerterów MAX3372E-MAX3379E / MAX3390E-MAX3393E.
Niniejsza nota aplikacyjna opisuje interfejsy I2C oraz SPI wraz z odpowiednimi dla nich układami konwersji poziomu.
Magistrala SPI zawiera 4 sygnały: CS (Chip Select) aktywny w stanie niskim, SCLK (zegar), DIN (Data In) oraz DOUT (Data Out).
Rys. 1 przedstawia zależności czasowe między tymi sygnałami. Specyfikacja SPI obejmuje bit polaryzacji zegara (CPOL) oraz fazy zegara (CPHA). Rys. 1. odnosi się do najbardziej popularnej kombinacji tych bitów – CPOL jest równe 0 (transfer danych następuje na narastającym zboczu zegara) oraz CPHA jest równe 0 (zmiana zegara następuje w połowie bitu).
Do jednej magistrali może być podłączonych kilka urządzeń – wszystkie współdzielą tą samą linię DIN oraz SCLK. Każde urządzenie ma oddzielny sygnał Chip Select, zatem mikroprocesor może zaadresować wybrany element, wystawiając odpowiedni sygnał CS aktywny w stanie niskim. Jeśli układ nie odpowiada na sygnały procesora (na przykład jest to przetwornik cyfrowo-analogowy), nie jest wówczas potrzebna linia DOUT. Magistrala SPI jest odpowiednia dla szybkości transferu do 20 Mb/s. Niektóre urządzenia, na przykład zegary czasu rzeczywistego (RTC) takie jak MAX6901, mają interfejs 3-wire, w którym linia danych jest dwukierunkowa. Interfejs ten jest podobny do SPI.
Magistrala I2S składa się z dwóch sygnałów – SCL (zegara) i SDA (Data in/out).
Rys. 2 przedstawia zależności czasowe na magistrali I2S. Każde urządzenie ma unikalny 7-bitowy lub 10-bitowy adres. Ponieważ linia danych jest dwukierunkowa, interfejs potrzebuje tylko dwóch linii, co jest bardzo atrakcyjne w systemach i projektach, w których poszczególne elementy obwodu muszą być izolowane optycznie. Przepustowości I2C wynoszą 100 kb/s, 400 kb/s lub nawet 3,4 Mb/s w najszybszym trybie. Magistrala I2C wymaga stosowania rezystora podciągającego RP, którego wartość zależy od napięcia zasilania i pojemności magistrali wynikającej z liczby podłączonych urządzeń i długości samej magistrali.
Jeśli system wykorzystuje różne napięcia zasilania dla mikroprocesora i urządzeń peryferyjnych, to w celu użycia tych interfejsów szeregowych konieczne jest stosowanie odpowiednich konwerterów poziomów. Istnieje kilka powodów, dla których współczesne systemy wykorzystują dwa lub więcej napięć zasilania. Po pierwsze, szybkie mikroprocesory i procesory sygnałowe są implementowane w najbardziej zaawansowanym procesie, aby osiągnąć maksymalną wydajność przy jak najmniejszym poborze mocy. Proces ten narzuca zwykle ograniczenia na napięcie zasilania 3 V lub niższe. Typowe napięcia rdzenia mieszczą się w zakresie od 1,5 do 2,5 V. Z drugiej strony, układy wejścia/wyjścia jak przetwornika DAC lub ADC zwykle pracują z napięciami 3,3 lub 5 V, aby uzyskać wymagany zakres dynamiczny. W przenośnych i energooszczędnych urządzeniach istnieje też inny powód, aby mikroprocesor działał z najniższym możliwym napięciem. Pobór prądu typowego mikroprocesora zależy bowiem od częstotliwości pracy i napięcia zasilania. Zatem jednym ze sposobów na zmniejszenie poboru prądu jest obniżenie napięcia zasilania. To z kolei prowadzi do sytuacji, w której mikroprocesor wykorzystuje inne źródło zasilania, niż pozostałe urządzenia. Kolejnym powodem występowania różnych napięć zasilania może być wykorzystanie układów specjalizowanych lub FPGA współpracujących z mikroprocesorem. W każdym z tych przypadków projektant musi zastosować jednokierunkowy lub dwukierunkowy konwerter poziomu na liniach magistrali.
Rys. 3 przedstawia podstawowy konwerter poziomu z n-kanałowym tranzystorem MOSFET. Jeśli żaden z tranzystorów Q2 ani Q3 nie podciąga napięcia linii danych, jej stan pozostanie niski. Napięcie bramka-źródło tranzystora Q1 jest równe 0 V, napięcie Data 1.8 jest równe 1,8 V, a napięcie Data 3.3 – 3,3 V. Jeśli tranzystor Q3 wymusi stan niski na linii Data 3.3, dioda wewnętrzna tranzystora Q1 zostanie spolaryzowana w kierunku przewodzenia, na skutek czego źródło osiągnie poziom 0,3 V. Napięcie bramka-źródło wyniesie 1,5 V i tranzystor Q1 się włączy. Zakładamy przy tym, że tranzystor Q2 ma zerową rezystancję włączenia. W realnym systemie musielibyśmy uwzględnić tę rezystancję włączenia, która w najgorszym przypadku dla I2C wynosi 133 Ω (0,4 V przy prądzie 3 mA) lub 22 Ω w przypadku bufora 74LVC125 (0,55 mV dla prądu 24 mA). W takim przypadku napięcie VGS wymagane do włączenia tranzystora Q1 nie będzie wynosiło 1,8 V, lecz mniej w zależności od wartości R1 i rezystancji włączenia Q1.
Niestety, w tym obwodzie występuje kilka problemów:
- Jeśli VL wynosi 1,8 V lub mniej, to wybór odpowiedniego tranzystora MOSFET o wystarczająco niskim napięciu progowym VGS jest bardzo ograniczony. Jednym z odpowiednich kandydatów może być model TN2501 firmy Supertex.
- Parametr slew rate, a co za tym idzie – maksymalna przepustowość transmisji, zależy od wartości R1/R2 oraz liczby urządzeń dołączonych do magistrali, które determinują pojemność. Możliwe jest zwiększenie maksymalnej przepustowości transmisji poprzez zmniejszenie wartości rezystorów R1/R2. To jednak doprowadzi do wzrostu poboru prądu, co nie jest akceptowalne w przenośnych lub energooszczędnych urządzeniach.
- W tym prostym obwodzie nie da się zastosować bramek trójstanowych i odłączyć rezystorów R1/R2. Tym samym nie można wyłączyć segmentów magistrali.
Te problemy rozwiązuje rodzina tranzystorów MAX3372E-MAX3393E. Rys. 4 przedstawia uproszczony schemat zastępczy konwertera MAX3373E, w którym zostały dodane dwa tranzystory MOSFET Q4 oraz Q5. Są to przełączniki zamykające się na krótki czas podczas narastającego zbocza, przyspieszając przejście ze stanu niskiego do wysokiego. Minimalna gwarantowana przez układ MAX3373E przepustowość wynosi 8 Mb/s. Możliwe jest jej zwiększenie do 16 Mb/s, jeśli spełniony jest warunek |VCC – VL| < 0.8V. Ta rodzina konwerterów poziomu oferuje pracę jako bramka trójstanowa, dzięki czemu możliwe jest odłączenie rezystorów podciągających. Dlatego też mogą one pracować w sieciach z wieloma urządzeniami (multidrop) lub w sytuacji, gdy wiele urządzeń I2C korzysta z tego samego adresu, lecz znajdują się w różnych miejscach sieci i są oddzielone konwerterem poziomu.
Linie danych po stronie zasilania są zabezpieczone przed wyładowaniami elektrostatycznymi o wartości +- 15 kV. Jest to cenna cecha w sytuacjach, w których istnieje dostęp do magistrali bezpośrednio ze złącza i w systemach, w których wystąpienie wyładowania jest prawdopodobne. Ponadto układ bezpieczeństwa przełącza konwertery w trzeci stan w sytuacji, gdy temperatura przekroczy 150°C.
Typowe zastosowania
Rys. 5 przedstawia typowe zastosowanie konwertera poziomów MAX3390 w układzie pomiarowym zasilanym z baterii. Niskomocowy wzmacniacz pomiarowy MAX4194 wzmacnia sygnał mostka. Sygnał jest następnie przetwarzany na postać cyfrową przez układ MAX1270, 8-kanałowy, 12 bitowy przetwornik ADC. Napięcie zasilania dla analogowego układu wejściowego wynosi 5 V, natomiast energooszczędny mikroprocesor pracuje z napięciem 2,5 V. Układ MAX3390E konwertuje poziom sygnałów SPI z 2,5 V na 5 V i z powrotem na potrzeby linii DOUT.
Rys. 6 przedstawia podobne wykorzystanie na magistrali I2C. Dwukierunkowy konwerter poziomów MAX3373E dostosowuje poziomy wyjść mikroprocesora do interfejsu kompatybilnego z I2C układu MAX1236 – 4-kanałowego, 12-bitowego przetwornika ADC.
W zależności od liczby urządzeń dołączonych do magistrali mogą być potrzebne dodatkowe rezystory podciągające RPP. Rodzina konwerterów poziomów MAX3372E-MAX3393E zawiera wewnętrzne rezystory podciągające 10 kΩ. Na rys. 7 można zaobserwować, że jest to wystarczające dla pojemności magistrali około 90 pF przy założeniu, że nie jest podłączony dodatkowy rezystor RS (RS = 0).
Jeśli na jednej magistrali znajduje się kilka urządzeń, lub jeśli magistrala jest względnie długa (powyżej 30 cm), konieczne jest stosowanie zewnętrznych rezystorów podciągających RPP, która wynosi 1,7 kΩ dla RS = 0 i VDD = 5 V. Stąd otrzymujemy minimalną wartość RPP równą 2,2 kΩ – wówczas połączenie równoległe RPP oraz wewnętrznego rezystora podciągającego 10 kΩ daje wartość 1,83 kΩ.
Rys. 8 przedstawia minimalną wartość RP w funkcji napięcia zasilania w zależności od parametru RS – został zaczerpnięty ze specyfikacji I2C.
Podsumowując, układy MAX3372E-MAX3393E są efektywnym rozwiązaniem zapewniającym konwersję poziomów na magistralach I2C oraz SPI w systemach pracujących z niskimi napięciami. Gwarantowane przepustowości, niski pobór mocy, możliwość pracy z niskimi napięciami i małe wymiary obudowy rozwiązują wiele problemów spotykanych podczas projektowania architektury magistrali.