LTC2946 I2C antwortet nur 0x18

Gast #4614367
Hallo,

ich habe hier folgendes Power Measurement IC

http://cds.linear.com/docs/en/datasheet/2946fa.pdf


angeschlossen wie, auf dem angefügten Bild!

Ich nutze zwei dieser ICs auf demselben I2C-Bus und kann mit beiden 
reden.

Adressen:  0b1101001 und 0b1101111


Leider antworten mir beide nur mit "0x18" egal was ich für einen Wert 
abfragen möchte!

Kann das damit zu tun haben, dass ich "SDAI" und "SDAO" zusammengelegt 
hab?

ist allerdings ja auch so laut Datenblatt zu machen!


VG
Angehängte Dateien:
#4614391
Manfred schrieb:
> Der Takteingang liegt auf Gnd, brauch der nicht einen Quarz zum
> Arbeiten?



Zitat Datenblatt:


CLKIN:
Clock Input. Connect to ground to use the internal
±5% clock. For improved accuracy, connect to an external
crystal oscillator circuit or drive with an external clock.

CLKOUT:
Clock  Output.  Connect  to  an  external  crystal
oscillator circuit. Leave open if unused.
Gast #4614395
Florian K. schrieb:
> CLKIN:
> Clock Input. Connect to ground to use the internal
> ±5% clock. For improved accuracy, connect to an external
> crystal oscillator circuit or drive with an external clock

Ok, wenn das so da steht, ich habe mir nur das Anschlussbild angeschaut.
Gast #4614419
Manfred schrieb:
> Was ist eigentlich mit GPIO1 bis GPIO3. Liegen alle auf GND. Haben
> die
> gar keine Funktion?

Ja die möchte ich nicht nutzen bzw. wüsste nicht wofür,
von daher möchte ich nur power measurement machen und eventuell auch 
noch GPIO3 nutzen!!!!

VG
Gast #4614580
Florian K. schrieb:
> Womit sprichst du das IC an? Könntest du vlt. deine I2C Routinen
> posten
> falls ein µC der Master ist?

Ich nutzen einen STM32F4 µC.

folgendes führe ich zyklisch aus: -->

LTC2946_I2C_addr = 0b1101001;

LTC2946_Transmit_buf[0] = 0x01;

HAL_I2C_Master_Transmit(&hi2c1, LTC2946_I2C_addr<<1,
&LTC2946_Transmit_buf[0], 1, (uint16_t) 1000);

    HAL_I2C_Master_Receive(&hi2c1, LTC2946_I2C_addr<<1, 
&LTC2946_Receive_buf[0], 4, (uint16_t) 1000);


Die Kommunikation klappt so, wenn ich mit einem anderen, 
unterschiedlichen Gerät (RTC) auf demselben Bus kommunizieren möchte!
#4614621
Ich kenne leider den STM32F4 nicht bzw. habe noch nichts mit den 
ARM-Controllern gemacht.

Vergleiche mal die I2C Protokolle im Datenblatt mit Dem was dein 
Controller macht.

Seite 19ff in deinem verlinkten Datenblatt beschreibt sehr gut was der 
Sensor auf dem Bus sehen möchte.

Gruß
ol1cr0n
Gast #4614673
Ich hab gerade folgenden Forumeintrag gefunden

https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=126374


geht zwar um den RPi aber

das Problem klingt ähnlich, nur verstehe ich nicht genau, wie
der "work around" dort gemeint ist?

d.h. einfach direkt nacheinander alle REgister bis (eininschließlich) 
zum eigentlich gewünschten Register lesen?

also

0x00
.
.
.
0x03

wenn ich nur das Status register auslesen möchte?

das klappt so nämlich leider auch nicht!

Hmmh....
#4615280
Guten Morgen,


Das klingt nach genau deinem Problem.

Der schöne Weg wäre natürlich deine I2C-Routinen anzupassen damit ein 
"RESTART" anstatt "STOP" gesendet wird nachdem du die Registeradresse 
übertragen hast.


> d.h. einfach direkt nacheinander alle REgister bis (eininschließlich)
> zum eigentlich gewünschten Register lesen?

Wenn du nach dem ersten Lesen kein "STOP" sonder "ACK" sendest, wird der 
Registerpointer im LTC2946 hochgezählt und der Inhalt des nächsten 
Registers wird gesendet, solange bis der Master "STOP" auf den Bus legt.


Gruß
Gast #4631584
Hallo,

kurze Rückmeldung, um das hier abzuschliessen.

Ich hab nun es wie folgt gemacht:

Ich lese, wenn ich ein bestimmtes Register haben will einfach
alle Register bis einschl. dem gewünschten aus.

Wie in dem anderen Forenbeitrag beschrieben.

Zum Register schreiben klappt direkt, also wie es eigentlich über I2C 
vorgesehen ist.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.