Stránka 1 z 1

Více stejných periferií se stejnou adresou na i2C sběrnici

Napsal: 03 čer 2014, 12:37
od VirtualMan
Ahoj!
Existuje nějaký způsob jak na jednu i2C sběrnici připojit víc (alespoň dvě) stejných periferií, se stejnou hw adresou, které nemají žádnou další nožku typu ChipSelect a HW adresa se u nich nedá změnit?
Nějaký multiplexer fungující jako vyhýbka, který by mi umožnil i2C sběrnici nějak rozdělit na dvě a vybírat si se kterou chci komunikovat?
Nebo prostě jen nějaká říditelná "odbočka" i2C sběrnice, kterou bych mohl po té i2C sběrnici zapínat/vypínat, podle toho jestli bych chtěl s připojenou komunikací za tou odbočkou komunikovat nebo ne?

Asi neumím hledat, protože bych si myslel, že něco takového určitě existuje, ale nikde to nemůžu najít.

Díky za nakopnutí správným směrem. Odkaz na příklad by moc pomohl.
Vladimír

Napsal: 03 čer 2014, 13:03
od Habesan
EDIT: NXP: I2C muxes and switches

Ta věc by musela mít vlastní I2C adresu.

Možná by se to vešlo do ATtiny85, když se zabere všech 6 pinů, které nejsou napájecí.

V něčem jako je 4051 (4052, 4053), ale ta není řízená I2C by možná stačilo přepínat jenom SDA, zatímco SCL by byla společná.

Předpokládám, že v angličtině by to bylo "I2C turnout".

Napsal: 03 čer 2014, 14:51
od ZdenekHQ
Když už, tak musíš přepínat hodiny, SDA může být společný.

Na přepínání hodin by se dal použít obyčejný demultiplexer, jen musíš zajistit, aby při přepínání nevznikaly falešné pulsy.

Napsal: 04 čer 2014, 15:46
od VirtualMan
Aha.
Takže žádné instantní řešení asi neexistuje :(
Toho jsem se bál.

Opravdu jsem si myslel, že toto bude poměrně často řešený problém, a že na to bude existovat nějaký hotový šváb... :cry:

Napsal: 07 čer 2014, 13:23
od Atlan
Nejako nieje zvykom pouzivat v zariadeni viac rovnakych IO, navyse zbernica sa vyuzivala v telke. Ja som pouzil jeden datovy vodic a zvlast clk pre jednotlive obvody.

Napsal: 10 čer 2014, 11:23
od weed_smoker
Některý I2C obvody maj pevnou jen část adresy (obvykle 3-5 bitů) a ty zbylý jsou vyvedený jako A0,A1,A2... a dávaj se přes odpory asi 2k2 buď na 5V nebo na zem.Třeba relativně známejch PCF8574 (8x I/O) může bejt na jedný sběrnici 8 (3 bity),naopak třeba u nějakýho RTC je adresa napevno,těch se obvykle víc nedává.
Pokud ty obvody maj jenom pevnou adresu a MCU jen 1 I2C kanál,pak se obvykle druhej I2C vytvoří softwarově na dvou vývodech MCU.Ty rychlejší obvody se připojej na originál I2C a ty pomalejší na ten "softwarovej".

Napsal: 10 čer 2014, 12:12
od VirtualMan
To je zajímavá myšlenka, nenapadlo mě že bych vlastně mohl i2C řešit i softwarově. Zkusim pohledat nějaké examply. Ale bojím se, že Céčko, ve kterém to píšu bude na obsluhu hw na této úrovni moc pomalé.

Tady jde o tlakoměrná čidla Bosch. Potřebuju měřit a porovnávat dva rozdílné tlaky. a to poměrně rychle a často (výsledky 10-20x za sekundu)
Původní návrh jsem měl s BMP-085, u kterého má vývod 8 funkci XCLR (master clear) a ten se dal použít jako chipselect.
Bohužel jsem se dověděl, že BMP-085 už se nedělá, začíná být nedostatkový a nahrazuje se čidlem BMP-180. Ten ale má vývody jinak a vývod XCLR nemá.
Výrobce sice v datasheetu zmiňuje variantu s funkcí chipselect na vývodu 1, ale pokud jsem to správně pochopil, vyrobí je na přání.
Nejsem si jistý, že jich budu potřebovat vagon, a předpokládám, že deset kusů pro mne vyrábět nebudou, i když je to asi jen věc nahrání jiného firmware.

Napsal: 10 čer 2014, 20:34
od Atlan
Urobit MAster softwerove nieje problem aj ta ktie cidla budes obsluhovat po jednom. a stihat to bude nieej problem bezat na 400khz