MCX N系列MCU介绍
MCX N系列是高性能、低功耗微控制器,配备智能外设和加速器,可提供多任务功能和高能效。选择MCX N系列,包含eIQ Neutron神经处理单元(NPU),适用于机器学习应用。低功耗高速缓存增强了系统性能,双块Flash存储器和带ECC检测的RAM支持系统功能安全,提供了额外的保护和保证。
SmartDMA介绍 MCX N系列微控制器全系带有SmartDMA协处理器。该协处理器支持高效汇编代码指令运行,主要功能包含加减,左移右移,字节位域交换,位翻转,访问内存外设,单周期读写IO,接收外部触发信号等。为了方便客户工程师简单使用,我将常用的一些功能,通过数组的形式放在主代码工程中,用户只需要调用API函数即可。今天主要介绍如何使用SmartDMA对图像进行预处理。
图像处理介绍及应用 在嵌入式领域,我们经常需要对图像的数据进行处理。比如,我们从原图像接收到的数据,每个像素的高低字节可能是反的,又比如,我们可能只想要RGB数据,但是原图像数据可能还带有透明度的数据成分,这时我们想把透明度的数据去掉。
有时候我们显示接口要求的数据格式可能与我们RAM中的数据格式不一致,这时候就需要对图像数据进行预处理,然后再显示。还有时候,针对RAM中存放的显示数据,我们想挑选其中的一部分进行显示,比如隔点隔行显示。上面这些情况都可以通过CPU核来处理,但这种重复简单的工作无形给CPU造成很大的负担。SmartDMA可以很容易实现上述功能,并且不需要打扰CPU核工作。
SmartDMA对图像处理的实现
针对目前常用的情况,我用SmartDMA实现了如下几个功能:
1) 可以作为通用的DMA来实现,因为SmartDMA可以访问内存和外设,所以它可以作为一个通用的DMA。
2) 字节翻转功能。Smart DMA有字节翻转、位翻转等功能,所以又可以对数据进行预处理。字节翻转可以是一个半字(Half Word)里面的高低位字节翻转。也可以是一个字(Word)里面的最高字节和最低字节翻转。
3) 对一定数据长度的字节翻转。比如每次图像处理的一组数据有32个字节,SmartDMA可以将这些字节进行颠倒,也就是说第一个字节和最后一个字节互换,第二个字节和倒数第二个字节互换,以此类推。
4) 针对图像的数据格式实现RGB565和RGB888之间的互换,这也是为了应对不同的显示接口格式与RAM中存放的数据格式不一致的问题。
Demo展示 在MCXN系列微处理器的软件开发包SDK里面已经有一个相应的例程(lvgl_demo_widgets_bm)来实现这个功能。它实现的是一个流行的图形用户界面Little VGL的常用部件功能。在显示驱动中,用户既可以通过普通的DMA传送数据到LCD接口,也可以配置为通过SmartDMA来实现数据的传输。
使用的开发板是FRDM-MCXN947(FRDM-MCXN947 Development Board using MCUXpresso | NXP Semiconductors), 该开发板具有LCD接口。LCD使用FlexIO来驱动。LCD接口支持NXP LCD显示屏模块LCD-PAR-S035(LCD-PAR-S035 | NXP Semiconductors)。该LCD支持480x320分辨率。
SmartDMA给用户提供API接口有如下几个:
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显示如下:
审核编辑:刘清
-
加速器
+关注
关注
2文章
790浏览量
37663 -
数据传输
+关注
关注
9文章
1790浏览量
64402 -
微处理器
+关注
关注
11文章
2243浏览量
82258 -
RGB
+关注
关注
4文章
796浏览量
58331 -
LCD接口
+关注
关注
0文章
8浏览量
1886
原文标题:MCX N微处理器SmartDMA秘籍之-对图像数据的定制处理
文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论