相信寫過8051的人,一定都知道,很多事都要8051「親恭親為」,而在ST STM 32F 系列,其實有一個非常好用的功能:DMA(Direct
memory access controller) , 其實這個模組有點像是電腦上的直接存取記憶體,但又有點不太一樣。其實他的想法和原理是差不多的,就是希望有模組可以幫忙分擔MCU的處理,而這些事不需要及時且只是記憶體處理。
memory access controller) , 其實這個模組有點像是電腦上的直接存取記憶體,但又有點不太一樣。其實他的想法和原理是差不多的,就是希望有模組可以幫忙分擔MCU的處理,而這些事不需要及時且只是記憶體處理。
STM 32F 3 所支援的DMA有2組,每組可以支援的channel 數不同,每個channel 只能支援一個功能,也就是是一個有限的資源,自己在規劃的時候要注意一下。當DMA的資源都被分配完的時候,就只好讓MCU「親恭親為」了。DMA可以存取的資料長度為1BYTE(BYTE)/2BYTE(HALF WORD)/4BYTE(WORD),這裡需要注意的是,只有AHB只能支援4BYTE(WORD),而ST的DMA在優先權上分成四種。
–Very high
priority
priority
– High
priority
priority
– Medium
priority
priority
–
Low priority
Low priority
值得注意的地方是,當優先權一樣的時候,會看channel的數值,舉例來說:優先權一樣時,ch0會比ch4 優先處理。
ST的DMA支援三種中斷源,包含了,資料傳送完成後,資料傳送一半時和傳送錯誤。這樣可以增加DMA使用的調性,這部分會在未來有機會的時候多加介紹如何善用DMA。
下圖為DMA1可以操作的模組。
下圖為DMA2可以操作的模組。
下一篇: USART + DMA