TIM2 DMA configuration for stm32h7
DMA was initialized correctly. 
The problem was: buffer array wasn't initialized into any SRAM memory area, so when DMA trying to reach that memory via AHB (it's not possible) DMA crash with error and set TEI_flag (transfer error interrupt).

The easises way to make this work (and obviously it isn't correct way but for acquaintance purposes it works)

#define Destination_Address ((unsigned int)0x30000000)
  DMA1_Stream0-&gt;M0AR = Destination_Address;


0x30000000 -&gt; is boundary of SRAM1 memory

and you need first enable SRAM1\2\3:

static void my_SRAM_init(void) {
  // activate SRAM1\2\3
  RCC-&gt;AHB2ENR |= (0x7 &lt;&lt; 29);   
}


you can reach that area with:

  uint32_t *Ptr_Dest = (uint32_t *)Destination_Address;
  printf("buffer: %lu %lu \r\n", *Ptr_Dest, *(Ptr_Dest + 1));


For those this won't work or some UB happens (corrupt data, strange placing) possible reasons:


Cache (enabled cache could corrupt data) 
Your addresses should be aligned with PSIZE and MSIZE


Example: if your MSIZE and PSIZE is 32bit address must end on 0x4

I hope this will help someone, because this was huge pain in my ass for straight 3 days, I hate it.