Posun úrovní: čtyři způsoby
Když matice z kapitoly 4 řekne „nesmí", je potřeba mezi ty dva čipy něco dát. Možnosti jsou čtyři a liší se cenou, rychlostí a tím, kolik z nich umí obousměrně.
1. Odporový dělič — 5 V → 3,3 V
Nejlevnější věc na světě: dva rezistory. Napětí se rozdělí v poměru, ve kterém jsou.
Kde je háček: tytéž rezistory, které dělí napětí, dělají s kapacitou vstupu RC článek. Malé odpory znamenají rychlou hranu a trvalý proud; velké odpory šetří proud a zpomalí hranu. Ta dvě přání táhnou proti sobě a poměr se přitom nemění — obě sady 1k8/3k3 i 18k/33k dají stejných 3,24 V, ale liší se rychlostí stokrát.
Dělič je jednosměrný a pomalý. Na I²C, SPI nad pár MHz nebo na cokoli obousměrného se nehodí. Na tlačítko, na signál „hotovo" nebo na UART do 115 kBd je to naprosto v pořádku a nikdo se za to nemusí stydět.
2. Sériový rezistor a ochranná dioda v čipu
Skoro každý vstup má diody do napájení. Sériový odpor 1–10 kΩ omezí proud, který jimi teče, na neškodných pár set mikroampér, a dioda dorovná napětí na VDD + 0,3 V. Funguje to, používá se to, a přesto to není správně: proud teče do napájecí větve, a když je cílový obvod vypnutý, napájí ho ten signál. U mikrokontroléru se to pozná tak, že po vypnutí zůstane napůl naběhlý.
3. MOSFET — obousměrně, dvěma rezistory
Klasické zapojení se signálovým MOSFETem (BSS138): source na nižší straně, drain na vyšší, gate na nižší napájení, pull-upy na obou stranách. Když nižší strana stáhne k nule, tranzistor sepne a stáhne i vyšší. Když nižší strana pustí, vyšší ji vytáhne přes substrátovou diodu a pak pull-up. Je to obousměrné a nepotřebuje to vědět, kdo zrovna mluví — proto se takhle dělá I²C mezi doménami.
4. Budič — když to má být rychlé
Vyhrazený obvod (74LVC1T45, TXB0104, TXS0108). Dvě napájení, dva rezistory nepotřebuje, jede do desítek až stovek megabitů a některé si i samy poznají směr. Je to jediné řešení, které se nemusí obhajovat — a stojí desetinásobek dvou rezistorů.
| způsob | rychlost | obousměrně | trvalý proud |
|---|---|---|---|
| dělič | do ~1 Mb/s | ne | ano, pořád |
| sériový odpor + dioda | střední | ne | malý, ale do napájení |
| MOSFET + pull-upy | do ~2 Mb/s | ano | jen když je nula |
| budič | desítky Mb/s | podle typu | zanedbatelný |