Этот ответ не об использовании HAL с I2C, но надеюсь, что он укажет вам
Просто проверьте таблицу данных (я изучаю STM32F0), и вы увидите, что ограничение составляет 255 байт.(зарегистрируйте CR2: NBYTES), я не уверен, есть ли другое ограничение в HAL, но используя прямой доступ к регистрам, вы можете отправить 255 байт за раз или фрагментировать его и отправить сколько хотите.
Дляво фрагментации есть бит CR2: RELOAD, если вы установите это, то в конце передача не будет остановлена, и вы можете обновить следующие NBYTES, .. когда вы установите последний блок байтов (который будет соответствовать NBYTES), тогда сбросьте битCR2: RELOAD.
Это имеет один недостаток: каждые 255 байтов вы будете прерываться.