Max 发表于 2020-3-16 10:28:33

基于Nuvoton M480系列微控制器高品质OLED动画显示解决方案

这是使用NuMicro M480系列微控制器在OLED萤幕上显示静态与动态资讯的电竞参考设计。NuMicro M480系列微控制器强大的运算力所赐,在OLED萤幕上除了显示一般静态资讯外,如环境温度、系统状态、显示卡风扇转速等,更可以即时解码GIF动态影像,在OLED萤幕上流畅地播放动画。(文末有惊喜)
此参考设计中包含了emWin GUI资料库,搭配易用的视窗软件,即可快速勾勒出精致的图形界面,让整体OLED画面看起来更专业。此外还内置字型库用以输出高品质文字。
NuMicro M480系列微控制器基于Arm Cortex-M4内核,带有数位讯号处理指示(DSP)与浮点数运算单元(FPU),主频最高可达192 MHz,能够快速解码GIF动态影像,多达512KB嵌入式快闪记忆体与160KB 嵌入式记忆体,可用以储存字型库及图型快取(Cache)。除了本身内部记忆体外还支持外部SPI Flash的SPIM通讯界面,最大可扩充容量到32Mbytes并且可以设定为直接记忆体映射模式(Direct Memory Map Mode)以及32Kbytes记忆体快取来加速存取速度,让OLED萤幕能流畅地播放动画。

(一) 硬件界面线路

[*]
SPI NOR Flash : 因显示的(BMP、PNG、JPEG及GIF)图档所占的空间非常庞大,必须外接SPI Flash增加记忆容量才能来容纳庞大的图库,本方案利用M480支持的Quad SPI的4位传输模式来增加存取速度处理庞大的资料量,以避免画面显示时的延迟达到顺畅的动画显示效果。




[*]
OLED界面 : MCU采用标准的SPI 接口与OLED 驱动IC对接,驱动IC控制界面选择用单线式SPI界面,本方案的线路除了提供驱动IC工作电压3V之外还需额外提供16V给OLED面板之电源,应用线路参考如下:
[*]
OLED面板模组控制界面



[*]
16.0V DC/DC升压线路



[*]
OLED面板模组接脚定义



(二)软件移植及设定

[*]
SPI NOR Flash : SPIM初始设置成DMM模式可以让CPU从记忆体映射模式位址0x8000000地方直接读取SPI Flash内容,其中可规划将32 KB内部的SRAM来支持快取机制加速读取或执行外部SPI Flash上的程式,不需要再经由像一般Command/Address/Data的I/O存取方式,直接由DMM硬件处理以及启动快取缓存(Cache Memory)双重功能来提高读取效能最佳化目的,写入方式还是样借由一般Erase/Program/Verify原来的存取机制处理,但并不会直接影响显示的效能。





[*]
SPIM同步序列界面控制器(SPI主机模式)框图




[*]
SPIM程式设定步骤包含Quad SPI、Enable Cache及进入DMM模式




[*]
在Keil开发环境将图档或程式配置到SPI Flash的0x08000000区域范例如下

步骤一 : 设置存储区域IROM2 = 0x08000000,Size = 0x0400000(W25Q32)




步骤二 : 设置__spim_sacsys.c、__spim_GIF.c记忆体分配到IROM2区域,若有其它档案依此方式设定




[*]
OLED驱动程式设定:

emWin是一个高品质绘图软体函数库,对产品的图形化使用者界面(GUI)进行迅速、高效率的配置。emWin可提供无闪烁的动画(Memory Devices)、抗锯齿最佳化(Antialiasing)的绘图功能,以及一个用于视窗物件建构(GUIBuilder, Widget)与视窗管理(The Window Manager)。emWin 也提供包括字体转换器 (FontCvtDemo)、Unicode 语言支援,色彩管理(Colors)及图形分层(multi layer)在内的广泛的图形功能,能适应任何大小面板的显示。在移植过程中在Driver层与Hardware Layer(BSP)之间需要针对实际搭配不同使用的硬体需要做些修改与设定。在此针对程式移植部分加以说明




步骤一 : 依照OLED面板模组SPI Command/Data时序图去设定M480通讯界面,此面板是设定为SPI mode 0模式,并且为了能方便区分Command与Data格式控制所以将SPI_MISO/SPI_SS接脚独立配置成GPIO模式。





此外,为了降低CPU工作负载提升处理效能,在显示输出控制部分(Frame Buffer到SPI界面之间)直接交由DMA处理不需要由CPU介入,预设刷新频率为30fps,让CPU专注在GUI图形处理部分,在动态显示图形状态下能更加流畅,避免有停顿、鬼影、延迟现象发生。





步骤二 : 接着OLED面板模组在开机运作之前需要先做初始设定的程序,在设定程序前要按照OLED说明文件的Power ON/OFF时序要求处理。







紧接着处理OLED面板参数设定,这些设定参数建议由面板模组厂商提供,按照它们提供步骤/参数依序设定即可,参考设定如下:



步骤三 : emWin函数库配置主要目的是能够与硬体元件/线路能够搭配才能将画面正确的显示在面板上,主要修改程式配置档案分别有GUI_X.c:GUI所依赖的外部配置/系统,GUIConf.c:GUI初始化配置,GUIConf.h:GUI配置设置,GUIDRV_TemplateI.c:GUI读点、画点、画线等函数配置,LCDConf.c:LCD初始化配置等等,设定细节参考如下:



此OLED面板模组采用Solomon SSD1362 OLED driver IC,当main()程式执行GUI_Init()时emWin函数库会呼叫Driver层的_InitController()函式此时我们必须要处理所有的初始设定程序,包括SPI_Init()、PDMA_Init()、OLEDPowerOnSeq()、OLED Initial Table等等。







步骤四 : 完成上述所有设定程序后即可使用emWin所提供API功能,使用手册有详述各API的使用方法及应用范例,以下是BMP/GIF显示的参考程式范例



场景应用图



展示板照片



方案方块图



核心技术优势 高达192 MHz Cortex-M4及DSP与FPU
 支援32KB快取记忆体(Cache Memory)
 外接SPI快闪记忆体最大32MBytes,支援标准的1位、2位和4位元I/O传输模式,最高达96Mbit/s
 支援CPU直接从SPI快闪记忆体读取(Direct Memory Map Mode)
 支援高速GIF动态点阵图解码(LZW )
 支援高速BMP、PNG、JPEG解码
 支援各种客制化OLED显示幕来动态播放各种资讯
 内建多样字型字库
方案规格 NuMicro M484 (32-bit Arm® Cortex®-M4F)内建DSP指令集、记忆体保护单元
 高达192 MHz工作主频
 内建512 KB Flash/160 KB SRAM
 高达96 MHz SPI 通讯界面
 16通道周边DMA控制器
 12个增强型PWM带有12个16位元计时器
 USB 2.0高速装置/主机/OTG控制器及内置PHY
 USB 2.0全速装置/主机/OTG控制器及内置PHY
 多达6个低功耗UART界面(17 Mbps),包含2个LIN界面
 1个四线SPI界面(可达48 MB/s)
 2个USCI界面,支持可程设UART/SPI/I²C
 3个I²C界面(可达3.4 Mbps)
 2个SD卡控制器(50MHz)
 支持W25Q32 SPI Flash
 支持单色2” OLED(ELW2106AA)面板256 x 64画素
 电压范围:1.8V至3.6V
 温度范围:-40°C至+105°C
页: [1]
查看完整版本: 基于Nuvoton M480系列微控制器高品质OLED动画显示解决方案