MCX N系列MCU介紹
MCX N系列是高性能、低功耗微控制器,配備智能外設(shè)和加速器,可提供多任務(wù)功能和高能效。選擇MCX N系列,包含eIQ Neutron神經(jīng)處理單元(NPU),適用于機(jī)器學(xué)習(xí)應(yīng)用。低功耗高速緩存增強(qiáng)了系統(tǒng)性能,雙塊Flash存儲(chǔ)器和帶ECC檢測(cè)的RAM支持系統(tǒng)功能安全,提供了額外的保護(hù)和保證。
SmartDMA介紹 MCX N系列微控制器全系帶有SmartDMA協(xié)處理器。該協(xié)處理器支持高效匯編代碼指令運(yùn)行,主要功能包含加減,左移右移,字節(jié)位域交換,位翻轉(zhuǎn),訪問(wèn)內(nèi)存外設(shè),單周期讀寫IO,接收外部觸發(fā)信號(hào)等。為了方便客戶工程師簡(jiǎn)單使用,我將常用的一些功能,通過(guò)數(shù)組的形式放在主代碼工程中,用戶只需要調(diào)用API函數(shù)即可。今天主要介紹如何使用SmartDMA對(duì)圖像進(jìn)行預(yù)處理。
圖像處理介紹及應(yīng)用 在嵌入式領(lǐng)域,我們經(jīng)常需要對(duì)圖像的數(shù)據(jù)進(jìn)行處理。比如,我們從原圖像接收到的數(shù)據(jù),每個(gè)像素的高低字節(jié)可能是反的,又比如,我們可能只想要RGB數(shù)據(jù),但是原圖像數(shù)據(jù)可能還帶有透明度的數(shù)據(jù)成分,這時(shí)我們想把透明度的數(shù)據(jù)去掉。
有時(shí)候我們顯示接口要求的數(shù)據(jù)格式可能與我們RAM中的數(shù)據(jù)格式不一致,這時(shí)候就需要對(duì)圖像數(shù)據(jù)進(jìn)行預(yù)處理,然后再顯示。還有時(shí)候,針對(duì)RAM中存放的顯示數(shù)據(jù),我們想挑選其中的一部分進(jìn)行顯示,比如隔點(diǎn)隔行顯示。上面這些情況都可以通過(guò)CPU核來(lái)處理,但這種重復(fù)簡(jiǎn)單的工作無(wú)形給CPU造成很大的負(fù)擔(dān)。SmartDMA可以很容易實(shí)現(xiàn)上述功能,并且不需要打擾CPU核工作。
SmartDMA對(duì)圖像處理的實(shí)現(xiàn)
針對(duì)目前常用的情況,我用SmartDMA實(shí)現(xiàn)了如下幾個(gè)功能:
1) 可以作為通用的DMA來(lái)實(shí)現(xiàn),因?yàn)镾martDMA可以訪問(wèn)內(nèi)存和外設(shè),所以它可以作為一個(gè)通用的DMA。
2) 字節(jié)翻轉(zhuǎn)功能。Smart DMA有字節(jié)翻轉(zhuǎn)、位翻轉(zhuǎn)等功能,所以又可以對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。字節(jié)翻轉(zhuǎn)可以是一個(gè)半字(Half Word)里面的高低位字節(jié)翻轉(zhuǎn)。也可以是一個(gè)字(Word)里面的最高字節(jié)和最低字節(jié)翻轉(zhuǎn)。
3) 對(duì)一定數(shù)據(jù)長(zhǎng)度的字節(jié)翻轉(zhuǎn)。比如每次圖像處理的一組數(shù)據(jù)有32個(gè)字節(jié),SmartDMA可以將這些字節(jié)進(jìn)行顛倒,也就是說(shuō)第一個(gè)字節(jié)和最后一個(gè)字節(jié)互換,第二個(gè)字節(jié)和倒數(shù)第二個(gè)字節(jié)互換,以此類推。
4) 針對(duì)圖像的數(shù)據(jù)格式實(shí)現(xiàn)RGB565和RGB888之間的互換,這也是為了應(yīng)對(duì)不同的顯示接口格式與RAM中存放的數(shù)據(jù)格式不一致的問(wèn)題。
Demo展示 在MCXN系列微處理器的軟件開發(fā)包SDK里面已經(jīng)有一個(gè)相應(yīng)的例程(lvgl_demo_widgets_bm)來(lái)實(shí)現(xiàn)這個(gè)功能。它實(shí)現(xiàn)的是一個(gè)流行的圖形用戶界面Little VGL的常用部件功能。在顯示驅(qū)動(dòng)中,用戶既可以通過(guò)普通的DMA傳送數(shù)據(jù)到LCD接口,也可以配置為通過(guò)SmartDMA來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳輸。
使用的開發(fā)板是FRDM-MCXN947(FRDM-MCXN947 Development Board using MCUXpresso | NXP Semiconductors), 該開發(fā)板具有LCD接口。LCD使用FlexIO來(lái)驅(qū)動(dòng)。LCD接口支持NXP LCD顯示屏模塊LCD-PAR-S035(LCD-PAR-S035 | NXP Semiconductors)。該LCD支持480x320分辨率。
SmartDMA給用戶提供API接口有如下幾個(gè):
enum _smartdma_display_api { kSMARTDMA_FlexIO_DMA_Endian_Swap = 0U, kSMARTDMA_FlexIO_DMA_Reverse32, kSMARTDMA_FlexIO_DMA, kSMARTDMA_FlexIO_DMA_Reverse, /*!< Send data to FlexIO with reverse order. */ kSMARTDMA_RGB565To888, /*!< Convert RGB565 to RGB888 and save to output memory, use parameter smartdma_rgb565_rgb888_param_t. */ kSMARTDMA_FlexIO_DMA_RGB565To888, /*!< Convert RGB565 to RGB888 and send to FlexIO, use parameter smartdma_flexio_mculcd_param_t. */ kSMARTDMA_FlexIO_DMA_ARGB2RGB, /*!< Convert ARGB to RGB and send to FlexIO, use parameter smartdma_flexio_mculcd_param_t. */ kSMARTDMA_FlexIO_DMA_ARGB2RGB_Endian_Swap, /*!< Convert ARGB to RGB, then swap endian, and send to FlexIO, use parameter smartdma_flexio_mculcd_param_t. */ kSMARTDMA_FlexIO_DMA_ARGB2RGB_Endian_Swap_Reverse, /*!< Convert ARGB to RGB, then swap endian and reverse, and send to FlexIO, use parameter smartdma_flexio_mculcd_param_t. */ };
Demo顯示如下:
審核編輯:劉清
-
加速器
+關(guān)注
關(guān)注
2文章
790瀏覽量
37674 -
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
1792瀏覽量
64410 -
微處理器
+關(guān)注
關(guān)注
11文章
2244瀏覽量
82267 -
RGB
+關(guān)注
關(guān)注
4文章
796瀏覽量
58336 -
LCD接口
+關(guān)注
關(guān)注
0文章
8瀏覽量
1886
原文標(biāo)題:MCX N微處理器SmartDMA秘籍之-對(duì)圖像數(shù)據(jù)的定制處理
文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論