2013年2月28日 星期四

[STM32F3 教學] DMA





相信寫過8051的人,一定都知道,很多事都要8051「親恭親為」,而在ST STM 32F 系列,其實有一個非常好用的功能:DMA(Direct
memory access controller)
其實這個模組有點像是電腦上的直接存取記憶體,但又有點不太一樣。其實他的想法和原理是差不多的,就是希望有模組可以幫忙分擔MCU的處理,而這些事不需要及時且只是記憶體處理。









STM 32F 3 所支援的DMA2組,每組可以支援的channel 數不同,每個channel 只能支援一個功能,也就是是一個有限的資源,自己在規劃的時候要注意一下。當DMA的資源都被分配完的時候,就只好讓MCU「親恭親為」了。DMA可以存取的資料長度為1BYTE(BYTE)/2BYTE(HALF WORD)/4BYTE(WORD),這裡需要注意的是,只有AHB只能支援4BYTE(WORD),而STDMA在優先權上分成四種。




–Very high
priority




– High
priority




– Medium
priority





Low priority




值得注意的地方是,當優先權一樣的時候,會看channel的數值,舉例來說:優先權一樣時,ch0會比ch4 優先處理。




STDMA支援三種中斷源,包含了,資料傳送完成後,資料傳送一半時和傳送錯誤。這樣可以增加DMA使用的調性,這部分會在未來有機會的時候多加介紹如何善用DMA







下圖為DMA1可以操作的模組。












下圖為DMA2可以操作的模組。










下一篇: USART + DMA



沒有留言:

張貼留言