Forum: Mikrocontroller und Digitale Elektronik MAX6953, mehr als 64 Zeichen per I²C?


von Ernest B. (foizman)


Lesenswert?

Ich brauch mal nen schnellen Tipp:

Mit dem Maxim MAX6953 kann ich 4 Stellen 5x7 DotMatrix-Anzeigen 
ansteuern. Und man kann per I²C-Bus 16 solcher ICs adressieren.

d.h. Limit: 16x4=64 Zeichen bzw. alphanummerische Stellen

Problem: größere DotMatrix Anzeige
Wenn ich aber zB 128 oder 192 LED-Stellen per I²C ansteuern muß... wie 
macht man das? Kann man da irgendwie per Port-Expander ein Vielfaches 
von diesen MAX6953 an ein und demselber I²C Bus betreiben? Ich komm 
einfach nicht drauf.

also quasi:
Block1: 16 Adressen = 1-64 Zeichen
Block2: 16 Adressen = 65-128 Zeichen
etc., aber alles am gleichen I²C

Danke für Eure Hinweise...

lg,
F.

von Mirko K. (mkeuner)


Lesenswert?

Ich sehe 2 Ansätze:

1) I²C Bus Multiplexer wie z.B. den PCA9544 können den Bus verzweigen 
und jeweils ein Segment davon aktivieren, so dass die anderen nix 
mitbekommen

2) Die A0/A1-Leitungen als "Enable", so dass beispielsweise immer nur 
bei einem Chip die A1 auf VCC liegt, und dieser Chip sich daher 
angesprochen fühlt.
(Mit den "primitiven" I²C Chips kann man solchen Pfusch treiben, ich 
kann aber nicht garantieren, dass das mit dem MAX6953 auch tut. Es 
könnte z.B. sein, dass der seine Adresse beim Einschalten einmal lernt, 
und denn nicht mehr geändert werden kann.)

von Ernest B. (foizman)


Angehängte Dateien:

Lesenswert?

mal laut überlegen:
Slave-Adressen vom MAX6953 lauten auf "101x xxx1" (LSB 0...read, 
1...write)
d.h. 0xA1 bis 0xBF (im Schreibmodus)
Block1: IC01-IC16, I²C-Bus 1, 16 MAXIMs mit Adressbereich 0xA1 bis 0xBF
Block2: IC17-IC32, I²C-Bus 2, 16 MAXIMs mit Adressbereich 0xA1 bis 0xBF
Block3: IC33-IC44, I²C-Bus 3, 16 MAXIMs mit Adressbereich 0xA1 bis 0xBF

Mit dem Philips PCA9544 hab ich die Maske "1110 xxx1" für Write
d.h. 0xE1 bis 0xEF (im Schreibmodus)

jetzt kann ich 3 I²C-Blöcke realisieren, indem ich den PCA9544 verwende.

Vgl. Attachment

'Aktivieren von I²C-Bus 1
0xE1 0x04 'enable Channel 0
'Ausgabe am IC1
0xA1 0x20 0x01 0x02 0x03 0x04 'schreibe die Zahlen 1234
'Aktivieren von I²C-Bus 2
0xE1 0x05 'enable Channel 1
'Ausgabe am IC17
0xA1 0x20 0x05 0x06 0x07 0x08 'schreibe die Zahlen 5678

Oder hab ich da was übersehen?

von Mirko K. (mkeuner)


Lesenswert?

Ernest Beckert wrote:
> Oder hab ich da was übersehen?

Im Übersehen von Flüchtigkeitsfehlern bin ich leider (wobei sich meine 
Studenten sicher drüber freuen) großer Meister. Vom Prinzip her ist das 
aber genau so, wie ich es auch machen würde.

von ARM-Fan (Gast)


Lesenswert?

> (LSB 0...read, 1...write)

genau umgekehrt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.