模板: RP2350-Touch-LCD-2.8-Demo

来自Waveshare Wiki
跳转至: 导航搜索

C环境

目录结构

├── CMakeLists.txt
├── example_auto_set_url.cmake
├── examples # 示例程序
│   ├── CMakeLists.txt
│   ├── amoled # 测试AMOLED的示例
│   │   ├── CMakeLists.txt
│   │   ├── amoled_flush_rgb 
│   │   └── amoled_touch 
│   ├── battery_read # 串口打印电池电压的示例
│   ├── hello_world # 打印 hello world 的示例
│   │   ├── CMakeLists.txt
│   │   ├── serial
│   │   └── usb
│   ├── lvgl # 一些使用LVGL的示例
│   │   ├── CMakeLists.txt
│   │   ├── factory # 出厂自带的程序
│   │   ├── lv_port # LVGL对接硬件的源文件
│   │   ├── lvgl_battery # 使用LVGL显示电池电压数值的示例
│   │   ├── lvgl_brightness # 使用LVGL控制屏幕亮度的示例
│   │   ├── lvgl_example # 运行LVGL自带Demo的示例
│   │   ├── lvgl_image # 使用LVGL显示图片的示例
│   │   ├── lvgl_pcf85063 # 使用LVGL显示时间和日期的示例
│   │   └── lvgl_qmi8658 # 使用LVGL显示IMU数据的示例
│   ├── qmi8658_raw_out # 使用串口打印IMU数据的示例
│   ├── rtc_pcf85063 # 使用串口打印时间、日期的示例
│   └── sd_card_spi # 测试SD Card读写的示例
├── libraries # 库文件
│   ├── CMakeLists.txt
│   ├── bsp # 硬件相关的库
│   ├── lvgl # LVGL库
│   └── no-OS-FatFS-SD-SDIO-SPI-RPi-Pico # SD Card 相关的库
├── pico_extras_import_optional.cmake
└── pico_sdk_import.cmake

编译

如果使用的是VSCode 的 Raspberry Pi Pico插件

  • 导入工程, 选择工程目录

RP2350-Touch-LCD-2.8-Demo-1.png

  • 点击Comple编译进行编译

RP2350-Touch-LCD-2.8-Demo-2.png

如果使用的是Ubuntu

cd RP2350-Touch-LCD-2.8-Demo/C
mkdir build
cd build
cmake ..
make -j8

编译的固件

  • 编译完完成后会生成 .uf2 文件,在目录 build/examples

烧录固件

  • 按住板子的BOOT按键,通过 Type-C 线将板子接到电脑的 USB 接口,然后松开按键,电脑会将识别为一个可移动盘,最后将编译生成的 .uf2 格式的文件复制到可移动盘即可。

新建工程

  • 下面我们以新建名为 lvgl_test 的工程为例。
  • 在 examples/lvgl 目录下新建一个文件夹 lvgl_test ,在这个文件夹上新建 CMakeLists.txt 和 main.c 文件。
  • CMakeLists.txt 文件的内容为
add_executable(lvgl_test
    main.c
    ../lv_port/lv_port.c
    )

pico_enable_stdio_usb(lvgl_test 1)
pico_enable_stdio_uart(lvgl_test 0)

# pull in common dependencies
target_link_libraries(lvgl_test 
    pico_stdlib
    bsp
    lvgl
    lvgl::demos)

# create map/bin/hex/uf2 file etc.
pico_add_extra_outputs(lvgl_test)
  • main.c 文件的内容为
#include <stdio.h>
#include "pico/stdlib.h"
#include "bsp_i2c.h"
#include "../lv_port/lv_port.h"
#include "demos/lv_demos.h"
#include "hardware/clocks.h"
#include "bsp_battery.h"
#include "bsp_lcd_brightness.h"

int main()
{
    stdio_init_all();
    bsp_battery_init(100);

    bsp_i2c_init();
    lv_port_init();
    bsp_lcd_brightness_init();
    bsp_lcd_brightness_set(50);

    // lv_demo_music();
    lv_demo_widgets();
    while (true)
    {
        lv_timer_handler();
        sleep_ms(1);
    }
}
  • 在 examples/lvgl 目录下的 CMakeLists.txt 最后加上。
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lvgl_test)
  • 重新编译,build/examples/lvgl 会新增一个文件夹 lvgl_test,里面有编译生成的 .uf2 格式的文件。

MicroPython环境

目录结构

├── examples
│   ├── imu_test.py # 打印imu数据的示例
│   ├── lcd_test.py # 测试lcd的示例
│   ├── lcd_text.py # lcd显示文字的示例
│   ├── lcd_touch.py # 同时测试lcd和touch的示例
│   ├── lvgl_example.py # lvgl示例
│   ├── lvgl_image.py # lvgl显示图片示例
│   ├── rtc_test.py # 打印时间和日期的示例
│   └── touch_test.py # 测试touch的示例,打印坐标
├── firmware
│   └── RP2350-Touch-LCD-2.8.uf2 # MicroPython的固件,若想用LVGL必须用这个固件
└── libraries
    ├── imu.py # IMU相关的驱动
    ├── lcd_2inch8.py # 2.8寸屏幕相关的驱动,包括显示和触摸
    ├── lv_port.py # lvgl相关
    ├── lv_utils.py # lvgl相关
    └── rtc.py # RTC相关的驱动

烧录固件

  • 按住板子的BOOT按键,通过 Type-C 线将板子接到电脑的 USB 接口,然后松开按键,电脑会将识别为一个可移动盘,最后将 firmware/RP2350-Touch-LCD-2.8.uf2 文件复制到可移动盘即可。

上传libraries

  • 打开 Thonny ,点击 Stop/Restart backend ,下面的shell出现下图的信息则说明板子连接成功。

RP2350-Touch-LCD-2.8-Demo-3.png

  • 选择 libraries ,鼠标右键-->Upload to / ,等待上传完成

RP2350-Touch-LCD-2.8-Demo-4.png

运行

  • 打开 examples 里面任意一个 .py 点击 Run current script, 程序就开始运行了

RP2350-Touch-LCD-2.8-Demo-5.png