【MSPM0G3507 系列】FIFO模式DMA轉(zhuǎn)運(yùn)
FIFO (First Input First Output 先進(jìn)先出隊(duì)列)
舉例:1號先進(jìn)入通道,2號再進(jìn)入通道,3號最后進(jìn)入通道;1號先出通道,2號再出,3號最后出。
說明
在配置ADC的時(shí)候,有0-11總共12個(gè)Memory。
在不使用FIFO的情況下,假如配置了四個(gè)通道,Ch1 —— MEM0、Ch2 —— MEM1、Ch3 —— MEM2、Ch4 —— MEM3。
打開FIFO后,將12個(gè)FIFO整合成了一個(gè)FIFO,在其中將兩個(gè)16bits的MEM組合成一個(gè)32bits的MEM,即從16位的存儲空間變?yōu)榱?2位的存儲空間。原本有12個(gè)16bits的MEM,現(xiàn)在變?yōu)榱?個(gè)32bits的MEM,此時(shí)ADC將會先采樣6個(gè)數(shù)據(jù),填充滿這6個(gè)32bits的MEM后,再觸發(fā)DMA轉(zhuǎn)運(yùn)將數(shù)據(jù)送出去,故FIFO的意義在于:
- 有緩沖保護(hù),數(shù)據(jù)丟失風(fēng)險(xiǎn)降低。
- DMA請求頻率降低了。
- 中斷的次數(shù)減少,CPU的干預(yù)少。
- 突發(fā)傳輸優(yōu)化,總線利用率增高。
啟用FIFO后的DMA配置修改

- DMA Samples Count:原本為 1,由于開啟了FIFO,12個(gè)MEM合并成了6個(gè)MEM,并且將6個(gè)MEM填充滿后才會觸發(fā)DMA轉(zhuǎn)運(yùn),故將其修改為6。
- Enable DMA Triggers:原本為 "MEM0 result loaded interrupt",由于將12個(gè)16bits的MEM合并成了6個(gè)32bits的MEM,但是ADC采樣的數(shù)據(jù)仍然是16bits的數(shù)據(jù),在最后一個(gè)32bit的MEM中,填充到前面一位的MEM10看作完成填充,觸發(fā)DMA進(jìn)行轉(zhuǎn)運(yùn)最好。
- Source / Destination Length:原本都為Half Word,由于12個(gè)16bits的MEM,合并成了6個(gè)32bits的MEM,故將DMA轉(zhuǎn)運(yùn)數(shù)據(jù)長度改為Word(4 Bytes -> 32 bits)。
- Transfer Size:原本為1000,由于傳輸16bits變?yōu)榱藗鬏?2bits,故除以二得到500。
FILO (First Input Last Output 先進(jìn)后出棧)
舉例:1號先進(jìn)入通道,2號再進(jìn)入通道,3號最后進(jìn)入通道;3號先出通道,2號再出,1號最后出。
博客導(dǎo)航
本文來自博客園,作者:膝蓋中箭衛(wèi)兵,轉(zhuǎn)載請注明原文鏈接:http://www.rzrgm.cn/Skyrim-sssuuu/p/18897146

浙公網(wǎng)安備 33010602011771號
https://orcid.org/0000-0001-5102-772X