一、前言
Knob HMI 是大聯大世平基於 NXP i.MX RT1170 推出的旋鈕屏方案,能夠支援 MIPI、RGB 以及 QSPI 三種不同介面的 LCD Panel,可透過更換不同的 Panel Board 來連接不同的 LCD Panel, 設計了 Encoder 接口,能夠搭配旋轉編碼器來開發旋鈕功能,同時也保留觸控接口支援觸控螢幕,可根據需求來進行功能上的開發。
本文將介紹原廠開發板與 Knob HMI 方案在硬體設計上的不同之處,並透過 i.MX RT1170 SDK 的範例程式,協助您如何調整相關設定,將一款新型 LCD 面板成功整合至 Knob HMI 系統中,確保其能夠正常運作。
二、硬體差異
2. 而在一些介面的支援上 Knob HMI 與 MIMXRT1170-EVK 差異如下 :
接著,我們將運用 SDK 提供的範例程式,並說明如何進行調整,讓範例能夠順利在 knob HMI 方案上執行。
在本次的操作中,我們選用 SDK 中的 lcdifv2_rgb565_cm7 範例程式作為基礎,並對該範例進行 Encoder、按鈕腳位、SDRAM 以及 LCD 驅動程式的相關調整。
三、軟體調整說明 - ENCODER、Button
1. 在 I/O 介面方面,Knob HMI 方案設計包含一組 Encoder 和兩組 Button。以下是腳位的說明,您可以透過 Config Tools 中的 Pins 功能將它們加入專案中,然後根據您的設計規劃來撰寫相應的程式碼。
四、軟體調整說明 - SDRAM
1. 在SDRAM 的調整上,我們需要將 SDRAM 調整為 166MHz、16M x16bit,由於 SDK 中涉及 SDRAM 的範例均採用 32 位元長度進行資料讀取,這樣的設定可能導致 Knob HMI 方案無法正常運行。
1. 在SDRAM 的調整上,我們需要將 SDRAM 調整為 166MHz、16M x16bit,由於 SDK 中涉及 SDRAM 的範例均採用 32 位元長度進行資料讀取,這樣的設定可能導致 Knob HMI 方案無法正常運行。
2. 啟動 Config Tools 中的 Device Configuration 功能,將 CCM_CLOCK_ROOT4_CONTROL 的設定值調整至 0x703,即可將SDRAM時鐘頻率調整至 166MHz。具體的數值對應資訊,請參閱《MX RT1170 Processor Reference Manual》。
3. 將 SEMC_BR0 的設定值調整至 0x8000001B,此設定可將 SDRAM 容量調整至32M。
4. 將 SEMC_SDRAMCR0 的設定值調整至 0xF31,此設定可將 SDRAM 資料長度調整至 16bit。
5. 開啟 Clock_config.c,調整 UpdateSemcClock 函式中,CCM->CLOCK_ROOT[kCLOCK_Root_Semc].CONTROL 的值為 0x703
6. 開啟 Board.c,調整 BOARD_ConfigMPU 函式中 Region 9 的容量為 32MB
7. 最後開啟 Project Setting -> Memory 選項,對 BOARD_SDRAM 與 NCACHE_REGION 的位址(Location)和大小(Size)進行調整。請注意,這兩個設定的總和必須恰好為32MB。
四、軟體調整說明 - LCD
接著,我們將說明如何調整 LCD 的相關設定,確保您的 LCD 能夠順利運作。
1. 首先,您必須準備一個適合您 LCD Panel 的 LCD driver,並將其整合至本專案中。
2. Knob HMI 設計了三組 LCD 控制腳位,包括 RESET、背光啟用(Backlight Enable)和電源啟用(Power Enable)。 其中 RESET 和背光啟用的腳位與標準公版有所不同,請透過 Config Tools 中的 Pins 功能進行相應調整。
3. 在 board.h 檔案中,請將與 Reset 及 Backlight 相關的 define 調整為符合 Knob HMI 的定義。
4. 關於 LCD Timing 的相關參數,需要在 lcdifv2_support.h 檔案中進行調整,請調整為適合您 LCD Panel 的參數。
5. 在 lcdifv2_support.c 中宣告您的 LCD driver
6. 在 lcdifv2_support.c 中新增 Resource 與 Handle
7. 在 lcdifv2_support.c 中的 BOARD_InitLcdifClock 涵式,設定符合您 LCD Panel 的 pixel clock
8. 最後,在 lcdifv2_support.c 中的 BOARD_InitLcdPanel 函式中初始化您的 LCD panel。至此,便完成 LCD driver的移植作業。