ports/stm32: Increase SPI DMA efficency.

The SPI fifo triggers a request when it has 4-bytes of data allowing
for more efficent bus usage. The same technique is used on the H7
to reduce system bus matrix resources.
This commit is contained in:
Kwabena W. Agyeman 2025-06-22 00:08:44 -07:00
parent 3984ec783f
commit c4795d3191

View File

@ -330,8 +330,8 @@ static int omv_spi_dma_init(omv_spi_t *spi, uint32_t direction, omv_spi_config_t
dma_init->Direction = direction; dma_init->Direction = direction;
dma_init->SrcInc = (direction == DMA_PERIPH_TO_MEMORY) ? DMA_SINC_FIXED : DMA_SINC_INCREMENTED; dma_init->SrcInc = (direction == DMA_PERIPH_TO_MEMORY) ? DMA_SINC_FIXED : DMA_SINC_INCREMENTED;
dma_init->DestInc = (direction == DMA_MEMORY_TO_PERIPH) ? DMA_DINC_FIXED : DMA_DINC_INCREMENTED; dma_init->DestInc = (direction == DMA_MEMORY_TO_PERIPH) ? DMA_DINC_FIXED : DMA_DINC_INCREMENTED;
dma_init->SrcDataWidth = (config->datasize == 8) ? DMA_SRC_DATAWIDTH_BYTE : DMA_SRC_DATAWIDTH_WORD; dma_init->SrcDataWidth = DMA_SRC_DATAWIDTH_WORD;
dma_init->DestDataWidth = (config->datasize == 8) ? DMA_DEST_DATAWIDTH_BYTE : DMA_DEST_DATAWIDTH_WORD; dma_init->DestDataWidth = DMA_DEST_DATAWIDTH_WORD;
dma_init->SrcBurstLength = 1; dma_init->SrcBurstLength = 1;
dma_init->DestBurstLength = 1; dma_init->DestBurstLength = 1;
dma_init->TransferEventMode = DMA_TCEM_BLOCK_TRANSFER; dma_init->TransferEventMode = DMA_TCEM_BLOCK_TRANSFER;
@ -368,7 +368,7 @@ static int omv_spi_dma_init(omv_spi_t *spi, uint32_t direction, omv_spi_config_t
return -1; return -1;
} }
dma_descr->InitLinkedList.Priority = DMA_LOW_PRIORITY_LOW_WEIGHT; dma_descr->InitLinkedList.Priority = DMA_HIGH_PRIORITY;
dma_descr->InitLinkedList.LinkStepMode = DMA_LSM_FULL_EXECUTION; dma_descr->InitLinkedList.LinkStepMode = DMA_LSM_FULL_EXECUTION;
dma_descr->InitLinkedList.LinkedListMode = DMA_LINKEDLIST_CIRCULAR; dma_descr->InitLinkedList.LinkedListMode = DMA_LINKEDLIST_CIRCULAR;
dma_descr->InitLinkedList.LinkAllocatedPort = DMA_LINK_ALLOCATED_PORT0; dma_descr->InitLinkedList.LinkAllocatedPort = DMA_LINK_ALLOCATED_PORT0;