顯示
Display(顯示)群組包含顯示相關設定,例如介面、尺寸及緩衝處理策略。
介面與尺寸
目前有多種顯示介面可搭配使用STM32微控制器,例如:
- 平行RGB (LTDC)
- MIPI DSI
- FMC
- SPI
如果MCU帶有連接到LTDC或FMC的顯示器,TouchGFX Generator可產生程式碼,將影像緩衝區傳輸到連接的顯示器。 而對於DSI和SPI介面來說,驅動程式必須由開發人員自行實作。
Further reading
有關不同顯示介面的程式碼具體範例請參閱使用情境章節。
影像緩衝區像素格式
TouchGFX Generator目前支援以下影像緩衝區像素格式。 使用「客製」顯示介面時,所有選項均可用,否則選項將限制為顯示控制器設定(例如將LTDC影像緩衝區格式設定為「RGB565」,會在TouchGFX Generator將選項限制為「RGB565」)。
- BW (1bpp)
- Grey2 (2bpp)
- Grey4 (4bpp)
- ABRG2222 (8bpp)
- ARGB2222 (8bpp)
- BGRA2222 (8bpp)
- RGBA2222 (8bpp)
- RGB565 (16bpp)
- RGB888 (24bpp)
- ARGB8888 (32bpp)
- XRGB8888 (32bpp)
Note
部分像素格式沒有或僅有部分ChromART (DMA2D)支援。
影像緩衝區跨距
對於部分擁有較大影像緩衝區跨距的顯示介面(如MIPI-DSI),且其跨距大於顯示的實際寬度,若大型跨距與資料封包大小更相符,則可提高到顯示的資料傳輸率。 使用較大的影像緩衝區跨距可設定如下:
- 否 - 影像緩衝區跨距和顯示寬度的大小相同。
- 是 - 允許使用者指定影像緩衝區跨距長度。
緩衝處理策略及位置
下列影像緩衝區策略可透過TouchGFX Generator設定:
- Single Buffer (單一緩衝區):僅使用一個應用程式影像緩衝區。 效能可能會受限,但記憶體用量較少。 可搭配使用「Buffer Location」(緩衝區位置)設定,以將其置於內部RAM之中。 若需更進一步的最佳化,使用者可以定義一個函數來回傳顯示控制器當前正在處理的行。 架構可使用此方法,對在此畫面期間已傳輸至顯示的記憶體進行更新。
- Double Buffer (雙緩衝區):使用兩個影像緩衝區。 通常可提升效能,但記憶體用量更大。
- Partial Buffer (局部緩衝區):將一個或多個由使用者定義的記憶體區塊作為影像緩衝區。 此策略適用於不依賴外部RAM,但顯示的完整影像緩衝區可能超過可用記憶體的低成本解決方案。
對單一緩衝區與雙緩衝區來說,使用者可透過「Buffer Location」(緩衝器位置) 來設定其位置;此設定提供以下選項:
- By Allocation (依分配):允許連結器根據連結器指令碼來放置影像緩衝區記憶體。 預設為內部RAM。
- By Address (依位址):允許使用者定義一個(單)或兩個(雙)影像緩衝區位址。
局部緩衝區策略允許使用者定義以下參數:
- 區塊數量(始終放置在內部RAM中)
- 區塊大小(位元組數)
有關局部緩衝區策略的一些核心概念,請閱讀關於「使用局部影像緩衝區以降低記憶體用量」的專文。 此專文從概念上說明了如何實現局部影像緩衝區,但請留意專文中展示的程式碼會與TouchGFX Generator所產生的程式碼略有不同。 有關為這些策略而產生的具體程式碼範例,請參見影像緩衝區策略。
Caution
對於STM32F7/H7:如果影像緩衝區放置在直接寫入式快取記憶體(例如SRAM)中,那麼DCache會在DMA2D(如果已在Generator中設定)存取前由產生的程式碼清空。 記住要在STM32CubeMX中的Cortex M7的系統核心設定中啟用CPU快取,這樣快取機制才能正常運作。
Further reading
如需關於CPU快取的詳細資訊,請參閱在F7和H7進行快取子節。