Forum: Mikrocontroller und Digitale Elektronik Frage zu MSP430 USCI I2C


von Jörg S. (joerg-s)


Lesenswert?

Habe mal eine Frage zur I²C Bus Kommunikation beim MSP430F2252 (USCI).
Laut User Guide soll nach absenden der Adresse und empfang des ACK das 
UCTXSTT Bit auf 0 gehen. Das wollte ich in meinem Code benutzen, aber so 
wie es aussieht wird das Bit nicht 0. Mach ich einen Gedankenfehler oder 
ist der Code Mist??

Den auskommentierten Bereich würde ich gerne nutzen, aber er bleibt bei 
der Abfrage des UCTXSTT Bit hängen (Bit bleibt auf 1).
1
unsigned char fram_write_byte (unsigned int addr, unsigned char data)
2
{
3
  unsigned char addr_h;
4
  unsigned char addr_l;
5
    
6
  addr_h = addr>>8;
7
  addr_l = addr;
8
  
9
 
10
  UCB0I2CSA = ADD_FRAM;      // Slave Adresse
11
  
12
  UCB0CTL1 |= UCTR + UCTXSTT;         // I2C TX, start condition
13
14
/*
15
  while(UCB0CTL1 & UCTXSTT);  // Warten bis Start und Adresse gesendet
16
17
  if (UCB0STAT & UCNACKIFG)
18
  {
19
    UCB0CTL1 |= UCTXSTP;                // I2C stop condition 
20
    UCB0STAT &=~UCNACKIFG;
21
    return FALSE;
22
  }
23
*/
24
  while (!(IFG2 & UCB0TXIFG));
25
  UCB0TXBUF = addr_h; 
26
  while (!(IFG2 & UCB0TXIFG));
27
  UCB0TXBUF = addr_l; 
28
  while (!(IFG2 & UCB0TXIFG));
29
  UCB0TXBUF = data; 
30
  while (!(IFG2 & UCB0TXIFG));
31
  
32
  UCB0CTL1 |= UCTXSTP;                // I2C stop condition 
33
  while(UCB0CTL1 & UCTXSTP); 
34
35
  return TRUE;
36
}

von Alex (Gast)


Lesenswert?

Hallo,

du hast schon recht. Das TXSTT Bit sollte auf null gesetzt werden, 
sobald der SLAVE sein ACK sendet. Sendet er denn seinen ACK???

mfg Alex

von Alex (Gast)


Lesenswert?

Halt falsch, der MSP wartet bis das Datenregister TXBUF geschrieben ist, 
erst dann wirt TXSTT gelöscht. Seite 536 des USER Guide zeigt das ganz 
nett.

mfg ALex

von Jörg S. (joerg-s)


Lesenswert?

Ah ja, doch was übersehen... Danke :)

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.