基於Nuvoton M480系列微控制器高品質OLED動畫顯示解決方案

關鍵字 :NuMicroM480OLED

這是使用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

技術文檔

類型標題檔案
硬件Datasheet
硬件Schematics
軟件Firmware

相關影片

基於NuMicro M480系列微控制器高品質OLED動畫顯示解決方案

已通過方案重新上傳視頻