www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F5438 I2C Problem


Autor: El_Studente (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich versuche schon seit Tagen einen HMC6343 Kompass-Sensor an 
meinen MSP430F5438 per I2c anzuschließen. Leider nur mit mäßigen Erfolg. 
Hauptsächlich hab ich zwei Probleme.

1. Wenn ich Daten mit dem MSP als Master empfangen will, verstehe ich 
nicht so ganz wie ich den Puffer richtig abfragen soll.
Im Moment löse ich es so:
    
    UCB1CTL1 |= UCTR + UCTXSTT;   //I2C RX,start condition (adresse senden)
    __delay_cycles(100);          //Write BIT
    UCB1TXBUF = 0x50;          //Befehl welche Daten der Slave senden soll
    __delay_cycles(100);
    UCB1CTL1 |= UCTXSTP;       // I2C end condition
    __delay_cycles(2000);
   
    UCB1CTL1 &= ~UCTR;
            
    UCB1CTL1 |= UCTXSTT;   //I2C RX,start condition(adresse senden)    
                           //read BIT
    MSB = UCB1RXBUF;
    
    LSB = UCB1RXBUF;
 
    MSBp = UCB1RXBUF;
  
    LSBp = UCB1RXBUF;
 
    MSBr = UCB1RXBUF;

    UCB1CTL1 |= UCTXSTP; // I2C end condition
    LSBr = UCB1RXBUF; 

Das schreiben von Befehlen scheint zu funktionieren. Leider weis ich 
nicht, wie ich mit dem MSP den Takt starten kann, sodass der HMC seine 
Daten übertragen kann. Bzw. ein Takt Packet wird immer automatisch 
gestartet, wessen Daten ich auch empfangen kann. Leider muss ich 6 Byte 
hintereinander empfangen.

2. Zieht der HMC ab und zu die Datenleitung auf GND, wodurch der BUS 
natürlich lahmgelegt ist. Die einzige möglichkeit den BUS neuzustarten 
ist, dann die spannungsversorgung des HMC zu treffen...

3. Muss ich unbedingt mit den interrupts arbeiten, die in den Example 
codes von TI benutzt werden, oder kann man das ganze auch ohne zum 
laufen bringen?

Ich wäre euch sehr dankbar, wenn Ihr mir helfen könntet.

Schon mal vielen Dank.
El_Studente

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>2. Zieht der HMC ab und zu die Datenleitung auf GND, wodurch der BUS
>natürlich lahmgelegt ist. Die einzige möglichkeit den BUS neuzustarten
>ist, dann die spannungsversorgung des HMC zu treffen...
Stop-Bedingung senden sollte eigentlich reichen um die Busteilnehmer 
wieder zu "resetten".

>3. Muss ich unbedingt mit den interrupts arbeiten, die in den Example
>codes von TI benutzt werden, oder kann man das ganze auch ohne zum
>laufen bringen?
Ich weiss nicht wie's beim 5er ist, in der Regel und bei den anderen 
MSPs ist es nicht notwendig.


Vielleicht ist hier:
Beitrag "MSP430F2370 I2C"
oder hier:
Beitrag "Fehlersuche bei I2C [MSP430]; UCBBUSY bleibt gesetzt"
noch was für dich dabei.

Autor: Wolfgang Horn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,  El_Studente,

ähnliche Schwierigkeiten hatte ich überwunden, als mir klar wurde: Der 
HMC6343 verhält sich auf I2C etwas anders als die bisherigen Chips.
Datenblatt, Seite 11: Table 3 – HMC6343 Command to Response Delay Times: 
Das sind Pausen zwischen den Bytes von Adresse bis Kommando - und den 
Datenbytes, die gelesen oder geschrieben werden.
Der HMC6343 verlangt, dass der Master den I2C-Bus in diesen Pausen zwar 
belegt, aber eine Atempause einlegt.

Cioa
Wolfgang Horn

Autor: el_Studente (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, was verstehst du unter belegen und atempause. Soll der µC die 
Datenleitung auf GND ziehen aber für die zeit kein Takt kommen?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.