LTDC/並列RGB
對於帶有TFT控制器的MCU(如STM32F429,STM32F746,STM32H7),TouchGFX Generator可產生部分HAL程式碼來設定LTDC將影像由影像緩衝區傳輸到顯示器。 一旦LTDC產生VSYNC中斷,產生的程式碼將啟動正確影像緩衝區的傳輸,同時藉由呼叫OSWrappers::signalVSync()
來解除(unblock)TouchGFX引擎主迴圈(main loop)的阻塞狀態。
顯示介面
與開發人員必須自行實作整個驅動程式的「客製化」顯示介面相反,對LTDC來說TouchGFX Generator可產生支援LTDC設定所需的所有TouchGFX HAL程式碼。
在STM32CubeMX的分類(Categories)清單的「Multimedia」設定群組當中必須點選啟用LTDC之後才能在TouchGFX Generator當中看到「Parallel RGB (LTDC)」呈現可選取狀態。
一旦啟用LTDC之後,在TouchGFX Generator的「Display」展開項選當中即可看到並列RGB (LTDC)的選項。
在透過STM32CubeMX啟用了LTDC之後還需要完成以下的工作:
- 設定LTDC(GPIO與相關時間參數)以符合連接的顯示器規格
- 設定LTDC以符合所需的TouchGFX應用程式需求。
TouchGFX Generator可由STM32CubeMX當中讀取各項配置,並提供包含了警示、建議或相依關係的清單。 下圖顯示了最初在CubeMX中為任何MCU啟用LTDC時存在的相依關係清單(在本範例中,我們使用F429):
Note
相依關係 | 描述 |
---|---|
不支援的像素格式 | TouchGFXFbra的影像緩衝區驅動程式僅支援RGB565(16位元)和RGB888(24位元)格式。 LTDC的像素格式必須符合為TouchGFX HAL所選取的驅動程式。 |
配置了多餘的影像層 | TouchGFX只能利用單一影像層。 儘管TouchGFX應用程式可在啟用兩個影像層的情況下運作,這個警示是提醒使用者需要注意LTDC的配置可能有誤。 變更LTDC設定選項當中的影像層數。 |
融合因數應為PAxCA | 融合因數預設為Alpha常數(Alpha Constant)。 這應為Alpha常數 x 像素Alpha |
Alpha常數為0 | LTDC影像層的Alpha常數預設為0。 此設定需大於0,最好是255,除非在應用當中需具有一個永久可得的全域Alpha設定。 |
在「Multimedia」設定群組當中啟用了LTDC週邊之後,還需要選取並列RGB (LTDC)顯示介面。
下圖可看到在滿足警示警息的LTDC設定之後,相依關係群組便從TouchGFX Generator介面中消失。
從STM32CubeMX讀取設定
在TouchGFX Generator當中選取「Parallel RGB (LTDC)」作為顯示介面之後,影像緩衝區的寬度和高度便繼承自LTDC設定當中的水平起點/終點和垂直起點/終點。
根據顯示和應用程式尺寸定義第0層的尺寸後,相依關係視窗中將顯示一個新專案。
通常需要確保影像緩衝區的圖片寬度和圖片高度符合視窗尺寸,以滿足警示要求。
Caution
TouchGFX驅動程式/VSYNC信號
一旦並列RGB (LTDC)被選取為顯示介面,開發人員就可以選取LTDC作為應用時標驅動程式(Application Tick Driver)或TouchGFX驅動程式。
以下程式碼是根據LTDC的配置而產生的LTDC中斷處理程式(STM32F7)。 產生的中斷處理函式會自動解除TouchGFX引擎的主迴圈(main loop)的阻塞狀態。
extern "C"
irq void LTDC_IRQHandler(void)
{
if (LTDC->ISR & 1)
{
LTDC->ICR = 1;
if (LTDC->LIPCR == (LTDC->AWCR & 0x7FF) - 1)
{
//entering active area
OSWrappers::signalVSync();
}
}
}
Note
結論
由TouchGFX Generator啟用並列RGB (LTDC)顯示介面可產生所需的所有HAL程式碼。
- 根據STM32CubeMX LTDC的配置來設定TouchGFX應用程式的寬度、高度和像素格式。 LTDC影像層的寬度和高度會影響TouchGFX Designer中的畫布大小,LTDC像素格式會影響所需的TouchGFX影像緩衝區的驅動程式以及所生成圖資(asset)的格式。
- 藉由選取LTDC作為應用時標(application tick)的來源以產生中斷處理程式碼來驅動TouchGFX引擎的主迴圈(main loop)。 通常藉由LTDC的配置開發人員即可一直使用LTDC配置提供的應用時標驅動程式(Application Tick Driver)。