新唐MCU技术
直播中

王飞云

8年用户 1579经验值
私信 关注
[问答]

M55M1如何通过 EBI 驱动同步信号 LCD 面板?

[M55M1]通过 EBI 驱动同步信号 LCD 面板

回帖(1)

早知

2025-8-21 18:25:37

M55M1 (AT32 M55M1 微控制器) 通过其 外部总线接口 (EBI) 驱动具有同步信号 (HSYNC, VSYNC, DE/DEN, PCLK) 的 LCD 面板 (通常是 RGB 接口的 TFT LCD) 时,需要利用 EBI 的特殊功能来模拟或直接支持 同步 FIFO 模式 (Synchronized FIFO Mode),这本质上等同于一个简易的、基于总线的 TFT LCD 控制器(LCD-TFT),虽然功能不如专用的 LTDC (LCD-TFT Controller) 外设强大。以下是实现的关键步骤和原理:




  1. 理解同步 LCD 接口信号:



    • HSYNC (Horizontal Sync): 行同步信号,标志新一行的开始。

    • VSYNC (Vertical Sync): 场同步信号,标志新一帧(整个屏幕)的开始。

    • DE (Data Enable) / DEN (Data Enable): 数据有效信号,高电平期间指示像素数据有效。比 HSYNC/VSYNC 更常用在现代接口中。

    • PCLK (Pixel Clock): 像素时钟信号,数据在 PCLK 的边沿(通常上升沿)采样。

    • RGB[15:0] / RGB[23:0]: 像素数据总线(16位RGB565或24位RGB888)。




  2. M55M1 EBI 的关键角色 (Synchronized FIFO Mode):



    • 同步模式: EBI 必须配置在 同步 FIFO 模式。该模式允许 EBI 在外部时钟信号的控制下读取数据。

    • 外部时钟 (PCLK): 配置 LCD 屏的 PCLK 作为 EBI 的同步模式时钟源 (SYNC_CLK_SOURCE)。这通常连接到 EBI 的 CLK 引脚。

    • 生成同步信号: 在同步 FIFO 模式下:

      • EBI 的 NOE (Output Enable) 引脚被用作 DE/DEN 信号。

      • EBI 的 NADV (Address Valid) / NWE (Write Enable) / NBL (Byte Lane) 引脚或其他特定配置引脚 (取决于芯片具体设计,查手册!) 可用于产生 HSYNCVSYNC 信号。这通常需要配置 EBI 的SYNC_DL (Sync Data Length - 行/帧长度) 和SYNC_PULSE (Sync Pulse Width - 同步脉冲宽度) 寄存器来定义时序。





  3. 实现步骤:




    1. 硬件连接:



      • 将 LCD 面板的 RGB 数据线 (RGB[15:0]) 连接到 EBI 的数据总线 (EBI_D[15:0])。

      • 将 LCD 面板的 PCLK 连接到 EBI 的 同步时钟输入 EBI_CLK (在同步 FIFO 模式下)。

      • 配置并连接 LCD 面板的 DE 信号到 EBI 的 EBI_NOE 引脚。

      • 配置并连接 LCD 面板的 HSYNC 信号到 EBI 的一个特定 控制引脚 (如 NBLx, NADV, NWE 或专用 HSYNC 脚 - 查阅 M55M1 参考手册 EBI 部分关于同步 FIFO 模式的具体引脚映射!)。

      • 配置并连接 LCD 面板的 VSYNC 信号到 EBI 的另一个特定 控制引脚 (如 NADV, NWE, NCSx 或专用 VSYNC 脚 - 查阅手册!)。

      • 确保连接了 LCD 面板的复位 (RESET) 和其他控制信号(如背光控制 LED+, LED-)。




    2. EBI 配置 (关键寄存器):



      • EBI 总线模式寄存器 (EBI_BMCR): 选择 同步 FIFO 模式 (SYNC_FIFO), 并根据像素格式选择数据总线宽度 (通常 16-bit 用于 RGB565)。

      • EBI 同步模式控制寄存器 (EBI_SMCR): 或类似命名的寄存器。

        • 使能同步模式 (SYNC_EN)。

        • 选择外部 PCLK 作为同步时钟源 (SYNC_CLK_SOURCE = EBI_CLK)。

        • 设置同步数据长度 (SYNC_DL): 定义一包含的有效像素数据周期数 (即行分辨率宽度)。

        • 设置同步模式 (SYNC_MODE): 选择信号产生的方式(如使用 NADV/NWE 还是 NBL 等)。

        • 设置行同步脉冲宽度 (SYNC_HSYNC_WIDTH):定义 HSYNC 脉冲的有效宽度(以 PCLK 周期为单位)。

        • 设置场同步脉冲宽度 (SYNC_VSYNC_WIDTH):定义 VSYNC 脉冲的有效宽度(以 PCLK 周期为单位)。

        • 设置行同步极性 (SYNC_HSYNC_POL): 高有效或低有效。

        • 设置场同步极性 (SYNC_VSYNC_POL): 高有效或低有效。

        • 设置 DE 极性 (SYNC_DEN_POL): NOE 用作 DE/DEN,配置其有效电平。

        • 可能有前沿 (Front Porch)、后沿 (Back Porch) 的配置寄存器(或它们包含在 DL 或脉冲宽度中,需要仔细看手册)。这些定义了 HSYNC/VSYNC 脉冲与有效数据显示区之间的空白时间。时序参数的精确配置至关重要!必须严格匹配 LCD 数据手册的要求。





    3. 显存 (Frame Buffer):



      • 在 MCU 的内部 RAM 或外部 SDRAM (如果 EBI 支持且连接了) 中分配一块连续内存区域作为 帧缓冲区 (Framebuffer)

      • 显存大小 = 行分辨率 列分辨率 每个像素的字节数

        • 例如,对于 480x272 分辨率,RGB565 (每个像素 2 字节): 480 * 272 * 2 = 261,120 字节 ≈ 255KB


      • 帧缓冲区的 起始物理地址 将被配置给 EBI 作为读取数据的基地址。每次同步 FIFO 请求数据时,EBI 从该地址开始读取像素数据。

      • 帧缓冲区必须符合 EBI 总线宽度对齐要求(通常字或半字对齐)。确保缓冲区足够大且地址正确!




    4. 初始化序列:



      • 发送 LCD 面板特定的初始化命令序列(通过 SPI、I2C 或其他控制接口,而不是 EBI)。配置 LCD 控制器本身的参数(如扫描方向、显示开/关等)。

      • 这通常需要额外的一个低速接口(如 SPI/I2C),连接到 LCD 面板的 SCL/SDARESX/CSX/D-CX 等控制引脚。




    5. EBI 启动和操作:



      • 配置好所有 EBI 寄存器、时钟源和帧缓冲区地址后,使能 EBI 同步 FIFO 模式

      • EBI 开始工作:

        • VSYNC 有效时(新帧开始),EBI 内部行计数器重置。

        • HSYNC 有效时(新行开始),EBI 重置列指针,并从配置的帧缓冲区基地址开始读取该行的第一个像素。

        • 外部 PCLK 驱动数据读取:DE 有效时,每个 PCLK 上升沿(或配置的边沿)触发 EBI 自动从帧缓冲区读取下一个像素数据并输出到 EBI 数据总线 EBI_D[15:0](读操作的地址由 EBI 内部根据行/列自动递增生成)。

        • EBI 根据配置的时序生成 HSYNCVSYNC 信号。


      • MCU 只需要在帧之间(或通过 VSYNC 中断)更新帧缓冲区的内容,即可更新屏幕显示。在正常扫描期间,CPU 干预很少。






  4. 关键优势和局限性:



    • 优势:

      • 在没有专用 LTDC 的 MCU 上实现了 RGB LCD 驱动能力。

      • 使用外部 PCLK 驱动,数据输出由硬件自动完成,释放 CPU 资源(相比 GPIO 模拟)。

      • 比 SPI/8080 等低速接口带宽大得多,支持更高分辨率和刷新率。


    • 局限性:

      • 时序配置相对复杂: 需要精确匹配 LCD 手册,寄存器设置可能比较繁琐。

      • 同步信号生成灵活性不如 LTDC: 可能无法精细地配置所有门廊时间(或配置项有限)。

      • 帧缓冲区带宽要求高: 持续高带宽的读取操作。如果使用 内部 RAM 作显存,会占用大量宝贵的内存并显著增加总线负载;如果使用 外部 SDRAM,则要求该 SDRAM 控制器和存储器本身的速度足够快以满足 PCLK 速率要求。

      • 占用 EBI 接口: EBI 接口基本被 LCD 独占使用。

      • DMA 或中断协助: 通常需要利用 DMA 或者基于 VSYNC 的中断来高效地更新显存内容(例如绘制、UI 更新)。





总结:


M55M1 通过配置其 EBI 为 同步 FIFO 模式 (Synchronized FIFO Mode), 并利用 外部 LCD 的 PCLK 作为驱动时钟源,实现了一个基于总线的简易 LCD 控制器。它将 NOE 引脚复用为 DE (数据有效),并利用其他控制引脚(如 NBLx, NADV, NWE 或专用脚)在内部计数器和同步脉宽配置的控制下生成 HSYNCVSYNC 信号。主控制器需要在内存中设置一个帧缓冲区,EBI 硬件会在每个 PCLK 到来且 DE 有效时,自动从该缓冲区读取像素数据并通过数据总线输出到 LCD。这种方式要求仔细配置 EBI 的所有时序参数以匹配 LCD 面板规格,并且帧缓冲区的性能(带宽、位置)是关键瓶颈点。这是一种在没有专用 LTDC 时驱动同步 RGB LCD 的高效解决方案。务必查阅 AT32 M55M1 的详细参考手册 EBI 章节关于同步 FIFO 模式的说明!

举报

更多回帖

发帖
×
20
完善资料,
赚取积分