I2C esclave récepteur sur stm32f4

J'essaie de mettre en œuvre un i2c esclave récepteur routine de service d'interruption sur un stm32f4.
Voici mon smart morceau de code.

void I2C2_EV_IRQHandler()
  {
    switch (I2C_GetLastEvent(I2C2))
    {
    //The address sent by the master matches the own address of the peripheral
    case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED:
        //The slave stretches SCL low until ADDR is
        //cleared and DR filled with the data to be sent
        I2C_ClearFlag(I2C2,I2C_FLAG_ADDR);
        break;

    //The application is expecting a data byte to be received
    case I2C_EVENT_SLAVE_BYTE_RECEIVED:
        I2C_ReceiveData(I2C2);
        break;

    //The application is expecting the end of the communication
    //Make sure that both ADDR and STOPF flags are cleared
    //if both are found set.
    case I2C_EVENT_SLAVE_STOP_DETECTED:
        if(I2C_GetFlagStatus(I2C2,I2C_FLAG_ADDR) == SET)
            I2C_ClearFlag(I2C2,I2C_FLAG_ADDR);
        if(I2C_GetFlagStatus(I2C2,I2C_FLAG_STOPF) == SET)
            I2C_ClearFlag(I2C2,I2C_FLAG_STOPF);
}

}

L'interruption est appelé et I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED cas est entré.
Le SCL est faible maintenant. Le manuel de référence dit que si je effacer l'adresse du pavillon de l'horloge continuera et les données seront envoyées à la Page 579 - Esclave récepteur). À mon avis, l'interruption devient toujours appelé si des données arrivent et suivant l'état sera I2C_EVENT_SLAVE_BYTE_RECEIVED.

Je ne peux pas trouver n'importe quel exemple de la stm ou par l'intermédiaire de google. Quelqu'un peut-il m'aider ou me montrer un exemple.

Une erreur dans le code ci-dessus est l'absence de reconnaître dans chaque cas. Dans mon cas, il y a aussi d'autres esclaves de la communication avec le maître. Ainsi, après l'initialisation de mon esclave l'écouter dans le bus. - Je recevoir un bit d'arrêt qui n'a pas été une partie de ma communication. Donc je ne suis pas en mesure de supprimer le bit de Stop. Aussi la réinitialisation de l'ADDR drapeau n'est pas aussi facile que je le pensais.

OriginalL'auteur Jonny Schubert | 2012-03-26