Triggering SPI DMA transfer with TIM1 event.
Hi everyone,
I am using STM32F410 CPU.
I need to send 4096 bytes of data via SPI using DMA transfer.
The transfer should be triggered by each TIM1 event.
I have read these two posts:
https://community.st.com/t5/stm32cubemx-mcus/trigger-spi-dma-transfer-from-timer-directly/td-p/300292
https://community.st.com/t5/stm32-mcus-products/dma-only-sending-one-byte-and-not-whole-buffer/td-p/434611
Where similar issues were discussed.
But faced with some problem.
I have selected two DMA streams.
One is memory to SPI_CR register. The request source is TIM1.
Other is memory to SPI data register. The request source is SPI.
I have preprogrammed DMA NTDR register with data size i want
to send over SPI.
When TIM1 event occurs first DMA stream transfers data to SPI
config register. It enables SPI.
SPI starts to generate requests and data is loaded over second
stream.
I see that it is working but only one time.
The problem is that when second request from TIM1 happen
SPI is already enabled. So update of SPI SR register not needed.
But the main problem is that NDTR is already empty.
And no second transfer happen.
I don't know how to update NDTR again?
Or disable SPI after it completed DMA transfer?
I can't enable circular mode because SPI start transmitting
all the time without TIM1 synchronization.
I would like to do it without CPU and any interrupts.
Is that possible?
Thanks
