Forum: Mikrocontroller und Digitale Elektronik STM32 HAL_I2C_Mem_Read_IT


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von MTBaddict (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

vielleicht könnt ihr mir ja weiterhelfen.
Die HAL library der STM32 Familie bietet die Möglichkeit direkt in
Register von einem Device z.B. Sensor zu schreiben oder es zu lesen.
Die Funktionen hierfür sind:

HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 
uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t 
Size);

bzw.

HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 
uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t 
Size);

Der Date-frame für einen erfolgreich durchgeführten HAL_I2C_Mem_Read_IT 
Befehl ist im Anhang zu sehen.

Mein Problem ist nun, ich habe ein Master-Board welches genau diese 
Befehle verwendet, an diesem Board darf auch nichts verändert werden.
Ich soll nun ein zweites Board als Slave programmieren, welches 
sozusagen einen Sensor simuliert.

Meine Frage ist nun, gibt es eine Möglichkeit im Slave-Board Variablen 
anzulegen, die für den Master wie ein Device Register mit Adresse (z.B 
0x03) wirken ? So dass man den Variablenwert über HAL_I2C_Mem_Write_IT 
bzw. HAL_I2C_Mem_Read_IT verändern kann?

Ich habe es bereits mit Interrupts über die Callback Funktionen 
versucht,
den Schreibvorgang (dort werden 2 byte nacheinander empfangen) mit 
HAL_I2C_Mem_Write_IT bekomme ich so hin, aber der Lesevorgang (dort wird 
erst ein byte empfangen, dannach soll ein byte versand werden) bereitet 
mir schwierigkeiten. Es gibt in der HAL_Libary keine Funkiton für den 
Slave die zuerst ein byte empfängt und anschließend eins verschickt.
Wenn ich ganz simpel
HAL_I2C_Slave_Receive_IT() und anschließend
HAL_I2C_Slave_Transmit_IT() ausführe kommt nichts beim Master-Board an.
Vielen Dank schonmal für Anregungen aller Art.

Gruß

Stefan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.