3. LCD接口与显示基础
在RA图形HMI设备开发中,MCU与TFT LCD之间的接口选择直接决定了可支持的屏幕尺寸、分辨率、刷新率以及CPU的参与程度。RA系列MCU常见的显示接口有三类:RGB并行接口、MIPI DSI串行接口和SPI显示接口。理解它们的硬件连接方式与时序特征,是后续使用FSP配置GLCDC并点亮屏幕的前提。
三种接口的硬件连接与适用场景
RGB并行接口是最传统的TFT接口。它把每个像素的颜色分量拆成并行信号线:典型配置为R[7:0]、G[7:0]、B[7:0]共24根数据线,再加上像素时钟PCLK、水平同步HSYNC、垂直同步VSYNC和数据使能DE。每来一个PCLK上升沿,LCD采样一次当前数据总线上的颜色值。这种接口带宽高、时序直观,适合480×272到800×480甚至更高分辨率的屏幕,但引脚占用多,PCB布线需要等长处理。RA6M3、RA8等带GLCDC外设的型号通常提供RGB888或RGB565输出,其中RGB565只使用R[4:0]、G[5:0]、B[4:0],可节省引脚但颜色精度下降。
MIPI DSI是高速差分串行接口,用1~4条数据lane加1条时钟lane传输像素流,引脚极少、带宽极高,常见于手机和高端HMI的MIPI屏。RA系列中部分型号集成MIPI DSI控制器,可直接驱动DSI屏;若MCU只有RGB接口,则需要外接RGB转MIPI DSI桥接芯片。DSI的配置涉及lane数量、视频模式(Video Mode)或命令模式(Command Mode)、非连续时钟等参数,初始化通常需要发送DCS命令序列。
SPI显示接口面向小尺寸屏,如1.3~3.5英寸、分辨率240×240或320×480的IPS屏。它只用SCLK、MOSI、CS、DC(数据/命令选择)和RESET几根线,接线简单、成本低,但刷新率受SPI时钟限制。以40MHz SPI、240×240、RGB565计算,一帧数据量为240×240×2=115200字节,理论传输时间约23ms,实际加上命令开销往往只能达到20~30fps,适合显示状态、图标和简单动画,不适合全屏视频。
使用FSP配置GLCDC驱动TFT LCD
GLCDC是RA系列中负责图形显示的专用外设,它从帧缓冲区读取像素数据,按配置的时序输出到RGB接口。在FSP中配置GLCDC需要完成以下几个关键环节。
首先在FSP的Stacks中添加Graphics→GLCDC模块,并绑定到具体的LCD面板。接着配置输入时钟:GLCDC的像素时钟PCLK由PLL或外部时钟分频得到。以480×272、60Hz刷新率为例,一帧总周期为480+HSYNC脉宽+水平后沿+水平前沿,垂直方向为272+VSYNC脉宽+垂直后沿+垂直前沿。假设水平总周期为525个PCLK,垂直总周期为286行,则所需PCLK频率为525×286×60≈9.0MHz。在FSP中通过设置分频系数使PCLK接近该值,偏差过大会导致画面偏移或闪烁。
然后配置时序参数。这些参数必须与LCD数据手册中的值一致,典型示例(非实测,仅作教学参考):HSYNC脉宽设为41个PCLK,水平后沿43个PCLK,水平前沿8个PCLK;VSYNC脉宽10行,垂直后沿12行,垂直前沿2行。极性方面,需确认LCD要求HSYNC/VSYNC是高有效还是低有效,以及PCLK在上升沿还是下降沿采样。FSP中可分别设置这些极性,配错会导致画面无法锁定。
帧缓冲区配置为RGB565格式,大小480×272×2=261120字节。RA6M3的GLCDC支持从外部SDRAM或内部SRAM读取,若使用内部SRAM需确认容量足够。在FSP中指定缓冲区地址、行间距(通常等于宽度×2)和像素格式。最后使能GLCDC并调用R_GLCDC_Open()和R_GLCDC_Start(),屏幕应显示缓冲区内容。
显示纯色验证配置
点亮屏幕后,最直接的验证方式是填充纯色。以下代码将帧缓冲区填充为红色(RGB565的0xF800),并触发一次刷新:
#define LCD_WIDTH 480
#define LCD_HEIGHT 272
#define FB_ADDR 0x20000000 /* 示例地址,需按实际分配修改 */
void fill_screen(uint16_t color)
{
uint16_t *fb = (uint16_t *)FB_ADDR;
for (uint32_t i = 0; i < LCD_WIDTH * LCD_HEIGHT; i++)
{
fb[i] = color;
}
/* 若使用缓存,需执行清理操作确保数据写入显存 */
R_GLCDC_BufferChange(&g_display0_ctrl, (uint8_t *)FB_ADDR, GLCDC_LAYER_DRAW_FRAME_BUFFER);
}
void display_test(void)
{
fill_screen(0xF800); /* 红 */
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
fill_screen(0x07E0); /* 绿 */
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
fill_screen(0x001F); /* 蓝 */
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
}
若屏幕依次显示红、绿、蓝,说明GLCDC时序、帧缓冲区和接口连接均正确。若出现花屏、偏移或颜色错误,可按以下顺序排查:先确认PCLK频率是否在LCD允许范围内;再检查HSYNC/VSYNC极性和前后沿参数是否与数据手册一致;然后确认帧缓冲区地址是否可访问、像素格式是否匹配;最后用示波器测量PCLK、HSYNC、VSYNC和DE信号,观察时序关系是否符合预期。
对于SPI小屏,验证方式类似,但需要通过SPI发送初始化命令序列(如设置扫描方向、颜色格式、睡眠退出、显示开启),再以DC引脚区分命令和数据写入像素。MIPI DSI屏则需先通过DSI发送DCS初始化命令,再启动视频流。三种接口的共性在于:先确保物理连接和电源正常,再配置时序或命令,最后通过纯色填充验证数据通路。