1、DMA2D模塊基礎(chǔ)知識(shí)
DMA2D是專用于圖像處理的專業(yè)DMA。特別是刷單色屏,刷圖片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。
DMA2D主要實(shí)現(xiàn)了兩個(gè)功能,一個(gè)是DMA數(shù)據(jù)傳輸功能,另一個(gè)是2D圖形加速功能。
DMA數(shù)據(jù)傳輸
主要是兩種方式,一個(gè)是寄存器到存儲(chǔ)器,另一個(gè)是存儲(chǔ)器到存儲(chǔ)器。通過(guò)DMA可以大大降低CPU的利用率。
2D圖形加速功能
支持硬件的顏色格式轉(zhuǎn)換和Alpha混合效果。DMA2D可在以下四種模式下工作:
·寄存器到存儲(chǔ)器
·存儲(chǔ)器到存儲(chǔ)器
·存儲(chǔ)器到存儲(chǔ)器并執(zhí)行像素格式轉(zhuǎn)換
·存儲(chǔ)器到存儲(chǔ)器并執(zhí)行像素格式轉(zhuǎn)換和混合
△DMA2D模塊結(jié)構(gòu)框示意圖
2、DMA2D前景層FIFO和背景層FIFO
DMA2D前景層FIFO和背景層FIFO獲取要復(fù)制和/或處理的輸入數(shù)據(jù)。這些FIFO根據(jù)相應(yīng)像素格式轉(zhuǎn)換器PFC中定義的顏色格式獲取像素。
通過(guò)如下一組寄存器對(duì)它們進(jìn)行編程:
·DMA2D前景層存儲(chǔ)器地址寄存器(FGMAR)
·DMA2D前景層偏移寄存器(FGOR)
·DMA2D背景層存儲(chǔ)器地址寄存器 (BGMAR)
·DMA2D背景層偏移寄存器 (BGOR)
·DMA2D行數(shù)寄存器(行數(shù)和每行像素?cái)?shù))(NLR)
DMA2D在寄存器到存儲(chǔ)器模式下工作時(shí),不激活任何FIFO。
DMA2D在存儲(chǔ)器到存儲(chǔ)器模式下工作時(shí)(無(wú)像素格式轉(zhuǎn)換和混合操作),僅激活FG FIFO,并將其用作緩沖區(qū)。
DMA2D在存儲(chǔ)器到存儲(chǔ)器模式下工作時(shí)并支持像素格式轉(zhuǎn)換時(shí)(無(wú)混合操作),不會(huì)激活BG FIFO。
3、DMA2D 前景層和背景層像素格式轉(zhuǎn)換器
DMA2D前景層和背景層像素格式轉(zhuǎn)換器 (PFC)執(zhí)行像素格式轉(zhuǎn)換,以生成每像素32位的值。PFC還能夠修改alpha通道。
轉(zhuǎn)換器在第一階段轉(zhuǎn)換顏色格式。前景層像素和背景層像素的原始顏色格式分別通過(guò) FGPFCCR和BGPFCCR的CFMT [3:0] 位來(lái)配置。
顏色格式的編碼方式如下:
·Alpha 值字段:透明【0xFF 值對(duì)應(yīng)不透明像素,0x00 對(duì)應(yīng)透明像素】
·R 字段代表紅色
·G 字段代表綠色
·B 字段代表藍(lán)色
如果原始格式不包括alpha通道,則會(huì)自動(dòng)將alpha值設(shè)為0xFF(不透明)。通過(guò)ARGB8888模式支持按32位對(duì)齊24位RGB888。
生成32位值后,即可根據(jù)FGPFCCR/ BGPFCCR寄存器的AMODE [1:0]字段修改alpha 通道。
Alpha通道可以:
·保持不變(不做修改)
·替換為FGPFCCR/BGPFCCR的ALPHA[7:0]值
·換為原始alpha值與FGPFCCR/BGPFCCR的ALPHA [7:0]值的乘積除以255所得商。
4、DMA2D混合器
DMA2D混合器成對(duì)混合源像素以計(jì)算結(jié)果像素。
混合將按以下公式執(zhí)行:
混合器不需要任何配置寄存器。是否使用混合器取決于CR寄存器的MODE[1:0]字段中定義的DMA2D工作模式。
5、DMA2D輸出PFC
輸出PFC將像素格式從32位轉(zhuǎn)換為指定的輸出格式,輸出格式在DMA2D輸出像素格式轉(zhuǎn)換器配置寄存器 (OPFCCR)的CFMT [2:0]字段中定義。
6、DMA2D輸出FIFO
輸出FIFO根據(jù)輸出PFC中定義的顏色格式對(duì)像素進(jìn)行編程。
通過(guò)如下一組寄存器定義目標(biāo)區(qū)域:
·DMA2D輸出存儲(chǔ)器地址寄存器 (OMAR)
·DMA2D輸出偏移寄存器 (OOR)
·DMA2D行數(shù)寄存器(行數(shù)和每行像素?cái)?shù))(NLR)
如果DMA2D在寄存器到存儲(chǔ)器模式下工作,則配置的輸出矩形將以DMA2D輸出顏色寄存器 (OCOLOR)中指定的顏色填充。
7、DMA2D配置
DMA2D可在以下四種模式下工作,通過(guò)CR寄存器的MODE[1:0]位選擇工作模式:
·寄存器到存儲(chǔ)器
·存儲(chǔ)器到存儲(chǔ)器
·存儲(chǔ)器到存儲(chǔ)器并執(zhí)行PFC
·存儲(chǔ)器到存儲(chǔ)器并執(zhí)行PFC和混合
寄存器到存儲(chǔ)器
寄存器到存儲(chǔ)器模式用于以預(yù)定義顏色填充用戶自定義區(qū)域。顏色格式在OPFCCR中設(shè)置。
DMA2D不從任何源獲取數(shù)據(jù)。它只將OCOLOR寄存器中定義的顏色寫入通過(guò)OMAR 尋址以及NLR和OOR定義的區(qū)域。
存儲(chǔ)器到存儲(chǔ)器
在存儲(chǔ)器到存儲(chǔ)器模式下,DMA2D不執(zhí)行任何圖形數(shù)據(jù)轉(zhuǎn)換。前景層輸入FIFO充當(dāng)緩沖區(qū),數(shù)據(jù)從FGMAR中定義的源存儲(chǔ)單元傳輸?shù)絆MAR尋址的目標(biāo)存儲(chǔ)單元。
FGPFCCR寄存器的CFMT [3:0]位中編程的顏色模式?jīng)Q定輸入和輸出的每像素位數(shù)。
對(duì)于要傳輸?shù)膮^(qū)域大小,源區(qū)域大小由NLR和FGOR寄存器定義,目標(biāo)區(qū)域大小則由 NLR和OOR寄存器定義。
存儲(chǔ)器到存儲(chǔ)器并執(zhí)行PFC
此模式下,DMA2D對(duì)源數(shù)據(jù)執(zhí)行像素格式轉(zhuǎn)換并將結(jié)果存儲(chǔ)在目標(biāo)存儲(chǔ)單元。
對(duì)于要傳輸?shù)膮^(qū)域大小,源區(qū)域大小由NLR和FGOR寄存器定義,目標(biāo)區(qū)域大小則由 NLR和OOR寄存器定義。
從FGMAR寄存器定義的位置獲取數(shù)據(jù),并由前景層PFC進(jìn)行處理。原始像素格式通過(guò) FGPFCCR寄存器配置。
在顏色轉(zhuǎn)換執(zhí)行期間,可根據(jù)FGPFCCR寄存器中編程的值添加或更改alpha值。如果原始圖像沒(méi)有alpha通道,則會(huì)自動(dòng)添加一個(gè)默認(rèn)的alpha值0xFF以獲得完全不透明的像素。
可根據(jù)FGPFCCR寄存器的AMODE [1:0]位修改alpha值:
·保持不變
·替換為FGPFCCR寄存器的ALPHA[7:0]值中定義的值
·替換為原始值與FGPFCCR寄存器的ALPHA[7:0]值的乘積除以255所得商
結(jié)果得到的32位數(shù)據(jù)由OUT PFC編碼成OPFCCR寄存器的CFMT [2:0]字段所指定的格式。數(shù)據(jù)經(jīng)處理后,將寫入OMAR尋址的目標(biāo)存儲(chǔ)單元。
DMA數(shù)據(jù)傳輸
此模式下,將在前景層FIFO和背景層FIFO(分別在FGMAR和BGMAR中定義)獲取兩個(gè)源圖像。
必須按存儲(chǔ)器到存儲(chǔ)器模式中所述配置兩個(gè)像素格式轉(zhuǎn)換器。由于這兩個(gè)像素格式轉(zhuǎn)換器各自獨(dú)立,因此其配置可以不同。在每個(gè)像素都通過(guò)相應(yīng)的PFC轉(zhuǎn)換為32位后,將根據(jù)上述公式進(jìn)行混合:輸出PFC將根據(jù)指定的輸出格式對(duì)得到的32位像素值進(jìn)行編碼,并且編碼數(shù)據(jù)將寫入OMAR尋址的目標(biāo)存儲(chǔ)單元。
來(lái)源:華芯微特32位MCU
-
mcu
+關(guān)注
關(guān)注
146文章
16796瀏覽量
349333 -
模塊
+關(guān)注
關(guān)注
7文章
2626瀏覽量
47212 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7402瀏覽量
163389 -
dma
+關(guān)注
關(guān)注
3文章
554瀏覽量
100210
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論