Otázka:
Jak mohu zapojit více zařízení i2c s různými napájecími napětími?
Shmuly
2017-08-04 19:25:42 UTC
view on stackexchange narkive permalink

Používám rPi 3 s Windows IoT.

Připojil jsem čtečku NFC PN7120 a dokázal jsem ji úspěšně používat.

Jsem také schopen připojit oficiální Dotykový displej a funguje to dobře.

Můj problém je, když oba připojím. Právě teď mám obě zařízení připojena ke stejným portům SDA a SCL. Displej je připojen k 5V kolíku a čtečka NFC používá 3,3V kolík.

Zkoušel jsem napájení z displeje a přeskočení napájení na Pi, stejně jako použití samostatných napájecích zdrojů.

Jeden odpovědět:
crasic
2017-08-04 21:41:57 UTC
view on stackexchange narkive permalink

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


schematic

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)

Jak jsem zmínil v dřívějším komentáři, jsem na straně elektroniky nový. Pokud správně rozumím, na základě vašeho schématu zapojení bych měl přidat 10k rezistory mezi piny SDA a SCL a zdroj 3,3v. Zkoušel jsem to a stále jsem měl stejné výsledky. Jednotlivé komponenty fungují samostatně, ale společně funguje displej, ale ne čtečka NFC.
@Shmully ** nižší ** odpor, rezistory 1K
dík. Asi budu muset jít nakupovat :). Jako technik musím neustále balancovat mezi pouhým dodržováním pokynů a touhou opravdu pochopit, co dělám. Původně jsem si myslel, že tento projekt bude ten první. Ale tento problém a výsledná konverzace mě tlačí, abych se o tom dozvěděl více. Pokud máte nějaký dobrý zdroj pro úplného nováčka, rád bych to slyšel.
@Shmuly Pokud máte po ruce něco <`4,7K`, bude dobré to zkusit. Pokus a omyl jsou dobrým způsobem, jak se učit, mnoho lidí doporučuje * The Art of Electronics *, což je fantastická kniha, jedna výhrada - nedostane vás příliš daleko do digitální stránky věcí
Také bych * velmi doporučil koupit osciloskop, váš problém by mohl být nalezen sondováním komunikace i2c na osciloskopu. Když můžete vizuálně vidět hlavní příčinu, usnadňuje to pochopit, proč oprava funguje.
Mám nějaké 1K rezistory a stále to nemohu dostat do práce. Stejně jako v minulosti jednotlivé komponenty fungují. Když se pokusím připojit oba, čtečka NFC selže. Nějaké jiné stopy?
@Shmuly Už jste to někdy dostali do práce? Mám tu stejnou konfiguraci, kterou bych chtěl sestavit ...
Na rozdíl od toho, co jsem v té chvíli četl, skončil plochý kabel z displeje dobře. Nic jiného nebylo potřeba.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...