STM32 HAL_I2C_Mem_Read_IT

Gast #6818555
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
Angehängte Dateien:

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.