Part Number: TMS320F28388D
Other Parts Discussed in Thread: C2000WARE
I'm working with F28388D as an FSI Lead and F280039C as FSI nodes in a daisy-chain configuration similar to the FSI daisy-chain application note.
I have the 8 FSI RX channels split equally across the two F28388D CPU1/CPU2 cores (each manages 4 FSI RX). I had success with the FSI RX DMA c2000ware example using 2 DMA channels for the FSI RX - 1 for the TAGUDATA and 1 for DATA. Using 2 DMA channels per FSI RX channel, I'm running into a limitation with number of DMA channels per F28388D CPU (6 channels per CPU), and can only handle 3 FSI RX channels instead of 4.
Is it possible to move an incoming FSI RX data packet TAGUDATA (1 word) and DATA (16 words) using a single DMA channel with a single burst from the FSI RX trigger?
My fundamental problem is that the FSIRX_TAGUDATA register is not adjacent to the FSIRX_DATA in memory. The C2000ware examples solved this by using two DMA channels, one for TAGUDATA and one for DATA. But that limits you to 3 FSI RX since there are only 6 DMA channels.
Looking at the FSI RX memory map, Table 32-40. FSI_RX_REGS Registers of F28388D TRM,
RX_FRAME_TAG_UDATA @ 7h offset
RX_BUF_BASE_y @ 40h + formula offset
to try and move everything from RX_FRAME_TAG_UDATA all the way to the end of RX_BUF_BASE_y would require moving 72 uint16 words, which is beyond the DMA capability - even using 32bit words within a single burst, num within a burst is limited to 32, i.e. 64 uint16's. (not sure that works either since the 28388D TRM still shows max of 32 16-bit words max per burst in Table 11-2. BURSTSIZE versus DATASIZE Behavior.
Is there a workaround for a single DMA to move the RX_FRAME_TAG_UDATA @ 7h (one word), then source_addr skip to the RX_BUF_BASE_y @ 40h (16 words, burst_step = 1) to move 17 words total in a burst from a single FSI RX trigger?
Or to setup a space in memory where FSI RX TAGUDATA and DATA are adjacent so the DMA source_addr can simply increment by 1 (burst_step of 1 address)?
Regards,
Jesse