CyDmaTdSetConfiguration(DMA_1_TD, 4, DMA_1_TD, DMA_1__TD_TERMOUT_EN | CY_DMA_TD_INC_SRC_ADR | CY_DMA_TD_AUTO_EXEC_NEXT);
to CyDmaTdSetConfiguration(DMA_1_TD, 4, DMA_1_TD, DMA_1__TD_TERMOUT_EN | CY_DMA_TD_INC_SRC_ADR);
Auto Next checkbox should not be checked in DMA wizard tool.
The answer by XiaoweiZ_71 is the closest to the original question, So I will give him credit. The project I included was pretty well hacked up.
The "correct" answer is 1) do not use CY_DMA_TD_AUTO_EXEC_NEXT (per XiaolweiZ_71). *and* 2) the Serial Shift Register *cannot be used with DMA with more than 8 bits configured in the shift register* 32 bits configured in the shift register with 4 bytes per burst produces 3 "0" byte outputs and 1 byte with data.
That limitation is *not* an issue, since the goal is to load from an array in memory. It does allow for running arbitrarily large arrays without interrupting the cpu, which was the goal
What I do not understand is why the DMA loops, without the CY_DMA_TD_AUTO_EXEC_NEXT, but I am not going to obsess over it.