Hi, Turboman,
Firstly, it seems you use the linked DMA channel to transfer data from SPI receiver data register to memory, I have checked the section 3.3.5.1 DMA channel assignments in the MC56F847xxRM, the SPI transmitter and receiver have it's own DMA channels. For example channel 2 in DMA0 is "SPI0 Receiver Full", channel2 in DMA1 is "SPI0 Transmitter Empty", in other words, you can use DMA0 to transfer from SPI0 receiver to memory, while use DMA1 to transfer from memory to SPI0 transmitter data register.
Secondly, the source/destination register should be Btye address, in other words, the actual register should be left shift one bit:
DMA_SAR1=(long)&array[0]<<1;
DMA_DAR1=(long)FQSPI0_SPDTR<<1;
I have developed an example, but it is not fully tested, pls refer to it.
BTW, there is a note about the SPI plus DMA, it says "Restriction: Do not use CPHA = 0 while in DMA mode.", pls refer to the CPHA bit explanation in section 36.3.1 SPI Status and Control Register (QSPIx_SPSCR).
Clock Phase:
This read/write bit controls the timing relationship between the serial clock and SPI data. To transmit data
between SPI modules, the SPI modules must have identical CPHA values. When CPHA = 0, the SS_B pin
of the slave SPI module must be set to 1 between data words. To set SSB to 1 between data words when
SSB_AUTO is 1, set SSB_STRB to 1.
Restriction: Do not use CPHA = 0 while in DMA mode.
In conclusion, pls use two DMA channels, set CPHA bit if possible. If you still have issue, pls update the case, I will test on my board.
BR
XiangJun Rong