STM32 F4 I2C2 geht nicht auf pins PF0 und PF1 aber auf PB10 und PB11 woran liegst?

OP #3012993
Hi,

auf dem STM32 hab ich 2 sensoren am I2C2 Bus (PF0 und PF1). Tote hose! 
man sieht nicht mal die Startbedingung oder irgendwas vom Prozessor 
kommen. Im Debugger hängt er sich beim warten des I2C Init Flags auf, 
also wartet und wartet.
Wenn ich es an PB10 und PB11 betreibe, geht der I2C2 und die Sensoren 
funktionieren wunderbar. Woran kann das liegen?

Prozessor defekt?


VG
Sven
OP
das ist es leider nicht, hab das so:

"RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);"


hier ensteht das Problem bzw. bleibt er hängen:
1
    /*I2CTest with busy waiting to test hardware*/
2
      /*Initialize I2C2*/
3
       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
4

5
      I2C_InitTypeDef  I2C_InitStructure;
6
      GPIO_InitTypeDef GPIO_InitStructure;
7

8
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
9
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
10
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
11
      GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
12

13
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
14
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
15

16
      /* Connect PXx to I2C_SCL, I2C_SDA*/
17
      GPIO_PinAFConfig(GPIOF, GPIO_PinSource1, GPIO_AF_I2C2); //SCL
18
      GPIO_PinAFConfig(GPIOF, GPIO_PinSource0, GPIO_AF_I2C2);  //SDA
19
      GPIO_Init(GPIOF, &GPIO_InitStructure);
20

21
      I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
22
      I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
23
      I2C_InitStructure.I2C_OwnAddress1 = 0x00;
24
      I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
25
      I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
26
      I2C_InitStructure.I2C_ClockSpeed = 400000;
27
      I2C_Init( I2C2, &I2C_InitStructure);
28

29
      I2C_Cmd(I2C2, ENABLE);
30

31
      //I2C_AcknowledgeConfig(I2C2, DISABLE);
32

33
      volatile int x= 0;
34

35
      I2C_GenerateSTART(I2C2, ENABLE);
36

37
      while(I2C_GetFlagStatus(I2C2, I2C_FLAG_SB)!= SET) //Wait for Startbit set
38
      {
39
              x++;
40
      }
41

42
      I2C_Send7bitAddress(I2C2,0xEC,I2C_Direction_Transmitter);
43

44
      while(I2C_GetFlagStatus(I2C2, I2C_FLAG_ADDR)!= SET) //Wait for Address send flag
45
      {
46
              x++;
47
      }
48

49
      I2C_SendData(I2C2,0x48);
50

51
      while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BTF)!= SET) //Wait for Address send flag
52
      {
53
              x++;
54
      }
Gast
>das ist es leider nicht, hab das so:
>
>"RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);"

Das frisst der C Compiler so aber nicht. Das ist ein String.
Da schmeisst der ne Fehlermeldung.

Sag mal bist du zu dämlich deinen kompletten nicht funktionierenden
Code zu posten oder glaubst du das hier ein Haufen von Hellsehern
vor der Glotze hockt und versucht geistigen Kontakt zu dir herzustellen
um diesen Code auf deinem Monitor per mentaler Fähigkeiten zu sehen?

Mir sind gerade die Satzzeichen ausgegangen.
Gast
Vieleicht hilft das ja:

  /* sEE_I2C Peripheral Enable */
  I2C_Cmd(sEE_I2C, ENABLE);
  /* Apply sEE_I2C configuration after enabling it */
  I2C_Init(sEE_I2C, &I2C_InitStructure);

Achte auf die Kommentare!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.