My case is ADCHS with DMA burst transfer.
Questions
Thanks
Hi @robberpen
1. Setting TRANSFERSIZE to 0:
• Since the flow control is being managed by the peripheral (in this case, ADCHS), the TRANSFERSIZE field is not used to limit the number of transfers (as indicated by the red-highlighted text in your image). Instead, the peripheral controls the number of transfers in each burst, so setting the TRANSFERSIZE to 0 is valid when the peripheral is the flow controller.
2. DMA Burst Request and Transfer Size:
• The DMA burst request signal initiates the transfer. Typically, the burst size for each transfer is set in the burst size configuration of the DMA or ADCHS peripheral. If the burst transfer size exceeds 256 bytes (your allocated buffer size), you will run into issues, which might explain why your DMA is exceeding the 256-byte buffer. You’ll need to review your DMA burst size configuration in the ADCHS peripheral or the DMA settings to match it to your allocated buffer size.
3. DMA and Linked List Item (LLI) Switching:
• In scatter/gather mode, the DMA switches to the next LLI (Linked List Item) once the current transfer completes. If the DMA is not switching to the next LLI, it could indicate that the DMA doesn’t detect that the current buffer is full or the transfer size isn’t being processed correctly.
BR
Hang
Thanks your clarify
Based your 3rd reply
In scatter/gather mode, the DMA switches to the next LLI (Linked List Item) once the current transfer completes
What is the exactly defination of "transfer completes" for peripheral as flow-control(HSADC) ?
In this case I set DMA control register b[14:12] = burst (0x0 << 12) . that is means DMA burst "transfer completed" in burst on 4 bytes = (1(SBSIZE) x 4(SWIDTH))? then DMA will lookup next LLI or raise DMA ISR for furture set/confiig? see below another post for sample code.
But as my tested, The behavior is not like as what I expect. it never raise any DMA interrupt nor stop transfer untill SRAM been full-up.