I complete dont understand your code, read docu for partial mode...
For example part of my driver c file. (Note: Generated files isnt for edit then show it here is waste space
volatile uint8_t IsTransmittingBlock_;
void UNIMM_dmacallback(void)
{
IsTransmittingBlock_ = 0;
DisplayDriver_TransferCompleteCallback();
}
void Display_Bitmap(const uint16_t *bitmap, uint16_t posx, uint16_t posy, uint16_t sizex, uint16_t sizey)
{
IsTransmittingBlock_ = 1;
GC9A01A_SetWindow(posx, posy, posx+sizex-1, posy+sizey-1);
//DMA test
HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_SET);
SPI_send_dma(GC9A01A_SPI_periph, 1, (uint8_t *)bitmap, sizex*sizey, UNIMM_dmacallback);
}