I²C Adressen

Smalltalk
Antworten
Benutzeravatar
smutbert
Beiträge: 6374
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

I²C Adressen

Beitrag von smutbert » 25.12.2017 23:18:40

Hallo liebe Leute,

also vorweg möchte ich feststellen, dass ich kein Problem habe und es so direkt auch nichts mit Debian zu tun hat, deshalb stelle ich die Frage in Smalltalk.

Jedenfalls bin ich mir sicher, dass ihr mir helfen könntet das hier zu verstehen. Ich habe eine Platine mit einer I²C Porterweiterung (PCF8574P) an der in weiterer Folge ein einfaches LCD hängt. Das schreibe ich aber nur damit ihr wisst worum es ungefähr geht, mit meiner Verwirrung hat das schon gar nichts mehr zu tun.

Die kommt nämlich von einer Tabelle, die auf der Platine neben einer Reihe mit drei Jumpern aufgedruckt ist:

Code: Alles auswählen

┌───┬───┬───┬───┬───┐
│JP1│JP2│JP3│DEC│HEX│
├───┼───┼───┼───┼───┤
│ L │ L │ L │ 64│ 40│
│ L │ L │ H │ 66│ 42│
│ L │ H │ L │ 68│ 44│
│ L │ H │ H │ 70│ 46│
│ H │ L │ L │ 72│ 48│
│ H │ L │ H │ 74│ 4B│
│ H │ H │ L │ 76│ 4C│
│ H │ H │ H │ 78│ 4E│
└───┴───┴───┴───┴───┘
     ┌────────┐
     │JP 1/2/3│
     ├────────┤
     │1 = + 5V│
     │2 = ADR.│
     │3 = GND │
     └────────┘
Jetzt einmal ganz abgesehen davon, dass ich bei der Umrechnung von Dezimal- in Hexadezimalwerte in einer Zeile auf eine andere Zahl komme (74 = 0x4a ≠ 0x4b) interpretiere ich diese Tabelle so, dass ich Pin Nummer 2 von JP1 bis JP3 jeweils mit einem Jumper mit +5 V (Pin 1) oder mit Masse (Pin 3) verbinde und so die Adresse am I²C-Bus festlege, mit der ich das Gerät ansprechen kann.

Ich habe nun alle Pins mit der Nummer 2 mit 3 gebrückt, also meiner Auffassung nach (und auch der meines Multimeters) die entscheidenden Pins mit Masse verbunden und sollte das Ding mit 0x40 ansprechen können. Mit den Debiani2c-tools erhalte ich jedoch

Code: Alles auswählen

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 
und ich muss dementsprechende beo Debianlcdproc auch »Port=0x20« in die Konfigurationsdatei eintragen.
Ist das nur ein weiterer Fehler auf dem Aufdruck der Platine oder habe ich hier irgendetwas falsch verstanden?

lg smutbert

ChronoBoost
Beiträge: 140
Registriert: 29.01.2013 11:03:50

Re: I²C Adressen

Beitrag von ChronoBoost » 26.12.2017 00:44:13

Das LSB ist das R/W-Bit:
https://www.totalphase.com/support/arti ... Addressing

Das 4A ist wohl ein Druckfehler.

Zur Not hilft auch ein Blick ins Datenblatt S.13: http://www.ti.com/lit/ds/symlink/pcf8574.pdf

Benutzeravatar
smutbert
Beiträge: 6374
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: I²C Adressen

Beitrag von smutbert » 26.12.2017 15:31:19

Aus eigenem Antrieb habe ich nur das wenig ergiebige Datenblatt der Platine angesehen. Jetzt wird es etwas klarer (hoffe ich). Wenn ich zur Kontrolle zusammenfassen darf:

Es gibt 1 Byte für die Adressierung. Weil das niederwertigste Bit festlegt ob vom Gerät gelesen oder auf das Gerät geschrieben wird, stehen für die eigentliche Adresse nur mehr 7 Bit zur Verfügung. Die höchsten 4 davon sind im Chip fest verdrahtet und lauten 0100. Die restlichen drei habe ich mit Jumpern auf 0 gesetzt und damit lautet die Adresse 0100000 = 32 = 0x20

Danke!

Antworten