Hallo,
habe einen STM32F072 den ich als I2C Slave betreiben möchte.
Konfiguriert habe ich die Sache mit CubeMX, Slaveadresse eingestellt auf
$32. Lasse mein Programm bis nach der Initialisierung des I2C laufen und
feuere mit einem anderen STM32 einen Write Frame auf den Slave:
1 | buf[0] = 0x55;
|
2 | HAL_I2C_Master_Transmit(&hi2c1, 0x64, buf, 1, HAL_MAX_DELAY);
|
Das Ergebnis sieht man auf dem Bild, der Master generiert 8 Takte und
legt die Adresse 0x32 auf den Bus, danach klemmt der Slave den Takt und
nichts geht mehr. Habe mir das I2C ISR Register im Slave angeschaut,
ADDCODE hat die 0x32, BUSY und ADDR sind gesetzt. Aber es klemmt!
Wenn ich nun auf dem Slave "Clock no Strech Mode" aktiviere wird der
Frame ordentlich acknowledged, der Content von Buf[0] wird sauber
aufgelegt und der Frame beendet. Das Problem ist dass ich "no Strech
Mode" nicht aktivieren möchte aber vor allem mal wissen möchte was da
schief geht.