"ST's HAL is brain dead, just like most vendor libraries. That's why I write my own peripheral driver code.
I'm glad to see ST continues to improve their peripherals. I2C on the earlier STM32F3 chips was utter crap. The STM32F4 was much better, and the I2C peripheral on the STM32F7 is the best I've seen in any MCU."
That's interesting. To the best of my knowledge, the i2c issues on earlier stm8/32 chips are entirely software driven: the St libraries simply did not follow these data sheets for those devices. I believe those issues were limited to f1 family for sure and maybe f0. I need to look at my own code to see if f3 suffers the same issue - I don't believe it does.
So if you had written your own code to the data sheet, you should not encounter any i2c issues.
That's even true if you had used lower level access routines from St.
So if your code does run into i2c issues, I would suspect that it failed to follow the data sheet.