esp_dma_split_rx_buffer_to_cache_aligned() function
Split DMA RX buffer to cache aligned buffers brief sketch: cache alignment delimiter cache alignment delimiter │ │ Origin Buffer │ Origin Buffer │ │ │ │ │ │ ▼ ▼ ▼ │ ...---xxxxx|xxxxxxxxxxxxxxxxxxxxxxxxxxxxx|xxxxx----... │ │ │ │ │ │ ▼ │ │ │ |xxxxxxxxxxxxxxxxxxxxxxxxxxxxx| │ │ │ ▲ │ ▼ │ │ │ Aligned buffers └──► Head Body Tail ◄──────┘ │ │ ▼ ▼ |xxxxx......| |xxxxx......|
Arguments
rx_buffer
The origin DMA buffer used for receiving data
buffer_len
rx_buffer length
align_buf_array
Aligned DMA buffer array
ret_stash_buffer
Allocated stash buffer (caller should free it after use)
Return value
- ESP_OK: Split to aligned buffer successfully - ESP_ERR_INVALID_ARG: Split to aligned buffer failed because of invalid argument
Notes
After the original RX buffer is split into an array, caller should mount the buffer array to the DMA controller in scatter-gather mode. Don't read/write the aligned buffers before the DMA finished using them.