So as I understand, these functions (DMA Channels) are fixed and connected to specific/predefined interfaces like timers, UART or SPI and can be configured only with corresponding interface in order to decries clock cycles for data transfer. In other words I can't choose any random interface on software level and say ok, now do data transfer for ADC for example (if there is no DMA Channel for it). I think I got it. Thank you.
Depending on the hardware, you may or may not have the ability to transfer data between any device and memory. I've worked with a number of architectures where you just give the DMA a source address, a destination address, whether to increment, decrement, or leave static each of those addresses with each transfer, and the amount of data to transfer, and it handles the transfer.
It depends entirely on the DMA engine’s design. You could have mere copiers to more sophisticated ones that understand a lot more context. If the DMA is based on a one-size-fits-all design principle then yes, you could transfer between any peripheral on your chip to any other peripheral or memory.
As I've always understood it, a channel is assigned to a specific device. It can be rotated to another device, but only after completing its transfer for the first device.
Just discovered this channel. Awesome. You're a very good teacher, thank you.
So underrated content. Thank you!
Very cool overview about what DMA is! Easy to understand explanation
this should be trending honestly
Wish I found your videos sooner! Good stuff
Excellent teaching : the what and the why...thanks !
Excellent video, keep up the good work!
Thank you... perfect explanation!!
How're you writing like that?
wowie this is useful thanks a lot
So as I understand, these functions (DMA Channels) are fixed and connected to specific/predefined interfaces like timers, UART or SPI and can be configured only with corresponding interface in order to decries clock cycles for data transfer. In other words I can't choose any random interface on software level and say ok, now do data transfer for ADC for example (if there is no DMA Channel for it).
I think I got it. Thank you.
Depending on the hardware, you may or may not have the ability to transfer data between any device and memory. I've worked with a number of architectures where you just give the DMA a source address, a destination address, whether to increment, decrement, or leave static each of those addresses with each transfer, and the amount of data to transfer, and it handles the transfer.
It depends entirely on the DMA engine’s design. You could have mere copiers to more sophisticated ones that understand a lot more context. If the DMA is based on a one-size-fits-all design principle then yes, you could transfer between any peripheral on your chip to any other peripheral or memory.
Thanks!!
But sir here we use the arrays that are a run-time storage right, here it's possible for that
why DMA have number of channels? Do they help to increase the speed of transfer?
As I've always understood it, a channel is assigned to a specific device. It can be rotated to another device, but only after completing its transfer for the first device.
That means DMA interact with CPU?
No entendí nada =/
I'm guessing you understand a lot more than you think!
I'm Alone 😍😥