Har behov av att läsa 2..4 enheter över I2C från en PIC. Problemet är att alla har samma adress Adressen är "Factory programmable" så jag antar att jag kan få men olika om jag köper, typ 1000 av var
Hur förfar jag enklast? Med en dedikerad mux typ LTC4305, eller kan man vara så simpel att man använder en vanlig CMOS-switch? Behöver inte speciellt hög signaleringshastighet, tänkte tvärtom hålla den låg för att minimera RFI.
Nu hade jag tänkt göra det enkelt för mig och köra med PICens hårdvaru-I2C, men visst kan man väl bitbanga oxå. Detdöär med att bara muxa kliockan var även jag inne på, men undrar hur den enhet som då inte får klocka påverkar bussen?
Som jag har för mig när jag höll på med I2C, så händer ingenting på en enhet så länge klockan ligger inaktiv. Jag tror inte det borde bli något problem.
Nu fattar jag inte riktigt?
Det står rätt tydligt att den har ett 48 bitars slumpat ID nummer + CRC och 8 bitar som part ID=10h.
Att det kan vara knepigt att veta vilken krets som är vilken är en helt annan sak, det går ju att lösa med en SW CS- på I/O pinnen.
Men jag kan inte hitta något alls om att den inte skulle ha unika adresser.
Kretsen verkar ju vara gjord för att användas i batteripackar. Man har bara en pack i taget på en apparat så det är inget problem att alla kretsar adresseras med adress 70. Och ID-numret läser man ut för att identifiera vilken krets som just nu sitter där.
Men eftersom alla kretsar lystrar till adress 70 så har man ingen nytta av ID-numret om man har flera kretsar kopplade till samma I2C-buss.
Du/ni har rätt, för kommunikationens skull har man ingen som helst nytta av dev ID.
Men kretsen du har valt är inte tänkt för det du skall använda den till
Så det blir att slänga på en MUX eller byta krets.
Man kan väl tämligen säkert anta att det kommer att komma en version tämligen snart när de tre sista bitarna i dev id är ersatt med tre externa pinnar såsom på de flesta andra I2C produkter.