Frage zu MSP430 USCI I2C

#931697
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren