Run HAL_I2C_Mem_Read from a task which can be pre-empted by FreeRTOS (or some interrupt) in order to read >3 data bytes via I2C. Additional context It seems that I localized the problem to lines2812-2823 in file