Part Number: TMS320F28388D
Other Parts Discussed in Thread: SYSCONFIG
Hi,
I'm designing a system where SPI transactions are executed via DMA and triggered by EPWM10SOCA event. This works most of the time but I see periodic cases where the SPI transactions don't happen:

On the image above, we can see that most of the time, on a rising edge of EPWM10, a SPI transaction is starting (like cases 1 and 2).
But in case 3, the PWM10 rising edge didn't end up triggering anything on the SPI.
My configuration is the following:
- PWM10 is a 7.5kHz square signal (EPWM in counting up mode, CMPA = period / 2)
- PWM10 triggers SOCA event:
EPWM_setADCTriggerSource(EPWM10_BASE, EPWM_SOC_A, EPWM_SOC_TBCTR_ZERO);
EPWM_setADCTriggerEventPrescale(EPWM10_BASE, EPWM_SOC_A, 1);
EPWM_enableADCTriggerEventCountInit(EPWM10_BASE, EPWM_SOC_A);
EPWM_enableADCTrigger(EPWM10_BASE, EPWM_SOC_A);
- DMA is triggered by SOCA event:
DMA_configAddresses(DMA_CH5_BASE, (uint16_t *)(SPIB_BASE + SPI_O_TXBUF), srcAddr);
DMA_configMode(DMA_CH5_BASE, DMA_TRIGGER_EPWM10SOCA, DMA_CFG_ONESHOT_DISABLE | DMA_CFG_CONTINUOUS_ENABLE | DMA_CFG_SIZE_16BIT);
How can I troubleshoot this? Any idea why at specific times the DMA or the SPI peripheral is not doing its job?
Thanks,
Stephane

