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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.