STM32F0 I2C Error

#3994301
Lesenswert?

Hallo

Ich habe einen STM32F0 und möchte von einem Board (Master) zu einem 
anderen Board (Slave) Daten senden, der Slave gibt aber keine Antwort 
und erhält auch keinen Interrupt, was ist da in der Initialisierung 
falsch? Die Routine
"void I2CSend(void)" wird nur beim Master ausgeführt:
1
void I2CInit(void)
2
{
3
  GPIO_InitTypeDef GPIO_InitStructure;
4
  I2C_InitTypeDef I2C_InitStructure;
5
  NVIC_InitTypeDef NVIC_InitStructure;
6

7
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE);
8
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
9

10
  //RCC_APB1Periph_I2C2
11
  //RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);
12

13
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource6, GPIO_AF_1);
14
  GPIO_PinAFConfig(GPIOF, GPIO_PinSource7, GPIO_AF_1);
15

16
  //Configure pins: SCL and SDA ------------------
17
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
18
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
19
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
20
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
21
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
22
  GPIO_Init(GPIOF, &GPIO_InitStructure);
23

24
  I2C_DeInit(I2C2);
25
  I2C_Cmd(I2C2, DISABLE);
26
  I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
27
  I2C_InitStructure.I2C_DigitalFilter = 0x05;
28
  I2C_InitStructure.I2C_OwnAddress1 = 0x30;//0x40;
29
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
30
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
31
  I2C_InitStructure.I2C_Timing =0x00805C87; //100KHz (see page 529 - table 73 in the manual reference)
32
  I2C_InitStructure.I2C_AcknowledgedAddress = 0x30;//I2C_AcknowledgedAddress_7bit;
33
  I2C_Init(I2C2, &I2C_InitStructure);
34
  
35
  I2C_AcknowledgeConfig(I2C2, ENABLE);
36
  
37
  I2C_Cmd(I2C2, ENABLE);
38
 
39
  I2C_ITConfig(I2C2, I2C_IT_RXI, ENABLE);
40
  I2C_ITConfig(I2C2, I2C_IT_TXI, ENABLE);
41
  I2C_ITConfig(I2C2, I2C_IT_TCI, ENABLE);
42
  
43
  NVIC_InitStructure.NVIC_IRQChannel = I2C2_IRQn;
44
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
45
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
46
  NVIC_Init(&NVIC_InitStructure);
47
}
48

49
void I2CSend(void)
50
{
51
    I2C_SlaveAddressConfig(I2C2, 0x30);
52

53
    I2C_GenerateSTART(I2C2, ENABLE);
54
    //I2C_MasterRequestConfig(I2C2, I2C_Direction_Transmitter);
55
    
56
    I2C_NumberOfBytesConfig(I2C2, 8);
57
    
58
    I2C_SendData(I2C2, 0x55);
59
    
60
    I2C_GenerateSTOP(I2C2, ENABLE);
61
}
Im Anhang das Oszi Bild wenn der Slave nicht angeschlossen ist, sobald 
der Slave angeschlossen ist bekomme ich kein ACK (Bild Slave an)
Angehängte Dateien:

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