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