@DimastD в общем у меня дошли руки до дисплея на ili9341 на stm32f303, курил чужие коды, в итоге докурился до фикса
while (!(DISPLAY_SPI->SR & SPI_SR_TXE));
*((__IO uint8_t*) &DISPLAY_SPI->DR) = high_color;
while (!(DISPLAY_SPI->SR & SPI_SR_TXE));
*((__IO uint8_t*) &DISPLAY_SPI->DR) = low_color;
вроде вы мне в личке тоже самое предлагали сделать, но что-то в тот раз пошло не так, видать руки не оттуда. можете попробовать это в свой пример перенять, хотя для большей универсальности наверное надо всё через LL делать