Part Number: AM3352
(For further background, this is a custom board, the chip model is AM3352BZCE60, on the device I'm testing with datecode/lot trace is 54ADHRW)
For background, I've written some code in C to use the EHRPWM_1B (mapped to ball V5) pin to output a data pulse train to control an array of SK6812-SIDE leds. The pulse train has a nominal period of 1200ns and the duty cycle for a 0 and 1 are ~25% and ~50% respectively.
The pulse train transmission is implemented via DMA, where a series of DMA transfers are triggered by PWM1 DMA channel/event 15. The DMA engine then writes to the value of the CMPB register of the ePWM1 module from an array in reserved RAM while clearing the interrupt/event each time a transfer is completed.
What I've noticed though is that when sending pwm data to the LEDs, some of the data frames get random errors/glitches throughout them and the rate at which these errors occur seems to correlate with the cpu activity of the chip. I've tried to capture some of the glitches on an oscilloscope but I have not been able to capture one and save it yet, (my equipment may not be up to the task).
The first questions that come to mind are:
Are the DMA channels that I'm using being used by something else at the same time? I'm currently using DMA channel 15 for the pwm events (I believe I'm forced to use channel 15 to trigger on EPWM interrupts) and using channel 20 to action the write to CMPB and channel 21 clear the interrupt by writing to the ETCLR register (These can be set to any DMA channel).
Are the DMA PaRAM sets that I'm using being used by something else at the same time? I'm currently using PaRAM sets 151-154 for coordinating the DMA transfers.
Can the EPWM1 module be relied upon to output a pulse train without glitches in my implementation? The leds that I'm using have some timing tolerances defined from 20ns all the way up to 360ns.
Is there any known issue with crosstalk between ball V5(EHRPWM_1B) and some cpu signal?
Is there something I'm not considering entirely?
Any help would be greatly appreciated.