Odpojení části I2C sběrnice
Odpojení části I2C sběrnice
Zdravím.
V mém zařízení potřebuji úplně odpojovat kus I2C sběrnice. Viz obrázek dole.
V prvním pokusu jsem si myslel, že bude stačit odpojit napájení druhého procesoru (ATmega328) a tím se to samo vyřeší.
Problém je ale v tom, že ATmega328 bez napájení zlikviduje I2C komunikaci i pro ostatní zařízení.
Bylo tedy nutné od ATmega úplně odpojit i SDA a SCL piny.
Zkusil jsem na odpojení použít převodník úrovní a zdá se, že to funguje (schéma ve žlutém obdélníku dole na obrázku).
Zajímalo by mě, jestli je v tom zapojení nutné používat ty 4 odpory.
Budu k tomu navrhovat plošňák a mám tam strašně málo místa, takže každý ušetřený odpor by mi hodně pomohl.
Když je ATmega zapojená na napájení (spínač na 3,3V je sepnutý), tak ty levé odpory (R1 a R2) potřeba nejsou,
protože jejich funkci zastanou Pull-Upy u hlavního procesoru STM.
Pravé dva odpory (R3 a R4) stejně nikam zapojené nejsou, tak by snad taky nebyly potřeba.
Nebo by bylo lepší ty odpory R3 a R4 použít a připojit je na ten ovládací vstup?
Zkusil jsem to a funguje to taky.
PS.
Vím, že existuje i speciální obvod, který by se dal na odpojování sběrnice použít (PCA9515), ale zdá se mi to dost
drahé v porovnání se dvěma obyčejnými FET tranzistory. Rozměrově by to taky vycházelo trochu hůř.
V mém zařízení potřebuji úplně odpojovat kus I2C sběrnice. Viz obrázek dole.
V prvním pokusu jsem si myslel, že bude stačit odpojit napájení druhého procesoru (ATmega328) a tím se to samo vyřeší.
Problém je ale v tom, že ATmega328 bez napájení zlikviduje I2C komunikaci i pro ostatní zařízení.
Bylo tedy nutné od ATmega úplně odpojit i SDA a SCL piny.
Zkusil jsem na odpojení použít převodník úrovní a zdá se, že to funguje (schéma ve žlutém obdélníku dole na obrázku).
Zajímalo by mě, jestli je v tom zapojení nutné používat ty 4 odpory.
Budu k tomu navrhovat plošňák a mám tam strašně málo místa, takže každý ušetřený odpor by mi hodně pomohl.
Když je ATmega zapojená na napájení (spínač na 3,3V je sepnutý), tak ty levé odpory (R1 a R2) potřeba nejsou,
protože jejich funkci zastanou Pull-Upy u hlavního procesoru STM.
Pravé dva odpory (R3 a R4) stejně nikam zapojené nejsou, tak by snad taky nebyly potřeba.
Nebo by bylo lepší ty odpory R3 a R4 použít a připojit je na ten ovládací vstup?
Zkusil jsem to a funguje to taky.
PS.
Vím, že existuje i speciální obvod, který by se dal na odpojování sběrnice použít (PCA9515), ale zdá se mi to dost
drahé v porovnání se dvěma obyčejnými FET tranzistory. Rozměrově by to taky vycházelo trochu hůř.
Re: Odpojení části I2C sběrnice
No když se mrkneš na to jak to funguje https://electronics.stackexchange.com/q ... er-circuit tak jde vidět, že ty pullup rezistory tam mají svůj význam.
Z jakého konkrétního důvodu je nutno to takto odpojovat od sběrnice ? Jako já bych rozhodně šel spíš do nějakého ovládacího obvodu, obousměrný bitový buffer ...
Z jakého konkrétního důvodu je nutno to takto odpojovat od sběrnice ? Jako já bych rozhodně šel spíš do nějakého ovládacího obvodu, obousměrný bitový buffer ...
Re: Odpojení části I2C sběrnice
Jestli jsem to správně pochopil, tak v tom článku je popisovaná funkce pro převodník úrovní.
Já ale potřebuju jenom odpojit sběrnici. Když bude odpojená (ovládací vstup LV bez napětí => trazistory zavřené), tak s tou stranou s ATmega vůbec komunikovat nepotřebuju.
Když budou tranzistory sepnuté, mám na obou stranách stejné napájecí napětí.
Ta část s ATmega328 je GPS modul, který předává zpracovaná data na vyžádání do hlavního procesoru STM a zároveň signalizuje svůj aktuální stav pomocí několika LED.
Dřív jsem to v případě potřeby připojoval jako "extra" krabičku do bočního konektoru, takže docházelo k fyzickému odpojení celé sběrnice včetně napájení.
Teď se snažím jen nacpat všechno do jedné krabičky, aby se s tím v terénu lépe pracovalo.
Část s GPS se ale používá jen občas, takže nemá cenu, aby zbytečně zatěžovala baterii.
Původní verze:
Nová verze (zatím nefunkční - bude se ještě předělávat):
Já ale potřebuju jenom odpojit sběrnici. Když bude odpojená (ovládací vstup LV bez napětí => trazistory zavřené), tak s tou stranou s ATmega vůbec komunikovat nepotřebuju.
Když budou tranzistory sepnuté, mám na obou stranách stejné napájecí napětí.
Ta část s ATmega328 je GPS modul, který předává zpracovaná data na vyžádání do hlavního procesoru STM a zároveň signalizuje svůj aktuální stav pomocí několika LED.
Dřív jsem to v případě potřeby připojoval jako "extra" krabičku do bočního konektoru, takže docházelo k fyzickému odpojení celé sběrnice včetně napájení.
Teď se snažím jen nacpat všechno do jedné krabičky, aby se s tím v terénu lépe pracovalo.
Část s GPS se ale používá jen občas, takže nemá cenu, aby zbytečně zatěžovala baterii.
Původní verze:
Nová verze (zatím nefunkční - bude se ještě předělávat):
Re: Odpojení části I2C sběrnice
Napadlo mě ještě něco trochu jiného ale vyzkouším to až zítra.
Odpory R1 a R2 se zruší.
Místo nich bude jen jeden společný odpor v řídících elektrodách (GATE) proti GND, který zajistí bezpečné rozepnutí tranzistorů, když bude vypínač rozepnutý.
Pull-Upy R3 a R4 na straně u ATmega zachovám a připojím je na napájení (za vypínač).
Odpory R1 a R2 se zruší.
Místo nich bude jen jeden společný odpor v řídících elektrodách (GATE) proti GND, který zajistí bezpečné rozepnutí tranzistorů, když bude vypínač rozepnutý.
Pull-Upy R3 a R4 na straně u ATmega zachovám a připojím je na napájení (za vypínač).
Re: Odpojení části I2C sběrnice
Tak ta poslední verze taky funguje.
Pro testy jsem sice nepoužil BSS138, ale 2N7000, které má VGS (threshold) taky pod 3V, takže při sepnutí spínače na 3,3V napájení se tranzistory dokonale sepnuly a propojily obě části sběrnice.
Funguje to dokonce i bez těch R3 a R4, které se mi opravdu zdají zbytečné, když v odpojeném stavu na straně s ATmega nepotřebuji komunikovat.
Takže jestli nemáte někdo nějaký další nápad nebo připomínku, tak to takhle nechám.
Pro testy jsem sice nepoužil BSS138, ale 2N7000, které má VGS (threshold) taky pod 3V, takže při sepnutí spínače na 3,3V napájení se tranzistory dokonale sepnuly a propojily obě části sběrnice.
Funguje to dokonce i bez těch R3 a R4, které se mi opravdu zdají zbytečné, když v odpojeném stavu na straně s ATmega nepotřebuji komunikovat.
Takže jestli nemáte někdo nějaký další nápad nebo připomínku, tak to takhle nechám.
Re: Odpojení části I2C sběrnice
Při takovém zapojení jsou odpory R3 a R4 vysloveně nežádoucí - po připojení sběrnice budou dělat druhé pull-up rezistory sběrnice a ještě k tomu ne na napájení, ale na řídící pin.
Re: Odpojení části I2C sběrnice
Díky za názor.
V tomhle trochu plavu.
Na plošňáku jsem sice už připravil prostor pro ty R3 a R4, ale nebudou se osazovat.
V tomhle trochu plavu.
Na plošňáku jsem sice už připravil prostor pro ty R3 a R4, ale nebudou se osazovat.
Re: Odpojení části I2C sběrnice
No https://cs.wikipedia.org/wiki/I%C2%B2C ... ty odpory jsou tam od toho, aby jsi dostal napětí na sběrnici v momentě, kdy k ní nic připojeno není. Většinou každý hotový modul má tyto odpory už na sobě vestavěné. Stává se pak, že jich připojíš 6 za sebou na sběrnici a tím tu sběrnici pak 6x pullupuješ, procesor to pak neumí stáhnout na 0, a pokud umí, tak shoří ...
Re: Odpojení části I2C sběrnice
Já bych ještě vykoušel, jak se chová SW část při odpojení během přenosu dat po sběrnici. Řešení chybových stavů na I2C je ve standardních knihovnách velmi tristní a je zdrojem mnoha problémů a záseků.
-
- Příspěvky: 1
- Registrován: 31 črc 2023, 12:43
- Reputation: 0
- Kontaktovat uživatele:
Re: Odpojení části I2C sběrnice
Hele, ten odpor R1 a R2 asi nemusíš používat, když už máš Pull-Upy u STM procesoru. Co se týká těch R3 a R4, můžeš je klidně vynechat, když to funguje i bez nich. Když jsem koukal na schéma, vypadá to, že by to mělo bejt v pohodě. Takže jo, ušetříš si nějaký místo na tom plošňáku. A hlavně dobře, že to funguje jak má!
pawan tanwar
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host