STM32: Probleme mit I²C

OP #2207938
Lesenswert?
• ▲
▼
Hallo Leute, ich bins wieder.

Hab diesmal ein Problem mit I²C. Ich versuche einen Bl-Ctrl 2.0 Regler 
anzusprechen, es funktioniert jedoch nicht. Die Konfiguration der I²C 
Schnittstelle sollte passen, der Programmcode ebenso. Pull - Ups sind 
auch vorhanden. Hier mal die Konfiguration der I²C Schnittstelle:
1
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
2
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
3
I2C_InitStructure.I2C_OwnAddress1 = 0x52;
4
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
5
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
6
I2C_InitStructure.I2C_ClockSpeed = 400000;
7

8
I2C_Init(I2C1, &I2C_InitStructure);
9

10
/* I2C1 SDA and SCL configuration */
11
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
12
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
13
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
14
GPIO_Init(GPIOB, &GPIO_InitStructure);
15
I2C_Cmd(I2C1, ENABLE);

Und das ist der Programmcode (gleich mal sorry für die Länge, weis nicht 
was davon relevant ist):
1
Timeout = 0xFFFF;
2

3
        myprint2("\r\nEnter...");
4
        I2C_GenerateSTART(I2C1, ENABLE);
5
        myprint2("\r\nStart");
6
        while ((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) && (!stop))
7
        {
8
          if(Timeout == 0)
9
          {
10
            lEvent = I2C_GetLastEvent(I2C1);
11
            myprint2("\r\n   Error Occured: Code %u", lEvent);
12
            if(IS_I2C_EVENT(lEvent)){
13
              myprint2("\r\n       Is I2C Event");
14
            }
15

16
            stop = 1;
17
          }
18
          Timeout--;
19
        }
20
        stop = 0;
21
        Timeout = 0xFFFF;
22
        myprint2("\r\nEvent 1");
23
        Delay_ms(20);
24
        I2C_Send7bitAddress(I2C1, 0x52, I2C_Direction_Transmitter);
25

26
        myprint2("\r\n7b Address");
27
        while ((!I2C_CheckEvent(I2C1,
28
            I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && (!stop))
29
        {
30
          if(Timeout == 0)
31
          {
32
            lEvent = I2C_GetLastEvent(I2C1);
33
            myprint2("\r\n   Error Occured: Code %u", lEvent);
34
            if(IS_I2C_EVENT(lEvent)){
35
              myprint2("\r\n       Is I2C Event");
36
            }
37

38
            stop = 1;
39
          }
40
          Timeout--;
41
        }
42
        stop = 0;
43
        Timeout = 0xFFFF;
44
        myprint2("\r\nEvent 2");
45
        I2C_SendData(I2C1, 100);
46
        myprint2("\r\nSend Data");
47
        while ((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) && (!stop))
48
        {
49
          if(Timeout == 0)
50
          {
51
            lEvent = I2C_GetLastEvent(I2C1);
52
            myprint2("\r\n   Error Occured: Code %u", lEvent);
53
            if(IS_I2C_EVENT(lEvent)){
54
              myprint2("\r\n       Is I2C Event");
55
            }
56

57
            stop = 1;
58
          }
59
          Timeout--;
60
        }
61
        stop = 0;
62
        Timeout = 0xFFFF;
63
        myprint2("\r\nEvent 3");
64
        I2C_GenerateSTOP(I2C1, ENABLE);
65
        myprint2("\r\nStop");

und die Ausgabe davon in Putty:
1
Enter...
2
Start
3
Event 1
4
7b Address
5
   Error Occured: Code 536870944
6
Event 2
7
Send Data
8
   Error Occured: Code 536870944
9
Event 3
10
Stop

Ich sitze jetzt hier schon ein paar Stunden und versuche Das Problem zu 
lösen. Ich hoffe ihr könnt mir helfen.

Danke schon im vorraus!

mfg,
TDK29

Antwort schreiben

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.

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.