【RT-Thread Titan Board 开发板】RGB LCD屏测试

目录

引言

LCD屏硬件接口

硬件连接

软件测试

[I2C 设备扫描工具的使用](#I2C 设备扫描工具的使用)

LVGL示例

[1. 自动初始化入口](#1. 自动初始化入口)

[2. LVGL 线程初始化](#2. LVGL 线程初始化)

[3. LVGL 线程入口函数](#3. LVGL 线程入口函数)

[4. 测试程序入口](#4. 测试程序入口)

测试结果

结束语


引言

厂商提供的RT-Thread Titan Board 开发板套件不包括屏幕,而我计划的项目必须有一个屏幕才行,从某宝买了一个4.3寸RGB LCD触摸屏,这两天到货了,来测试一下。本文将分享项目测试过程中的经验。

LCD屏硬件接口

开发板的LCD屏接口如下:

这实际上是正点原子定义的LCD屏幕的管脚定义:

某宝上有大量和正点原子兼容的屏幕,价格一般只有正版的一半。我买的这款是三个接口兼容的,还包括韦东山和野火的接口。

硬件连接

下面是显示屏背面的连线:

下面是开发板背面的连线方式:

这款开发板的LCD连线有点特殊,刚开始我以为金手指在里面,而塑料面在外面,结果开发板不能点亮显示器,显示大量错误:

复制代码
[E/drv.hwi2c] POWER_CTL reg I2C write failed
[I/touch] rt_touch init success 
[I/gt9147] touch device gt9147 init success 

[E/drv.hwi2c] POWER_CTL reg I2C write failed 
id = GT-48-640 
[E/drv.hwi2c] POWER_CTL reg I2C write failed 
[E/drv.hwi2c] POWER_CTL reg I2C write failed 
[E/drv.hwi2c] POWER_CTL reg I2C write failed 
range_x = 1254749290 
range_y = -1989128864 
point_num = 88 

把线调整过来之后,屏幕就可以正常点亮了。

软件测试

厂商提供了两个和RGB LCD有关的例子,我使用的是Titan_display_rgb_lvgl。

该项目是一个基于 Renesas RA8D1 微控制器的 RGB LCD 显示方案,使用以下技术栈:

  • 操作系统:RT-Thread
  • 图形库:LVGL
  • 触摸芯片:GT9147
  • 显示接口:RGB LCD
  • 通信总线:I2C(用于触摸屏)

I2C 设备扫描工具的使用

在调试 I2C 设备时,首先需要确认设备是否正确连接到总线上。RT-Thread 提供了一个实用的 i2c_scan 命令。 i2c_scan 命令实现 在 hal_entry.c 中实现了 I2C 扫描功能。在 FinSH 控制台中输入:

bash 复制代码
i2c_scan i2c0

正常情况下,如果 GT9147 触摸屏已连接,应该能看到:

bash 复制代码
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- 5d -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

其中 5d 就是 GT9147 触摸芯片的 I2C 地址。

LVGL示例

LVGL 测试程序会在系统启动时自动运行,其启动流程如下:

1. 自动初始化入口

cpp 复制代码
// lv_rt_thread_port.c
INIT_ENV_EXPORT(lvgl_thread_init);

INIT_ENV_EXPORT 宏会在 RT-Thread 系统初始化时自动调用 lvgl_thread_init 函数。

2. LVGL 线程初始化

cpp 复制代码
static int lvgl_thread_init(void)
{
    rt_err_t err;

    err = rt_thread_init(&lvgl_thread, "LVGL", lvgl_thread_entry, RT_NULL,
           &lvgl_thread_stack[0], sizeof(lvgl_thread_stack), 
           PKG_LVGL_THREAD_PRIO, 10);
    if(err != RT_EOK)
    {
        LOG_E("Failed to create LVGL thread");
        return -1;
    }
    rt_thread_startup(&lvgl_thread);

    return 0;
}

3. LVGL 线程入口函数

cpp 复制代码
static void lvgl_thread_entry(void *parameter)
{
    lv_init();                           // 初始化 LVGL 库
    lv_tick_set_cb(&rt_tick_get_millisecond);
    lv_port_disp_init();                  // 初始化显示设备
    lv_port_indev_init();                 // 初始化输入设备(触摸屏)
    lv_user_gui_init();                   // 运行用户 GUI 程序(测试程序)

    /* handle the tasks of LVGL */
    while(1)
    {
        lv_timer_handler();
        rt_thread_mdelay(PKG_LVGL_DISP_REFR_PERIOD);
    }
}

4. 测试程序入口

cpp 复制代码
void lv_user_gui_init(void)
{
    /* display demo; you may replace with your LVGL application at here */
#if LV_USE_DEMO_MUSIC
    lv_demos_create("music");
#elif LV_USE_DEMO_BENCHMARK
    lv_demos_create("benchmark");
#elif LV_USE_DEMO_WIDGETS
    lv_demos_create("widgets");
#elif LV_USE_DEMO_STRESS
    lv_demos_create("stress");
#elif LV_USE_DEMO_RENDER
    lv_demo_render(LV_DEMO_RENDER_SCENE_IMAGE_NORMAL, 128);
#else
#error "Please enable one lvgl demo in the env"
#endif
    lv_demos_show_help();
}

测试结果

下图就是测试程序最后的跑分结果。

结束语

本文详细介绍了 RT-Thread LVGL RGB LCD 项目的测试和调试过程,包括: 设备扫描工具的使用、触摸屏 I2C 通信问题诊断和LVGL程序的自动启动机制。通过本文的介绍,希望能帮助开发者快速定位和解决类似的问题,提高开发效率。

相关推荐
Dev_XH1 小时前
【成品设计】基于单片机的工厂设备能耗监控与优化系统
stm32·单片机·嵌入式硬件·物联网
不脱发的程序猿2 小时前
STM32制作单手鼠标键盘
stm32·嵌入式硬件·计算机外设·usb·qmk
路上有只喵18 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇 11
单片机·嵌入式硬件
不昀18 小时前
开关电源电流互感器怎么选:匝比、采样电阻与复位的计算笔记
单片机·嵌入式硬件·电子元器件
小李不想当小白21 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
youcans_1 天前
【嵌入式软件AI编程】(3)面向 AI 协同开发的 STM32 硬件信息标准化
人工智能·stm32·嵌入式硬件·ai编程
智者知已应修善业1 天前
【51单片机实现从下到上,从上到下,从中间到两边,两边到中间】2024-10-23
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
辰哥单片机设计1 天前
STM32智能药盒丨2027单片机新项目
stm32·单片机·嵌入式硬件
LCG米2 天前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件