.. _ip_ls_intf_disp: DISP ===== 1. 简介 >>>>>>> 显示控制器 (DISP) 提供并行数字 RGB(红、绿、蓝)信号以及用于水平同步、垂直同步、像素时钟和数据使能的信号作为输出,可直接连接各种 LCD 和 TFT 面板。 该控制器支持多种数据格式,并能适应 RGB 或 BGR。用户可根据屏幕分辨率和帧率配置像素时钟频率。DISP 有四个中断信号来指示当前工作状态。 抖动伪随机技术用于为每个像素颜色通道(R、G 或 B)值添加一个小的随机值(阈值)。以适应低于 24 位的面板。 2. 主要特性 >>>>>>>>>>> DISP 主要具有以下特性: * 24 位 RGB 或 20 位 BT1120 并行像素输出;每像素 8 位 (RGB888) * 1 个显示 FIFO (32x24 位) * 每图层颜色查找表 (CLUT) 最多 256 色 (256x24 位) * 可编程时序以适应不同显示面板(参见 *同步时序*) * 可编程背景颜色 * HSYNC、VSYNC 和数据使能的可编程极性 * 每图层最多可选择 8 种输入颜色格式 - ARGB8888 - RGB888 - RGB565 - ARGB1555 - ARGB4444 - L8 (8 位亮度或 CLUT) - AL44 (4 位 Alpha + 4 位亮度) - AL88 (8 位 Alpha + 8 位亮度) * 针对每通道低比特数的伪随机抖动输出 - 红、绿、蓝的抖动宽度为 2 位 - 红、蓝的抖动宽度为 3 位 * 使用 Alpha 值(每像素或常量)在两个图层之间进行灵活混合 * 颜色键控(透明色) * 可编程窗口位置和大小 * 支持薄膜晶体管 (TFT) 彩色显示器 * 最多 4 个可编程中断事件 3. 功能描述 >>>>>>>>>>> DISP 框图 --------------- DISP 的框图如 3.1 DISP 框图所示: .. _DISP 框图: .. figure:: /assets/images/disp_block.png :alt: DISP 框图 :align: center **图 3.1: DISP 框图** 异步 FIFO: 32x24 位。 PFC: 像素格式转换器,执行从选定图层输入像素格式到字的转换。 混合、抖动单元和时序控制:参见 *抖动、同步时序配置示例 和 图层混合*。 SE:流引擎,用于从存储器传输数据到 DISP。 ARBIT:轮询仲裁器,控制两个流引擎传输数据。 DISP 引脚与外部信号接口 --------------------------------------- 表 3.1 引脚和信号接口 总结了 DISP 的信号接口。 .. list-table:: 表3.1 引脚和信号接口 :widths: 20 15 15 25 :header-rows: 1 * - DISP 信号 - 方向 - 宽度 - 描述 * - DISP_PIXCLK - 输出 - 1 - 时钟输出 * - DISP_HSYNC - 输出 - 1 - 水平同步 * - DISP_VSYNC - 输出 - 1 - 垂直同步 * - DISP_DE - 输出 - 1 - 非数据使能 * - DISP_RED - 输出 - 8 - 8 位红色数据 * - DISP_GREEN - 输出 - 8 - 8 位绿色数据 * - DISP_BLUE - 输出 - 8 - 8 位蓝色数据 DISP 控制器引脚必须由用户应用程序配置。未使用的引脚可用于其他目的。DISP 最多输出 24 位 (RGB888),如果用于输出的位数少于 8 bpp,例如 RGB565 或 RGB666 连接到 16 位或 18 位显示器,则 RGB 显示数据线必须连接到 DISP 控制器 RGB 数据线的最高有效位 (MSB)。例如,在 DISP 控制器与 RGB565 16 位显示器接口的情况下,LCD 显示器 R[4:0]、G[5:0] 和 B[4:0] 数据线引脚必须连接到 DISP 控制器 {LCD_R[7:3]、LCD_G[7:2] 和 LCD_B[7:3]}。 在 DISP 控制器与 BT1120 显示器接口的情况下,显示器引脚必须连接到 DISP 控制器 LCD_R[7:3]、LCD_G[7:2] 和 LCD_B[7:3]。 DISP 复位与时钟 ------------------- DISP 控制器外设使用 2 个时钟域: * 总线时钟域 (BUS_CLK) 该域包含用于从存储器传输数据到图层 FIFO 的 DISP 接口,以及全局配置寄存器和中断寄存器。 * 像素时钟域 (PIX_CLK) 该域包含像素数据生成,以及 DISP 接口信号生成器。DISP_PIX_CLK 由 PIX_CLK 除以 2 生成。DISP_PIXCLK 输出极性应根据面板要求配置。 4. 中断 >>>>>>>>>>>>>> DISP 提供四个可屏蔽中断,逻辑或后形成两个中断向量。中断源可以通过 DISP_IER 寄存器单独启用或禁用。将相应的掩码位设置为 1 即可启用相应的中断。以下事件会生成这两个中断: * 行中断:当达到编程的行时生成。行中断位置在 DISP_LIPCR 寄存器中编程。 * 寄存器重载中断:在垂直消隐期间执行影子寄存器重载时生成。 * FIFO 下溢中断:当从空的图层 FIFO 请求像素时生成。 * 传输错误中断:在数据传输期间发生总线错误时生成。 参考 图 4.1 DISP 中断事件: .. _DISP 中断事件: .. figure:: /assets/images/disp_interrupt.png :alt: DISP 中断事件 :align: center **图 4.1: DISP 中断事件** 表 4.1 DISP 中断请求展示了 DISP 的中断请求。 .. list-table:: 表 5.1:DISP 中断请求 :widths: 25 25 25 :header-rows: 1 * - 中断事件 - 事件标志 - 使能控制位 * - 行中断 - LIF - LIE * - 寄存器重载中断 - RRIF - RRIEN * - FIFO 下溢中断 - FUDERRIF - FUDERRIE * - 传输错误中断 - TERRIF - TERRIE 5. GMC 寄存器 >>>>>>>>>>>>>> DISP 中的寄存器及其对应的偏移地址见表 5.1 DISP 中寄存器的偏移地址。 .. list-table:: 表 5.1:DISP 中寄存器的偏移地址 :widths: 10 25 46 :header-rows: 1 * - 偏移量 - 寄存器名称 - 功能描述 * - 0x4 - DISP_VERSION - DISP 版本寄存器 * - 0x8 - DISP_SSCR - 同步信号大小配置寄存器 * - 0xC - DISP_BPCR - 后沿配置寄存器 * - 0x10 - DISP_AWCR - 有效宽度配置寄存器 * - 0x14 - DISP_TWCR - 总宽度配置寄存器 * - 0x18 - DISP_GCR - 全局控制寄存器 * - 0x24 - DISP_SRCR - 影子重载配置寄存器 * - 0x2C - DISP_BCCR - 背景颜色配置寄存器 * - 0x34 - DISP_IER - 中断使能寄存器 * - 0x38 - DISP_ISR - 中断状态寄存器 * - 0x3C - DISP_ICR - 中断清除寄存器 * - 0x40 - DISP_LIPCR - 行中断位置配置寄存器 * - 0x44 - DISP_CPSR - 当前位置状态寄存器 * - 0x48 - DISP_CDSR - 当前显示状态寄存器 * - 0x4C - DISP_EAV - 行消隐区中有效视频的结束 * - 0x50 - DISP_SAV - 行消隐区中有效视频的开始 * - 0x84 - DISP_L0CR - 图层 0 控制寄存器 * - 0x104 - DISP_L1CR - 图层 1 控制寄存器 * - 0x88 - DISP_L0WHPCR - 图层 0 窗口水平位置配置寄存器 * - 0x108 - DISP_L1WHPCR - 图层 1 窗口水平位置配置寄存器 * - 0x8C - DISP_L0WVPCR - 图层 0 窗口垂直位置配置寄存器 * - 0x10C - DISP_L1WVPCR - 图层 1 窗口垂直位置配置寄存器 * - 0x90 - DISP_L0CKCR - 图层 0 颜色键控配置寄存器 * - 0x110 - DISP_L1CKCR - 图层 1 颜色键控配置寄存器 * - 0x94 - DISP_L0PFCR - 图层 0 像素格式配置寄存器 * - 0x114 - DISP_L1PFCR - 图层 1 像素格式配置寄存器 * - 0x98 - DISP_L0CACR - 图层 0 常量 Alpha 配置寄存器 * - 0x118 - DISP_L1CACR - 图层 1 常量 Alpha 配置寄存器 * - 0x9C - DISP_L0DCCR - 图层 0 默认颜色配置寄存器 * - 0x11C - DISP_L1DCCR - 图层 1 默认颜色配置寄存器 * - 0xA0 - DISP_L0BFCR - 图层 0 混合因子配置寄存器 * - 0x120 - DISP_L1BFCR - 图层 1 混合因子配置寄存器 * - 0xA4 - DISP_L0MIR - 该寄存器决定是否开启图层 0 水平镜像或垂直镜像 * - 0x124 - DISP_L1MIR - 该寄存器决定是否开启图层 1 水平镜像或垂直镜像 * - 0xA8 - DISP_L0PIX_ALPHA - 如果图层 0 输入像素格式没有 Alpha,该寄存器可以配置 Alpha 值 * - 0x128 - DISP_L1PIX_ALPHA - 如果图层 1 输入像素格式没有 Alpha,该寄存器可以配置 Alpha 值 * - 0xAC - DISP_L0CFBAR - 图层 0 颜色帧缓冲区地址寄存器 * - 0x12C - DISP_L1CFBAR - 图层 1 颜色帧缓冲区地址寄存器 * - 0xB0 - DISP_L0CFBLR - 图层 0 颜色帧缓冲区长度寄存器 * - 0x130 - DISP_L1CFBLR - 图层 1 颜色帧缓冲区长度寄存器 * - 0xB4 - DISP_L0CFBLNR - 图层 0 颜色帧缓冲区行数寄存器 * - 0x134 - DISP_L1CFBLNR - 图层 1 颜色帧缓冲区行数寄存器 * - 0x254 - DISP_L0CR_ACTIVE - 图层 0 控制寄存器激活 * - 0x2D4 - DISP_L1CR_ACTIVE - 图层 1 控制寄存器激活 * - 0x258 - DISP_L0WHPCR_ACTIVE - 图层 0 窗口水平位置配置寄存器激活 * - 0x2D8 - DISP_L1WHPCR_ACTIVE - 图层 1 窗口水平位置配置寄存器激活 * - 0x25C - DISP_L0WVPCR_ACTIVE - 图层 0 窗口垂直位置配置寄存器激活 * - 0x2DC - DISP_L1WVPCR_ACTIVE - 图层 1 窗口垂直位置配置寄存器激活 * - 0x260 - DISP_L0CKCR_ACTIVE - 图层 0 颜色键控配置寄存器激活 * - 0x2E0 - DISP_L1CKCR_ACTIVE - 图层 1 颜色键控配置寄存器激活 * - 0x264 - DISP_L0PFCR_ACTIVE - 图层 0 像素格式配置寄存器激活 * - 0x2E4 - DISP_L1PFCR_ACTIVE - 图层 1 像素格式配置寄存器激活 * - 0x268 - DISP_L0CACR_ACTIVE - 图层 0 常量 Alpha 配置寄存器激活 * - 0x2E8 - DISP_L1CACR_ACTIVE - 图层 1 常量 Alpha 配置寄存器激活 * - 0x26C - DISP_L0DCCR_ACTIVE - 图层 0 默认颜色配置寄存器激活 * - 0x2EC - DISP_L1DCCR_ACTIVE - 图层 1 默认颜色配置寄存器激活 * - 0x270 - DISP_L0BFCR_ACTIVE - 图层 0 混合因子配置寄存器激活 * - 0x2F0 - DISP_L1BFCR_ACTIVE - 图层 1 混合因子配置寄存器激活 * - 0x274 - DISP_L0MIR_ACTIVE - 图层 0 镜像寄存器激活 * - 0x2F4 - DISP_L1MIR_ACTIVE - 图层 1 镜像寄存器激活 * - 0x278 - DISP_L0PIX_ALPHA_ACTIVE - 图层 0 Alpha 数据寄存器激活 * - 0x2F8 - DISP_L1PIX_ALPHA_ACTIVE - 图层 1 Alpha 数据寄存器激活 * - 0x27C - DISP_L0CFBAR_ACTIVE - 图层 0 颜色帧缓冲区地址寄存器激活 * - 0x2FC - DISP_L1CFBAR_ACTIVE - 图层 1 颜色帧缓冲区地址寄存器激活 * - 0x3D0 - DISP_L0CFBLR_ACTIVE - 图层 0 颜色帧缓冲区长度寄存器激活 * - 0x450 - DISP_L1CFBLR_ACTIVE - 图层 1 颜色帧缓冲区长度寄存器激活 * - 0x3D4 - DISP_L0CFBLNR_ACTIVE - 图层 0 颜色帧缓冲区行数寄存器激活 * - 0x454 - DISP_L1CFBLNR_ACTIVE - 图层 1 颜色帧缓冲区行数寄存器激活 DISP_VERSION ------------------------------------------------- 地址偏移:``0x4`` .. list-table:: 表 5.2:DISP_VERSION 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - VER - 31:0 - 只读 - 0x10101 - DISP 版本寄存器 同步信号大小配置寄存器 (DISP_SSCR) ---------------------------------------- 该寄存器定义了水平同步像素数减 1 和垂直同步行数减 1。参考 DISP 同步时序 和 图层可编程参数。配置示例见 DISP_SSCR 的寄存器格式。 地址偏移:``0x8`` .. list-table:: 表 5.3:DISP_SSCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - VSH - 10:0 - 读/写 - 0x0 - 垂直同步高度 * - 保留 - 15:11 - / - 0x0 - / * - HSW - 27:16 - 读/写 - 0x0 - 水平同步宽度 * - 保留 - 31:28 - / - 0x0 - / 后沿配置寄存器 (DISP_BPCR) ------------------------------------------------------------ 该寄存器定义了水平同步像素数减 1 和垂直同步行数减 1。 地址偏移:``0xC`` .. list-table:: 表 5.4:DISP_BPCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - AVBP - 10:0 - 读/写 - 0x0 - 累计垂直后沿 * - 保留 - 15:11 - / - 0x0 - / * - AHBP - 27:16 - 读/写 - 0x0 - 累计水平后沿 * - 保留 - 31:28 - / - 0x0 - / 有效宽度配置寄存器 (DISP_AWCR) ------------------------------------------------------------ 该寄存器定义了水平同步、后沿和有效像素的累计数减 1(HSYNC 宽度 + HBP + 有效宽度 - 1)以及垂直同步、后沿行和有效行的累计数减 1(VSYNC 高度 + BVBP + 有效高度 - 1)。 地址偏移:``0x10`` .. list-table:: 表 5.5:DISP_AWCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - AAH - 10:0 - 读/写 - 0x0 - 累计有效高度 * - 保留 - 15:11 - / - 0x0 - / * - AAW - 27:16 - 读/写 - 0x0 - 累计有效宽度 * - 保留 - 31:28 - / - 0x0 - / 总宽度配置寄存器 (DISP_TWCR) ------------------------------------------------------------ 该寄存器定义了水平同步、后沿、有效和前沿像素的累计数减 1(HSYNC 宽度 + HBP + 有效宽度 + HFP - 1)以及垂直同步、后沿行、有效行和前沿行的累计数减 1(VSYNC 高度 + BVBP + 有效高度 + VFP - 1)。参考 DISP 同步时序 和 图层可编程参数 获取配置示例。 地址偏移:``0x14`` .. list-table:: 表 5.6:DISP_TWCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - TOTALH - 10:0 - 读/写 - 0x0 - 总高度 * - 保留 - 15:11 - / - 0x0 - / * - TOTALW - 27:16 - 读/写 - 0x0 - 总宽度 * - 保留 - 31:28 - / - 0x0 - / 全局控制寄存器 (DISP_GCR) -------------------------------------------------------------------- 该寄存器定义了 LCD-TFT 控制器的全局配置。 地址偏移:``0x18`` .. list-table:: 表 5.7:DISP_GCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LTDCEN - 0 - 读/写 - 0x0 - 控制器使能 该位由软件置位和清除 - 1'b0: 控制器禁用 - 1'b1: 控制器使能 * - BUSY - 1 - 只读 - 0x0 - DISP 忙标志,如果该位已置位,则 LTDCEN 不能置位 * - BT1120EN - 2 - 读/写 - 0x0 - BT1120 输出格式使能 - 1'b0: 输出颜色格式为 RGB - 1'b1: 输出颜色格式为 BT1120 * - BGREN - 3 - 读/写 - 0x0 - 输入顺序为 BGR 使能 - 1'b0: 输入颜色格式为 RGB - 1'b1: 输入颜色格式为 BGR * - DBW - 6:4 - 只读 - 0x0 - 抖动蓝色宽度。这些位返回抖动蓝色位数。 * - 保留 - 7 - / - 0x0 - / * - DGW - 10:8 - 只读 - 0x0 - 抖动绿色宽度。这些位返回抖动绿色位数。 * - 保留 - 11 - / - 0x0 - / * - DRW - 14:12 - 只读 - 0x0 - 抖动红色宽度。这些位返回抖动红色位数。 * - 保留 - 15 - / - 0x0 - / * - DEN - 17:16 - 读/写 - 0x0 - 抖动使能 - 1'b0: 抖动禁用 - 1'b1: 抖动使能 * - 保留 - 27:18 - / - 0x0 - / * - PCPOL - 28 - 读/写 - 0x0 - 像素时钟极性 - 1'b0: 像素时钟极性为低电平有效 - 1'b1: 像素时钟为高电平有效 * - DEPOL - 29 - 读/写 - 0x0 - 非数据使能极性 - 1'b0: 非数据使能极性为低电平有效 - 1'b1: 非数据使能极性为高电平有效 * - VSPOL - 30 - 读/写 - 0x0 - 垂直同步极性 - 1'b0: 垂直同步为低电平有效 - 1'b1: 垂直同步为高电平有效 * - HSPOL - 31 - 读/写 - 0x0 - 水平同步极性 该位由软件置位和清除 - 1'b0: 水平同步极性为低电平有效 - 1'b1: 水平同步极性为高电平有效 影子重载配置寄存器 (DISP_SRCR) ------------------------------------------------------------ 此寄存器允许立即或在垂直消隐期间,将影子寄存器的值重新加载到活动寄存器。影子寄存器是所有图层 0 和图层 1 的寄存器。 地址偏移:``0x24`` .. list-table:: 表 5.8:DISP_SRCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - IMR - 0 - 写 1 置位 - 0x0 - 立即重载 - 1'b0: 无效果 - 1'b1: 影子寄存器立即重载 * - VBR - 1 - 写 1 置位 - 0x0 - 垂直消隐重载 - 1'b0: 无效果 - 1'b1: 影子寄存器在垂直消隐期间重载 * - 保留 - 31:2 - / - 0x0 - / 背景颜色配置寄存器 (DISP_BCCR) -------------------------------------------------------------------- 此寄存器定义背景颜色 (RGB888)。 地址偏移:``0x2C`` .. list-table:: 表 5.9:DISP_BCCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BCBLUE - 7:0 - 读/写 - 0x0 - 背景颜色蓝色值 * - BCGREEN - 15:8 - 读/写 - 0x0 - 背景颜色绿色值 * - BCRED - 23:16 - 读/写 - 0x0 - 背景颜色红色值 * - 保留 - 31:24 - / - 0x0 - / 中断使能寄存器 (DISP_IER) ------------------------------------------------------------ 此寄存器通过将相应位设置为 1 来确定哪些状态标志会产生中断请求。 地址偏移:``0x34`` .. list-table:: 表 5.10:DISP_IER 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LIE - 0 - 读/写 - 0x0 - 行中断使能 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - FUIE - 1 - 读/写 - 0x0 - FIFO 下溢中断使能 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - TERRIE - 2 - 读/写 - 0x0 - 传输错误中断使能 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - RRIE - 3 - 读/写 - 0x0 - 寄存器重载中断使能 - 1'b0: 中断禁用 - 1'b1: 中断使能 * - 保留 - 31:4 - / - 0x0 - / 中断状态寄存器 (DISP_ISR) -------------------------------------------------------------------- 地址偏移:``0x38`` .. list-table:: 表 5.11:DISP_ISR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LIF - 0 - 只读 - 0x0 - 行中断标志 - 1'b0: 未生成行中断 - 1'b1: 当达到编程的行时生成行中断 * - FUIF - 1 - 只读 - 0x0 - FIFO 下溢中断标志 - 1'b0: 未生成 FIFO 下溢中断 - 1'b1: 生成 FIFO 下溢中断 * - TERRIF - 2 - 只读 - 0x0 - 传输错误中断标志 - 1'b0: 未生成传输错误中断 - 1'b1: 发生总线错误时生成传输错误中断 * - RRIF - 3 - 只读 - 0x0 - 寄存器重载中断标志 - 1'b0: 未生成寄存器重载中断 - 1'b1: 发生垂直消隐重载时生成寄存器重载中断 * - 保留 - 31:4 - / - 0x0 - / 中断清除寄存器 (DISP_ICR) ------------------------------------------------------------ 地址偏移:``0x3C`` .. list-table:: 表 5.12:DISP_ICR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CLIF - 0 - 只写 - 0x0 - 清除行中断标 - 1'b0: 无效果 - 1'b1: 清除 DISP_ISR 寄存器中的 LIF 标志 * - CFUIF - 1 - 只写 - 0x0 - 清除 FIFO 下溢中断标志 - 1'b0: 无效果 - 1'b1: 清除 DISP_ISR 寄存器中的 FUDERRIF 标志 * - CTERRIF - 2 - 只写 - 0x0 - 清除传输错误中断标志 - 1'b0: 无效果 - 1'b1: 清除 DISP_ISR 寄存器中的 TERRIF 标志 * - CRRIF - 3 - 只写 - 0x0 - 清除寄存器重载中断标志 - 1'b0: 无效果 - 1'b1: 清除 DISP_ISR 寄存器中的 RRIF 标志 * - 保留 - 31:4 - / - 0x0 - / 行中断位置配置寄存器 (DISP_LIPCR) -------------------------------------------------------------------- 此寄存器定义行中断的位置。要编程的行值取决于时序参数。 地址偏移:``0x40`` .. list-table:: 表 5.13:DISP_LIPCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LIPOS - 10:0 - 读/写 - 0x0 - 行中断位置 这些位配置行中断位置 * - 保留 - 31:11 - / - 0x0 - / 当前位置状态寄存器 (DISP_CPSR) ------------------------------------------------------------ 地址偏移:``0x44`` .. list-table:: 表 5.14:DISP_CPSR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CYPOS - 15:0 - 只读 - 0x0 - 当前 Y 位置 * - CXPOS - 31:16 - 只读 - 0x0 - 当前 X 位置 当前显示状态寄存器 (DISP_CDSR) ------------------------------------------------------------ 此寄存器返回由 HSYNC、VSYNC 以及水平/垂直 DE 信号控制的当前显示阶段的状态。例如:如果当前显示阶段是垂直同步,则 VSYNCS 位置位(高电平有效)。如果当前显示阶段是水平同步,则 HSYNCS 位为高电平有效。 地址偏移:``0x48`` .. list-table:: 表 5.15:DISP_CDSR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - VDES - 0 - 只读 - 0x1 - 垂直数据使能显示状态 - 1'b0: 低电平有效 - 1'b1: 高电平有效 * - HDES - 1 - 只读 - 0x1 - 水平数据使能显示状态 - 1'b0: 低电平有效 - 1'b1: 高电平有效 * - VSYNCS - 2 - 只读 - 0x1 - 垂直同步显示状态 - 1'b0: 低电平有效 - 1'b1: 高电平有效 * - HSYNCS - 3 - 只读 - 0x1 - 水平同步显示状态 - 1'b0: 低电平有效 - 1'b1: 高电平有效 * - 保留 - 31:4 - / - 0x0 - / 注意:返回的状态不依赖于 DISP_GCR 寄存器中配置的极性,而是返回当前有效的显示阶段。 行消隐区中的有效视频结束 (DISP_EAV) ------------------------------------------------------------ 此寄存器描述表示有效视频结束的代码。 地址偏移:``0x4C`` .. list-table:: 表 5.16:DISP_EAV 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - VALID - 15:0 - 读/写 - 0x0 - 数字行消隐期间活动行的结束 * - BLANK - 31:16 - 读/写 - 0x0 - 帧消隐期间活动行的结束 行消隐区中的有效视频开始 (DISP_SAV) ------------------------------------------------------------ 此寄存器描述表示有效视频开始的代码。 地址偏移:``0x50`` .. list-table:: 表 5.17:DISP_SAV 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - VALID - 15:0 - 读/写 - 0x0 - 数字行消隐期间活动行的开始 * - BLANK - 31:16 - 读/写 - 0x0 - 帧消隐期间活动行的开始 图层 0 控制寄存器 (DISP_LOCR) ------------------------------------------------------------ 地址偏移:``0x84`` .. list-table:: 表 5.18:DISP_LOCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LEN - 0 - 读/写 - 0x0 - 图层 0 使能 - 1'b0: 图层 0 禁用 - 1'b1: 图层 0 使能 * - COLKEN - 1 - 读/写 - 0x0 - 颜色键控使能 - 1'b0: 颜色键控禁用 - 1'b1: 颜色键控使能 * - 保留 - 3:2 - / - 0x0 - / * - CLUTEN - 4 - 读/写 - 0x0 - 颜色查找表使能 - 1'b0: 颜色查找表禁用 - 1'b1: 颜色查找表使能 * - 保留 - 31:5 - / - 0x0 - / 图层 1 控制寄存器 (DISP_L1CR) ------------------------------------------------- 地址偏移:``0x104`` .. list-table:: 表 5.19:DISP_L1CR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LEN - 0 - 读/写 - 0x0 - 图层 1 使能 - 1'b0: 图层 1 禁用 - 1'b1: 图层 1 使能 * - COLKEN - 1 - 读/写 - 0x0 - 颜色键控使能 - 1'b0: 颜色键控禁用 - 1'b1: 颜色键控使能 * - 保留 - 3:2 - / - 0x0 - / * - CLUTEN - 4 - 读/写 - 0x0 - 颜色查找表使能 - 1'b0: 颜色查找表禁用 - 1'b1: 颜色查找表使能 * - 保留 - 31:5 - / - 0x0 - / 图层 0 窗口水平位置配置寄存器 (DISP_L0WHPCR) ------------------------------------------------- 此寄存器定义图层 0 窗口的水平位置(第一个和最后一个像素)。一行的第一个可见像素是 DISP_BPCR 寄存器中 AHBPI[11:0] 位的编程值 + 1。一行的最后一个可见像素是 DISP_AWCR 寄存器中 AAWI[11:0] 位的编程值。 地址偏移:``0x88`` .. list-table:: 表 5.20:DISP_L0WHPCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WHSTPOS - 11:0 - 读/写 - 0x0 - 图层 0 窗口水平起始位置 * - 保留 - 15:12 - / - 0x0 - / * - WHSPPOS - 27:16 - 读/写 - 0x0 - 图层 0 窗口水平停止位置 * - 保留 - 31:28 - / - 0x0 - / 图层 1 窗口水平位置配置寄存器 (DISP_L1WHPCR) ------------------------------------------------- 此寄存器定义图层 1 窗口的水平位置(第一个和最后一个像素)。一行的第一个可见像素是 DISP_BPCR 寄存器中 AHBPI[11:0] 位的编程值 + 1。一行的最后一个可见像素是 DISP_AWCR 寄存器中 AAWI[11:0] 位的编程值。 地址偏移:``0x108`` .. list-table:: 表 5.21:DISP_L1WHPCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WHSTPOS - 11:0 - 读/写 - 0x0 - 图层 1 窗口水平起始位置 * - 保留 - 15:12 - / - 0x0 - / * - WHSPPOS - 27:16 - 读/写 - 0x0 - 图层 1 窗口水平停止位置 * - 保留 - 31:28 - / - 0x0 - / 图层 0 窗口垂直位置配置寄存器 (DISP_L0WVPCR) ------------------------------------------------- 此寄存器定义图层 0 窗口的垂直位置(第一行和最后一行)。一帧的第一条可见行是 DISP_BPCR 寄存器中 AVBP[10:0] 位的编程值 + 1。一帧的最后一条可见行是 DISP_AWCR 寄存器中 AAHI[10:0] 位的编程值。 地址偏移:``0x8C`` .. list-table:: 表 5.22:DISP_L0WVPCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WVSTPOS - 10:0 - 读/写 - 0x0 - 窗口垂直起始位置 * - 保留 - 15:11 - / - 0x0 - / * - WVSPPOS - 26:16 - 读/写 - 0x0 - 窗口垂直停止位置 * - 保留 - 31:27 - / - 0x0 - / 图层 1 窗口垂直位置配置寄存器 (DISP_L1WVPCR) ------------------------------------------------- 此寄存器定义图层 1 窗口的垂直位置(第一行和最后一行)。一帧的第一条可见行是 DISP_BPCR 寄存器中 AVBP[10:0] 位的编程值 + 1。一帧的最后一条可见行是 DISP_AWCR 寄存器中 AAHI[10:0] 位的编程值。 地址偏移:``0x10C`` .. list-table:: 表 5.23:DISP_L1WVPCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WVSTPOS - 10:0 - 读/写 - 0x0 - 窗口垂直起始位置 * - 保留 - 15:11 - / - 0x0 - / * - WVSPPOS - 26:16 - 读/写 - 0x0 - 窗口垂直停止位置 * - 保留 - 31:27 - / - 0x0 - / 图层 0 颜色键控配置寄存器 (DISP_L0CKCR) ------------------------------------------------- 此寄存器定义颜色键控使用的颜色键值 (RGB)。 地址偏移:``0x90`` .. list-table:: 表 5.24:DISP_L0CKCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CKBLUE - 7:0 - 读/写 - 0x0 - 颜色键蓝色值 * - CKGREEN - 15:8 - 0x0 - 0x0 - 颜色键绿色值 * - CKRED - 23:16 - 读/写 - 0x0 - 颜色键红色值 * - 保留 - 31:24 - / - 0x0 - / 图层 1 颜色键控配置寄存器 (DISP_L1CKCR) ------------------------------------------------- 此寄存器定义颜色键控使用的颜色键值 (RGB)。 地址偏移:``0x110`` .. list-table:: 表 5.25:DISP_L1CKCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CKBLUE - 7:0 - 读/写 - 0x0 - 颜色键蓝色值 * - CKGREEN - 15:8 - 0x0 - 0x0 - 颜色键绿色值 * - CKRED - 23:16 - 读/写 - 0x0 - 颜色键红色值 * - 保留 - 31:24 - / - 0x0 - / 图层 0 像素格式配置寄存器 (DISP_L0PFCR) ------------------------------------------------------ 此寄存器定义用于图层帧缓冲区中存储数据的像素格式。像素数据从帧缓冲区读取,然后转换为内部格式 8888 (ARGB)。 地址偏移:``0x94`` .. list-table:: 表 5.26:DISP_L0PFCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - PF - 2:0 - 读/写 - 0x0 - 这些位配置像素格式 - 3'b000: ARGB8888 - 3'b001: RGB888 - 3'b010: RGB565 - 3'b011: ARGB1555 - 3'b100: ARGB4444 - 3'b101: L8 (8 位亮度) - 3'b110: AL44 (4 位 alpha, 4 位亮度) - 3'b111: AL88 (8 位 alpha, 8 位亮度) * - 保留 - 31:3 - / - 0x0 - / 图层 1 像素格式配置寄存器 (DISP_L1PFCR) ------------------------------------------------------ 此寄存器定义用于图层帧缓冲区中存储数据的像素格式。像素数据从帧缓冲区读取,然后转换为内部格式 8888 (ARGB)。 地址偏移:``0x114`` .. list-table:: 表 5.27:DISP_L1PFCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - PF - 2:0 - 读/写 - 0x0 - 这些位配置像素格式 - 3'b000: ARGB8888 - 3'b001: RGB888 - 3'b010: RGB565 - 3'b011: ARGB1555 - 3'b100: ARGB4444 - 3'b101: L8 (8 位亮度) - 3'b110: AL44 (4 位 alpha, 4 位亮度) - 3'b111: AL88 (8 位 alpha, 8 位亮度) * - 保留 - 31:3 - / - 0x0 - / 图层 0 常量 Alpha 配置寄存器 (DISP_L0CACR) ------------------------------------------------- 此寄存器定义用于 Alpha 混合的常量 Alpha 值(由硬件除以 255)。 地址偏移:``0x98`` .. list-table:: 表 5.28:DISP_L0CACR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CONSTA - 7:0 - 读/写 - 0xFF - 这些位配置用于混合的常量 Alpha * - 保留 - 31:8 - / - 0x0 - / 图层 1 常量 Alpha 配置寄存器 (DISP_L1CACR) ------------------------------------------------- 此寄存器定义用于 Alpha 混合的常量 Alpha 值(由硬件除以 255)。 地址偏移:``0x118`` .. list-table:: 表 5.29:DISP_L1CACR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CONSTA - 7:0 - 读/写 - 0xFF - 这些位配置用于混合的常量 Alpha * - 保留 - 31:8 - / - 0x0 - / 图层 0 默认颜色配置寄存器 (DISP_L0DCCR) ------------------------------------------------------ 此寄存器以 ARGB 格式定义图层的默认颜色。默认颜色用于定义的图层窗口之外或图层禁用时。复位值 0x00000000 定义透明黑色。 地址偏移:``0x9C`` .. list-table:: 表 5.30:DISP_L0DCCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DCBLUE - 7:0 - 读/写 - 0X0 - 默认颜色蓝色值 * - DCGREEN - 15:8 - 读/写 - 0X0 - 默认颜色绿色值 * - DCRED - 23:16 - 读/写 - 0X0 - 默认颜色红色值 * - DCALPHA - 31:24 - 读/写 - 0X0 - 默认颜色 Alpha 值 图层 1 默认颜色配置寄存器 (DISP_L1DCCR) ------------------------------------------------------ 此寄存器以 ARGB 格式定义图层的默认颜色。默认颜色用于定义的图层窗口之外或图层禁用时。复位值 0x00000000 定义透明黑色。 地址偏移:``0x11C`` .. list-table:: 表 5.31:DISP_L1DCCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DCBLUE - 7:0 - 读/写 - 0X0 - 默认颜色蓝色值 * - DCGREEN - 15:8 - 读/写 - 0X0 - 默认颜色绿色值 * - DCRED - 23:16 - 读/写 - 0X0 - 默认颜色红色值 * - DCALPHA - 31:24 - 读/写 - 0X0 - 默认颜色 Alpha 值 图层 0 混合因子配置寄存器 (DISP_L0BFCR) ------------------------------------------------------ 此寄存器定义混合因子 F1 和 F2。通用混合公式为:BC = BF1 x C + BF2 x Cs 地址偏移:``0xA0`` .. list-table:: 表 5.32:DISP_L0BFCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BF2 - 2:0 - 读/写 - 0X7 - 混合因子 2 - 3'b000: 保留 - 3'b001: 保留 - 3'b010: 保留 - 3'b011: 保留 - 3'b100: 保留 - 3'b101: 1 - 常量 Alpha - 3'b110: 保留 - 3'b111: 1 - (像素 Alpha x 常量 Alpha) * - 保留 - 7:3 - / - 0X0 - / * - BF1 - 10:8 - 读/写 - 0X6 - 混合因子 1 - 3'b000: 保留 - 3'b001: 保留 - 3'b010: 保留 - 3'b011: 保留 - 3'b100: 常量 Alpha - 3'b101: 保留 - 3'b110: (像素 Alpha x 常量 Alpha) - 3'b111: 保留 * - 保留 - 31:11 - / - 0X0 - / 注意:常量 Alpha 值是 LOCACR 寄存器中编程的值由硬件除以 255。 示例:仅启用图层 0,BF1 配置为常量 Alpha。BF2 配置为 1 - 常量 Alpha。LOCACR 寄存器中编程的常量 Alpha 为 240 (0xF0)。因此,常量 Alpha 值为 240/255 = 0.94。C:当前图层颜色为 128。Cs:背景颜色为 48。图层 0 与背景颜色混合。BC = 常量 Alpha x C + (1 - 常量 Alpha) x Cs = 0.94 x 128 + (1- 0.94) x 48 = 123 图层 1 混合因子配置寄存器 (DISP_L1BFCR) ------------------------------------------------------ 此寄存器定义混合因子 F1 和 F2。通用混合公式为:BC = BF1 x C + BF2 x Cs 地址偏移:``0x120`` .. list-table:: 表 5.33:DISP_L1BFCR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BF2 - 2:0 - 读/写 - 0X7 - 混合因子 2 - 3'b000: 保留 - 3'b001: 保留 - 3'b010: 保留 - 3'b011: 保留 - 3'b100: 保留 - 3'b101: 1 - 常量 Alpha - 3'b110: 保留 - 3'b111: 1 - (像素 Alpha x 常量 Alpha) * - 保留 - 7:3 - / - 0X0 - / * - BF1 - 10:8 - 读/写 - 0X6 - 混合因子 1 - 3'b000: 保留 - 3'b001: 保留 - 3'b010: 保留 - 3'b011: 保留 - 3'b100: 常量 Alpha - 3'b101: 保留 - 3'b110: (像素 Alpha x 常量 Alpha) - 3'b111: 保留 * - 保留 - 31:11 - / - 0X0 - / 图层 0 镜像寄存器 (DISP_L0MIR) ------------------------------------------------------ 该寄存器决定是否开启水平镜像或垂直镜像。 地址偏移:``0xA4`` .. list-table:: 表 5.34:DISP_L0MIR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LRMR - 0 - 读/写 - 0x0 - 水平镜像使能 - 1'b0: 禁用水平镜像 - 1'b1: 使能水平镜像 * - UDMR - 1 - 读/写 - 0x0 - 垂直镜像使能 - 1'b0: 禁用垂直镜像 - 1'b1: 使能垂直镜像 * - 保留 - 31:11 - / - 0X0 - / 注意:当在 X(水平)或 Y(垂直)或 XY(水平和垂直)镜像模式下配置镜像模式时,起始地址应配置为图片第一行最后一个像素数据地址,或图片最后一行第一个像素数据地址,或图片最后一行最后一个像素数据地址。 图层 1 镜像寄存器 (DISP_L1MIR) ------------------------------------------------------ 该寄存器决定是否开启水平镜像或垂直镜像。 地址偏移:``0x124`` .. list-table:: 表 5.35:DISP_L1MIR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LRMR - 0 - 读/写 - 0x0 - 水平镜像使能 - 1'b0: 禁用水平镜像 - 1'b1: 使能水平镜像 * - UDMR - 1 - 读/写 - 0x0 - 垂直镜像使能 - 1'b0: 禁用垂直镜像 - 1'b1: 使能垂直镜像 * - 保留 - 31:11 - / - 0X0 - / 图层 0 Alpha 数据寄存器 (DISP_L0PIX_ALPHA) ------------------------------------------------------ 该寄存器用于弥补那些没有 Alpha 数据的像素格式。 地址偏移:``0xA8`` .. list-table:: 表 5.36:DISP_L0PIX_ALPHA 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - ALPHA - 7:0 - 读/写 - 0x0 - 该寄存器用于弥补那些没有 Alpha 数据的像素格式。 * - 保留 - 31:8 - / - 0X0 - / 图层 1 Alpha 数据寄存器 (DISP_L1PIX_ALPHA) ------------------------------------------------------ 该寄存器用于弥补那些没有 Alpha 数据的像素格式。 地址偏移:``0x128`` .. list-table:: 表 5.37:DISP_L1PIX_ALPHA 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - ALPHA - 7:0 - 读/写 - 0x0 - 该寄存器用于弥补那些没有 Alpha 数据的像素格式。 * - 保留 - 31:8 - / - 0X0 - / 图层 0 颜色帧缓冲区地址寄存器 (DISP_L0CFBAR) ------------------------------------------------------ 此寄存器定义颜色帧缓冲区起始地址,该地址必须指向图层左上角像素的像素数据在帧缓冲区中的存储地址。 地址偏移:``0xAC`` .. list-table:: 表 5.38:DISP_L0CFBAR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBADD - 31:0 - 读/写 - 0x0 - 颜色帧缓冲区起始地址 图层 1 颜色帧缓冲区地址寄存器 (DISP_L1CFBAR) ------------------------------------------------------ 此寄存器定义颜色帧缓冲区起始地址,该地址必须指向图层左上角像素的像素数据在帧缓冲区中的存储地址。 地址偏移:``0x12C`` .. list-table:: 表 5.39:DISP_L1CFBAR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBADD - 31:0 - 读/写 - 0x0 - 颜色帧缓冲区起始地址 图层 0 颜色帧缓冲区长度寄存器 (DISP_L0CFBLR) ------------------------------------------------------ 此寄存器定义颜色帧缓冲区行长度和间距。 地址偏移:``0xB0`` .. list-table:: 表 5.40:DISP_L0CFBLR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLL - 12:0 - 读/写 - 0x0 - 颜色帧缓冲区行长度 * - 保留 - 15:13 - / - 0x0 - / * - CFBP - 31:16 - 读/写 - 0x0 - 颜色帧缓冲区间距(字节) 图层 1 颜色帧缓冲区长度寄存器 (DISP_L1CFBLR) ------------------------------------------------------ 此寄存器定义颜色帧缓冲区行长度和间距。 地址偏移:``0x130`` .. list-table:: 表 5.41:DISP_L1CFBLR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLL - 12:0 - 读/写 - 0x0 - 颜色帧缓冲区行长度 * - 保留 - 15:13 - / - 0x0 - / * - CFBP - 31:16 - 读/写 - 0x0 - 颜色帧缓冲区间距(字节) 图层 0 颜色帧缓冲区行数寄存器 (DISP_L0CFBLNR) ------------------------------------------------------ 此寄存器定义颜色帧缓冲区中的行数。 地址偏移:``0xB4`` .. list-table:: 表 5.42:DISP_L0CFBLNR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLNBR - 10:0 - 读/写 - 0x0 - 帧缓冲区行数 * - 保留 - 31:11 - / - 0x0 - / 注意:行数和行长度的设置定义了每帧为每个图层提取多少数据。如果配置的字节数少于所需,则在使能的情况下会生成 FIFO 下溢中断。另一方面,起始地址和间距设置定义了内存中每一行的正确起始位置。 图层 1 颜色帧缓冲区行数寄存器 (DISP_L1CFBLNR) ------------------------------------------------------ 此寄存器定义颜色帧缓冲区中的行数。 地址偏移:``0x134`` .. list-table:: 表 5.43:DISP_L1CFBLNR 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLNBR - 10:0 - 读/写 - 0x0 - 帧缓冲区行数 * - 保留 - 31:11 - / - 0x0 - / 图层 0 控制寄存器激活 (DISP_L0CR_ACTIVE) ------------------------------------------------------ 地址偏移:``0x254`` .. list-table:: 表 5.44:DISP_L0CR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LEN - 0 - 只读 - 0x0 - 对应寄存器的影子字段 * - COLKEN - 1 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 3:2 - / - 0x0 - / * - CLUTEN - 4 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:5 - / - 0x0 - / 图层 1 控制寄存器激活 (DISP_L1CR_ACTIVE) ------------------------------------------------------ 地址偏移:``0x2D4`` .. list-table:: 表 5.45:DISP_L1CR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LEN - 0 - 只读 - 0x0 - 对应寄存器的影子字段 * - COLKEN - 1 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 3:2 - / - 0x0 - / * - CLUTEN - 4 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:5 - / - 0x0 - / 图层 0 窗口水平位置配置寄存器激活 (DISP_L0WHPCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x258`` .. list-table:: 表 5.46:DISP_L0WHPCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WHSTPOS - 11:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 15:12 - / - 0x0 - / * - WHSPPOS - 27:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:28 - / - 0x0 - / 图层 1 窗口水平位置配置寄存器激活 (DISP_L1WHPCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2D8`` .. list-table:: 表 5.47:DISP_L1WHPCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WHSTPOS - 11:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 15:12 - / - 0x0 - / * - WHSPPOS - 27:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:28 - / - 0x0 - / 图层 0 窗口垂直位置配置寄存器激活 (DISP_L0WVPCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x25C`` .. list-table:: 表 5.48:DISP_L0WVPCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WVSTPOS - 10:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 15:11 - / - 0x0 - / * - WVSPPOS - 26:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:27 - / - 0x0 - / 图层 1 窗口垂直位置配置寄存器激活 (DISP_L1WVPCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2DC`` .. list-table:: 表 5.49:DISP_L1WVPCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - WVSTPOS - 10:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 15:11 - / - 0x0 - / * - WVSPPOS - 26:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:27 - / - 0x0 - / 图层 0 颜色键控配置寄存器激活 (DISP_L0CKCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x260`` .. list-table:: 表 5.50:DISP_L0CKCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CKBLUE - 7:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - CKGREEN - 15:8 - 只读 - 0x0 - 对应寄存器的影子字段 * - CKRED - 23:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:24 - / - 0x0 - / 图层 1 颜色键控配置寄存器激活 (DISP_L1CKCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2E0`` .. list-table:: 表 5.51:DISP_L1CKCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CKBLUE - 7:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - CKGREEN - 15:8 - 只读 - 0x0 - 对应寄存器的影子字段 * - CKRED - 23:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:24 - / - 0x0 - / 图层 0 像素格式配置寄存器激活 (DISP_L0PFCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x264`` .. list-table:: 表 5.52:DISP_L0PFCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - PF - 2:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:3 - / - 0x0 - / 图层 1 像素格式配置寄存器激活 (DISP_L1PFCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2E4`` .. list-table:: 表 5.53:DISP_L1PFCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - PF - 2:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:3 - / - 0x0 - / 图层 0 常量 Alpha 配置寄存器激活 (DISP_L0CACR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x268`` .. list-table:: 表 5.54:DISP_L0CACR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CONSTA - 7:0 - 只读 - 0xFF - 对应寄存器的影子字段 * - 保留 - 31:8 - / - 0x0 - / 图层 1 常量 Alpha 配置寄存器激活 (DISP_L1CACR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2E8`` .. list-table:: 表 5.55:DISP_L1CACR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CONSTA - 7:0 - 只读 - 0xFF - 对应寄存器的影子字段 * - 保留 - 31:8 - / - 0x0 - / 图层 0 默认颜色配置寄存器激活 (DISP_L0DCCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x26C`` .. list-table:: 表 5.56:DISP_L0DCCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DCBLUE - 7:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - DCGREEN - 15:8 - 只读 - 0x0 - 对应寄存器的影子字段 * - DCRED - 23:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - DCALPHA - 31:24 - 只读 - 0x0 - 对应寄存器的影子字段 图层 1 默认颜色配置寄存器激活 (DISP_L1DCCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2EC`` .. list-table:: 表 5.57:DISP_L1DCCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - DCBLUE - 7:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - DCGREEN - 15:8 - 只读 - 0x0 - 对应寄存器的影子字段 * - DCRED - 23:16 - 只读 - 0x0 - 对应寄存器的影子字段 * - DCALPHA - 31:24 - 只读 - 0x0 - 对应寄存器的影子字段 图层 0 混合因子配置寄存器激活 (DISP_L0BFCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x270`` .. list-table:: 表 5.58:DISP_L0BFCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BF2 - 2:0 - 只读 - 0x7 - 对应寄存器的影子字段 * - 保留 - 7:3 - / - 0x0 - / * - BF1 - 10:8 - 只读 - 0x6 - 对应寄存器的影子字段 * - 保留 - 31:11 - / - 0x0 - / 图层 1 混合因子配置寄存器激活 (DISP_L1BFCR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2F0`` .. list-table:: 表 5.59:DISP_L1BFCR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - BF2 - 2:0 - 只读 - 0x7 - 对应寄存器的影子字段 * - 保留 - 7:3 - / - 0x0 - / * - BF1 - 10:8 - 只读 - 0x6 - 对应寄存器的影子字段 * - 保留 - 31:11 - / - 0x0 - / 图层 0 镜像寄存器激活 (DISP_L0MIR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x274`` .. list-table:: 表 5.60:DISP_L0MIR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LRMR - 0 - 只读 - 0x0 - 对应寄存器的影子字段 * - UDMR - 1 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:2 - / - 0x0 - / 图层 1 镜像寄存器激活 (DISP_L1MIR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2F4`` .. list-table:: 表 5.61:DISP_L1MIR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - LRMR - 0 - 只读 - 0x0 - 对应寄存器的影子字段 * - UDMR - 1 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:2 - / - 0x0 - / 图层 0 Alpha 数据寄存器激活 (DISP_L0PIX_ALPHA_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x278`` .. list-table:: 表 5.62:DISP_L0PIX_ALPHA_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - ALPHA - 7:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:8 - / - 0x0 - / 图层 1 Alpha 数据寄存器激活 (DISP_L1PIX_ALPHA_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2F8`` .. list-table:: 表 5.63:DISP_L1PIX_ALPHA_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - ALPHA - 7:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:8 - / - 0x0 - / 图层 0 颜色帧缓冲区地址寄存器激活 (DISP_L0CFBAR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x27C`` .. list-table:: 表 5.64:DISP_L0CFBAR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBADD - 31:0 - 只读 - 0x0 - 对应寄存器的影子字段 图层 1 颜色帧缓冲区地址寄存器激活 (DISP_L1CFBAR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x2FC`` .. list-table:: 表 5.65:DISP_L1CFBAR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBADD - 31:0 - 只读 - 0x0 - 对应寄存器的影子字段 图层 0 颜色帧缓冲区长度寄存器激活 (DISP_L0CFBLR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x3D0`` .. list-table:: 表 5.66:DISP_L0CFBLR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLL - 12:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 15:13 - / - 0x0 - / * - CFBP - 31:16 - 只读 - 0x0 - 对应寄存器的影子字段 图层 1 颜色帧缓冲区长度寄存器激活 (DISP_L1CFBLR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x450`` .. list-table:: 表 5.67:DISP_L1CFBLR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLL - 12:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 15:13 - / - 0x0 - / * - CFBP - 31:16 - 只读 - 0x0 - 对应寄存器的影子字段 图层 0 颜色帧缓冲区行数寄存器激活 (DISP_L0CFBLNR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x3D4`` .. list-table:: 表 5.68:DISP_L0CFBLNR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLNBR - 10:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:11 - / - 0x0 - / 图层 1 颜色帧缓冲区行数寄存器激活 (DISP_L1CFBLNR_ACTIVE) ---------------------------------------------------------------------- 地址偏移:``0x454`` .. list-table:: 表 5.69:DISP_L1CFBLNR_ACTIVE 的寄存器格式 :widths: 15 10 10 15 50 :header-rows: 1 * - 字段 - 位 - 访问 - 复位值 - 描述 * - CFBLNBR - 10:0 - 只读 - 0x0 - 对应寄存器的影子字段 * - 保留 - 31:11 - / - 0x0 - / 6. 编程手册 >>>>>>>>>>> DISP 可编程参数 -------------------------------------- DISP 提供灵活的配置参数。它可以通过 DISP_GCR 寄存器启用或禁用。 DISP 全局配置参数 ~~~~~~~~~~~~~~~~~~~~~~~~ 同步时序 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DISP 同步时序。图 6.1 DISP 同步时序 展示了由图 3.1 DISP 框图 中所示的同步时序生成器块生成的可配置时序参数。它生成面板的水平同步和垂直同步时序信号、像素时钟和数据使能信号。 .. _DISP 同步时序: .. figure:: /assets/images/disp_sync_timing.png :alt: DISP 同步时序 :align: center **图 6.1: DISP 同步时序** 注意:HBP 和 HFP 分别是水平后沿和前沿周期。VBP 和 VFP 分别是垂直后沿和前沿周期。 DISP 可编程同步时序包括: * HSYNC 和 VSYNC 宽度:水平和垂直同步宽度,通过在 DISP_SSCR 寄存器中编程 HSYNC 宽度 - 1 和 VSYNC 宽度 - 1 的值来配置。 * HBP 和 VBP:水平和垂直同步后沿宽度,通过在 DISP_BPCR 寄存器中编程累计值 HSYNC 宽度 + HBP - 1 和累计值 VSYNC 宽度 + VBP - 1 来配置。 * 有效宽度和有效高度:有效宽度和有效高度,通过在 DISP_AWCR 寄存器中编程累计值 HSYNC 宽度 + HBP + 有效宽度 - 1 和累计值 VSYNC 宽度 + VBP + 有效高度 - 1 来配置。 * 总宽度:总宽度,通过在 DISP_TWCR 寄存器中编程累计值 HSYNC 宽度 + HBP + 有效宽度 + HFP - 1 来配置。HFP 是水平前沿周期。 * 总高度:总高度,通过在 DISP_TWCR 寄存器中编程累计值 VSYNC 高度 + VBP + 有效高度 + VFP - 1 来配置。VFP 是垂直前沿周期。 注意:可配置分辨率(有效区域):例如,如果总线带宽和时钟频率增加,数据传输效率会更高,当帧率固定时,可以将分辨率配置得更大。分辨率必须是 4 的倍数。 同步时序配置示例 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * TFT-LCD 时序(必须从面板数据手册中提取): - 水平和垂直同步宽度:0xA 像素和 0x2 行 - 水平和垂直后沿:0x14 像素和 0x2 行 - 有效宽度和有效高度:0x140 像素,0xF0 行 (320x240) - 水平前沿:0xA 像素 - 垂直前沿:0x4 行 * 在 DISP 时序寄存器中编程的值: - DISP_SSCR 寄存器:应编程为 0x00090001。(HSW[11:0] 是 0x9,VSH[10:0] 是 0x1) - DISP_BPCR 寄存器:应编程为 0x001D0003(AHBP[11:0] 是 0x1D(0xA+ 0x13),AVBP[10:0] 是 0x3(0x2 + 0x1)) - DISP_AWCR 寄存器:应编程为 0x015D00F3(AAW[11:0] 是 0x15D(0xA +0x14 +0x13F),AAH[10:0] 是 0xF3(0x2 +0x2 + 0xEF)) - DISP_TWCR 寄存器:应编程为 0x016700F7(TOTALW[11:0] 是 0x167(0xA +0x14 +0x140 + 0x9),TOTALH[10:0] 是 0xF7(0x2 +0x2 + 0xF0 + 0x3)) 背景颜色 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 可以通过 DISP_BCCR 寄存器编程一个恒定的背景颜色 (RGB888)。它用于与底层混合。 可编程极性 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 水平同步、垂直同步、数据使能和像素时钟输出信号的极性可以通过 DISP_GCR 寄存器编程为高电平有效或低电平有效。 抖动 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 抖动伪随机技术用于为每个像素颜色通道(R、G 或 B)值添加一个小的随机值(阈值),从而在某些情况下,当在 18 位显示器上显示 24 位数据时,对最高有效位 (MSB) 进行四舍五入。因此,抖动技术用于对不同帧之间的数据进行四舍五入。 抖动伪随机技术与将最低有效位 (LSB) 与阈值进行比较并仅在 LSB 部分 >= 阈值时向 MSB 部分加 1 的技术相同。一旦应用了抖动,LSB 通常会被丢弃。 所添加的伪随机值的宽度对于每个颜色通道为 2 位:红色 2 位、绿色 2 位、蓝色 2 位。一旦 DISP 控制器启用,LFSR 从第一个活动像素开始运行,并且即使在消隐期间和抖动关闭时也保持运行。如果 DISP 被禁用,LFSR 被复位。 抖动可以通过 DISP_GCR 寄存器动态地打开和关闭。 重载影子寄存器 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 一些配置寄存器是影子寄存器。影子寄存器的值可以在写入这些寄存器时或根据 DISP_SRCR 寄存器中的配置,在垂直消隐期间开始时立即重新加载到活动寄存器。如果选择了立即重载配置,则仅在所有新寄存器都已写入后才应激活重载。 在重载完成之前,不应再次修改影子寄存器。从影子寄存器读取返回的是实际活动值。只有在重载发生后才能读取新写入的值。 如果 DISP_IER 寄存器中使能,则可以生成寄存器重载中断。 影子寄存器是所有图层 0 和图层 1 的寄存器。 中断生成事件 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 参考 *中断* 章节。DISP 中断的中断配置。 图层可编程参数 ~~~~~~~~~~~~~~~~~~~~~~~~ 最多可以启用、禁用和单独配置两个图层。图层显示顺序是固定的,并且是自下而上。如果启用了两个图层,则图层 2 是顶部显示的窗口。 窗口化 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 每个图层都可以定位和调整大小,并且必须位于有效显示区域内。 窗口位置和大小通过左上角和右下角的 X/Y 位置以及包括同步、后沿大小和活动数据区域的内部时序生成器进行配置。参考 DISP_LxWHPCR 和 DISP_LxWVPCR 寄存器。 可编程的图层位置和大小定义了窗口中一行的第一个/最后一个可见像素以及窗口中第一条/最后一条可见行。它允许显示完整图像帧或仅显示图像帧的一部分。参考图6.2 图层窗口可编程参数。 .. _DISP 图层窗口可编程参数: .. figure:: /assets/images/disp_win_paras.png :alt: DISP 图层窗口可编程参数 :align: center **图 6.2: DISP 图层窗口可编程参数** * 图层中第一个和最后一个可见像素通过配置 DISP_LxWHPCR 寄存器中的 WHSTPOS[11:0] 和 WHSPPOS[11:0] 来设置。 * 图层中第一条和最后一条可见行通过配置 DISP_LxWVPCR 寄存器中的 WVSTPOS[10:0] 和 WVSPPOS[10:0] 来设置。 像素输入格式 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 可编程像素格式用于图层帧缓冲区中存储的数据。 每个图层最多可以通过 DISP_LxPFCR 寄存器配置 8 种输入像素格式。 像素数据从帧缓冲区读取,然后按如下方式转换为内部 8888 (ARGB) 格式:宽度小于 8 位的组件通过位复制扩展到 8 位。选定的位范围被连接多次,直到其长度超过 8 位。从得到的向量中选择 8 个 MSB 位。示例:RGB565 红色通道的 5 位变为(位位置):43210432(3 个 LSB 用 5 个 MSB 填充)。 表 6.1 像素数据映射与颜色格式 描述了根据所选格式的像素数据映射。 .. list-table:: 表 6.1 像素数据映射与颜色格式 :widths: 20 20 20 20 20 :header-rows: 1 * - 像素格式 - 字节3 - 字节2 - 字节1 - 字节0 * - ARGB8888 - - @+3 - Ax[7:0] - - @+2 - Rx[7:0] - - @+1 - Gx[7:0] - - @+0 - Bx[7:0] * - RGB888 - - @+3 - Bx+1[7:0] - - @+2 - Rx[7:0] - - @+1 - Gx[7:0] - - @+0 - Bx[7:0] * - RGB565 - - @+3 - Rx+1[4:0]Gx+1[5:3] - - @+2 - Gx+1[2:0]Bx+1[4:0] - - @+1 - Rx[4:0]Gx[5:3] - - @+0 - Gx[2:0]Bx[4:0] * - ARGB1555 - - @+3 - Ax+1[0]Rx+1[4:0]Gx+1[4:3] - - @+2 - Gx+1[2:0]Bx+1[4:0] - - @+1 - Ax[0]Rx[4:0]Gx[4:3] - - @+0 - Gx[2:0]Bx[4:0] * - ARGB4444 - - @+3 - Ax+1[3:0]Rx+1[3:0] - - @+2 - Gx+1[3:0]Bx+1[3:0] - - @+1 - Ax[3:0]Rx[3:0] - - @+0 - Gx[3:0]Bx[3:0] * - L8 - - @+3 - Lx+3[7:0] - - @+2 - Lx+2[7:0] - - @+1 - Lx+1[7:0] - - @+0 - Lx[7:0] * - AL44 - - @+3 - Ax+3[3:0]Lx+3[3:0] - - @+2 - Ax+2[3:0]Lx+2[3:0] - - @+1 - Ax+1[3:0]Lx+1[3:0] - - @+0 - Ax[3:0]Lx[3:0] * - AL88 - - @+3 - Ax+1[7:0] - - @+2 - Lx+1[7:0] - - @+1 - Ax[7:0] - - @+0 - Lx[7:0] 颜色查找表 (CLUT) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ CLUT 可以通过 DISP_LxCR 寄存器在运行时为每个图层启用,并且仅在使用 L8、AL44 和 AL88 输入像素格式的索引颜色情况下有用。 首先,必须用 R、G 和 B 值加载 CLUT,这些值替换该像素的原始 R、G、B 值(索引颜色)。每种颜色(RGB 值)都有自己的地址,即其在 CLUT 中的位置。CLUT 可以通过 disp_ram_jcb 总线访问。 * 在 L8 和 AL88 输入像素格式的情况下,必须加载 256 种颜色。 * 在 AL44 输入像素格式的情况下,只需加载 16 种颜色。必须填充每种颜色的地址: - L0(索引颜色 0),地址 0x00 - L1,地址 0x11 - L2,地址 0x22 - ... - L15,地址 0xFF 颜色帧缓冲区地址 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 每个图层都有一个通过 DISP_LxCFBAR 寄存器配置的颜色帧缓冲区起始地址。 当启用图层时,数据从颜色帧缓冲区获取。 颜色帧缓冲区长度 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 每个图层在颜色帧缓冲区中有一个以字节为单位的总行长度设置,以及一个在帧缓冲区中的行数设置,可分别在 DISP_LxCFBLR 和 DISP_LxCFBLNR 寄存器中配置。 行长和行数设置用于在帧缓冲区结束时停止向图层 FIFO 预取数据。 * 如果设置的字节数少于所需,则在先前已使能的情况下会生成 FIFO 下溢中断。 * 如果设置的字节数多于实际需要,则从 FIFO 读取的无用数据将被丢弃。无用数据不显示。 颜色帧缓冲区间距 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 每个图层都有一个可配置的颜色帧缓冲区间距,即一行开始与下一行开始之间的字节距离。它通过 DISP_LxCFBLR 寄存器配置。 图层混合 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 混合始终处于活动状态,并且两个图层可以按照通过 DISP_LxBFCR 寄存器配置的混合因子进行混合。 混合顺序是固定的,并且是自下而上。如果启用了两个图层,首先将图层 0 与背景颜色混合,然后将图层 1 与图层 0 和背景的混合颜色结果进行混合。参考图 6.3 两层与背景混合。 .. _DISP 两层与背景混合: .. figure:: /assets/images/disp_layer_mix.png :alt: DISP 两层与背景混合 :align: center **图 6.3: DISP 两层与背景混合** 默认颜色 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 每个图层都可以具有 ARGB 格式的默认颜色,该颜色用于定义的图层窗口之外或图层禁用时。 默认颜色通过 DISP_LxDCCR 寄存器配置。 即使图层禁用,两个图层之间的混合也始终执行。为了避免在图层禁用时显示默认颜色,请将此图层的混合因子保留在 DISP_LxBFCR 寄存器中的复位值。 颜色键控 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 可以配置颜色键 (RGB) 来代表透明像素。 如果启用了颜色键控,则将当前像素(在格式转换之后和分别在 CLUT 或混合之前)与颜色键进行比较。如果它们与编程的 RGB 值匹配,则该像素的所有通道 (ARGB) 都设置为 0。 颜色键值可以配置并在运行时用于替换像素 RGB 值。 颜色键控通过 DISP_LxCKCR 寄存器启用。 颜色键控通过 DISP_LxCKCR 寄存器配置。编程值取决于像素格式,因为它是与转换为 ARGB888 后的当前像素进行比较的。 示例:如果使用中黄色(50% 红色 + 50% 绿色)作为透明颜色键: * 在 RGB565 中,中黄色是 0x8400。将 DISP_LxCKCR 设置为 0x848200。 * 在 ARGB8888 中,中黄色是 0x808000,将 DISP_LxCKCR 设置为 0x808000。 * 在所有基于 CLUT 的颜色模式(L8、AL88、AL44)中,将调色板中的一个条目设置为中黄色 0x808000,并将 DISP_LxCKCR 设置为 0x808000。 BT1120 格式 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DISP 输出支持 BT1120 格式,软件可以通过设置 BT1120EN 来启用 BT1120。图 6.4 展示了 BT1120 的可配置时序。 .. _DISP BT1120 时序: .. figure:: /assets/images/disp_bt1120_timing.png :alt: DISP BT1120 时序 :align: center **图 6.4: DISP BT1120 时序** 在上图中,每个数字代表不同的含义: * 0: 表示行消隐区中有效视频的开始,可由 DISP_SAV 设置。 * 1: 表示行消隐区中有效视频的结束,可由 DISP_EAV 设置。 * 2: 表示帧消隐区中有效视频的开始,可由 DISP_SAV 设置。 * 3: 表示帧消隐区中有效视频的结束,可由 DISP_EAV 设置。 DISP 编程步骤 --------------------- * 启用 DISP 时钟。 * 根据面板数据手册配置所需的像素时钟。 * 根据面板数据手册配置同步时序:VSYNC、HSYNC、垂直和水平后沿、活动数据区域以及前沿时序。 * 在 DISP_GCR 寄存器中配置同步信号和时钟极性。 * 如果需要,在 DISP_BCCR 寄存器中配置背景颜色。 * 在 DISP_IER 和 DISP_LIPCR 寄存器中配置所需的中断。 配置图层 0/1 参数: * 在 DISP_LxWHPCR 和 DISP_LxWVPCR 寄存器中编程图层窗口水平和垂直位置。图层窗口必须在活动数据区域内。 * 在 DISP_LxPFCR 寄存器中编程像素输入格式。 * 在 DISP_LxCFBAR 寄存器中编程颜色帧缓冲区起始地址。 * 在 DISP_LxCFBLR 寄存器中编程颜色帧缓冲区的行长和间距。 * 在 DISP_LxCFBLNR 寄存器中编程颜色帧缓冲区的行数。 * 如果需要,通过 disp_ram_jcb 总线用 RGB 值加载 CLUT * 如果需要,分别在 DISP_LxDCCR 和 DISP_LxBFCR 寄存器中配置默认颜色和混合因子。 * 在 DISP_LxCR 寄存器中启用图层 0/1,如果需要,启用 CLUT。 * 如果需要,分别在 DISP_GCR 和 DISP_LxCKCR 寄存器中启用抖动和颜色键控。它们也可以动态启用。 * 通过 DISP_SRCR 寄存器将影子寄存器重载到活动寄存器。 * 在 DISP_GCR 寄存器中启用 DISP 控制器。 * 除 CLUT 外,所有图层参数都可以动态修改。新配置必须通过配置 DISP_SRCR 寄存器立即或在垂直消隐期间重新加载。 注意:所有图层的寄存器都是影子寄存器。一旦写入寄存器,在重载完成之前不得再次修改。因此,如果尚未重新加载,则对同一寄存器的新写入将覆盖先前的配置。