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

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
VirtualMan
Příspěvky: 63
Registrován: 18 bře 2005, 01:00
Bydliště: Brno

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

#1 Příspěvek 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

Uživatelský avatar
Habesan
Příspěvky: 6924
Registrován: 12 led 2009, 01:00
Bydliště: Plzeňsko
Kontaktovat uživatele:

#2 Příspěvek 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".
Sháním hasičák s CO2 "sněhový", raději funkční.
(Nemusí mít platnou revizi.)
(Celkově budu raději, když se to obejde bez papírů.)

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#3 Příspěvek 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.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
VirtualMan
Příspěvky: 63
Registrován: 18 bře 2005, 01:00
Bydliště: Brno

#4 Příspěvek 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:

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#5 Příspěvek 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.

Uživatelský avatar
weed_smoker
Příspěvky: 2675
Registrován: 02 pro 2011, 01:00
Bydliště: Jaroměř

#6 Příspěvek 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".

Uživatelský avatar
VirtualMan
Příspěvky: 63
Registrován: 18 bře 2005, 01:00
Bydliště: Brno

#7 Příspěvek 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.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#8 Příspěvek od Atlan »

Urobit MAster softwerove nieje problem aj ta ktie cidla budes obsluhovat po jednom. a stihat to bude nieej problem bezat na 400khz

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“