i2c
obvykle nepotřebuje převod, protože jeho sběrnice open-drain
, prakticky všechna moderní zařízení 5V
rozumí 3V3
logika. V obou případech je ve většině případů bezpečné použití bez jakýchkoli převodníků. Konfigurace otevřeného odtoku však vyžaduje vytahovací odpory .
Provozní napětí sběrnice i2c
je nastaveno pullup rezistorem. Správné vytažení je kritické .
Jelikož kterékoli zařízení samo dobře komunikuje, je pravděpodobné, že je příčinou vašich problémů. Interní vytažení maliny pi bude bojovat s více zařízeními na sběrnici.
Konfigurace sběrnice
simulovat tento obvod - schéma vytvořené pomocí CircuitLab
Logické úrovně
Důvodem, proč toto schéma funguje se zařízeními 5V
, je to, že I2C nepoužívá logiku 1 = HIGH
, logic 0 = LOW
but is an open-drain bus. Což znamená logika 0 = NÍZKÁ
logika 1 = X
Takže piny i2c
budou řídit 0V
pro logiku 0
, ale pouze „float“ linku pro logiku 1
s napětím nastaveným pull-up rezistorem připojeným ke sběrnici.
5V
logika je obecně citlivá na vstupy 3.3V
, ale není tomu tak vždy, vždy byste měli ověřit pomocí datového listu dotykové obrazovky nebo otestovat empiricky. Je velmi vysoká pravděpodobnost, že to bude v pořádku.
Úplně první logická zařízení CMOS měla vysoké prahové hodnoty pro 5 V, byla nahrazena, občas je najdete ve volné přírodě. Většina vstupních zařízení 5V CMOS vyrobených za posledních 20 let je dostatečně citlivá, aby reagovala na vstupy 3V3
.
Bezpečnost zařízení
Jako podřízené zařízení by nikdy neměla existovat podmínka, kdy dotyková obrazovka pohání sběrnici VYSOKÁ, někdy jsou zařízení rozvážná a strašně navržená, takže možná budete chtít zkontrolovat. K ochraně sběrnice můžete vložit zenerovy diody , které by sevřely napětí na 3,3 V, jak je znázorněno na schématu.
POZNÁMKA Tyto diody jsou povinné v opačné konfiguraci s 5V
masterem s 3V3
slave. Protože například existuje velká šance, že arduino 5V
bude řídit sběrnici kvůli softwarové chybě nebo chybnému zapojení a zničí senzor 3V3
. V tomto případě jsou tedy zenerovy svorky zásadní pro ochranu vašich zařízení.
Překladače
Používání překladačů BUS může být u sběrnice s otevřeným odtokem problematické. Musíte být opatrní při výběru vhodného zařízení, které je výstupy s otevřeným odtokem a není aktivní pohon. Existují integrované obvody překladače a sběrnicového vazebního členu, které i2c
vědí nebo mají topologii s otevřeným odtokem, ale musí být výslovně vybrány.
i2c
používá k detekci sporu o sběrnici jednoduchou metodu. Protože logic 0 = LOW
a logic 1 = X
, logic 0
"beats" logic 1
. Pokud se dvě zařízení pokusí komunikovat na sběrnici ve stejnou dobu, první, kdo se pokusí na sběrnici napsat logiku 1
, zatímco druhé zapíše logiku 0
, zjistit, že se sběrnice nezměnila ( logic 0
vyhrává v rochambeau) a přestat vysílat. Pokud překladač sběrnice řídí logiku 1 = 1
a některé zařízení se pokusí použít logiku 0 = 0
, způsobí to zkrat.
Pokud absolutně musíte překonat izolační bariéru nebo komunikovat s více zařízeními na různé úrovni napětí, je lepší použít rozšiřující IC i2c přes simplexní aktivní sběrnici, jako je SPI, kterou lze bezpečně přemostit jednoduché jednosměrné překladače (i optoizolátory budou fungovat při nízkých rychlostech)