在 RT-Thread 上使用单色屏 UI 库 - U8G2
U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306等多种类型的OLED驱动。
U8g2的官方开源地址为:https://github.com/olikraus/u8g2
由于官方已经对 RT-Thread 做了一定的适配,并且存在于 RT-Thread 的软件包生态中,所以在 RT-Thread 平台上使用这个 UI 库会变得非常简单,接下来我们就来详细演示一下。
演示所用到的资源如下:
-
ART - PI
-
128 * 64 OLED (SSD1306驱动)
-
RT-Thread Studio V2.2.6
虽然我用到的硬件为 ART-PI,但由于RT-Thread 本身是支持多种芯片和开发板的,所以如果使用的是其他硬件平台,其配置与使用方法也都是一样的。
同时由于 u8g2 本身也支持了多种单色屏驱动芯片(如SSD1306,SH1107,ST7511等)与通信方式(IIC、SPI等),因此即使你手中的屏幕不是 SSD1306 驱动的,通过参考样例中的代码进行少量修改甚至无须修改也能够运行起来。
接下来我们开始创建工程。打开 RT-Thread Studio,新建一个 RT-Thread 项目,选择基于开发板,在开发板列表中选择 STM32H750-RT-ART-Pi,工程的详细参数如下图所示:
如果你的开发板列表中没有STM32H750-RT-ART-Pi,则需要在 SDK-Manager 中下载这个SDK,具体步骤如下:
1. 点击上方工具栏中的 SDK Manager 按钮:
2. 在弹出的 SDK 管理器界面中打开 Board_Support_Packages,并找到 STMicroelectronics 一栏:
3. 在该栏目中找到 STM32H750-RT-ART-Pi 并选择最新版本进行安装:
基础工程创建好后,我们点击项目资源管理器的 RT-Thread Settings 按钮打开软件包管理界面,并点击 添加软件包 按钮。
在弹出的软件包选择界面的搜索栏中输入 u8g2 进行搜索,并选择搜索结果中的 u8g2-official 进行添加,该版本是 u8g2 官方版本,也是最新版本。
添加完成后我们关闭选择界面,来到软件包管理界面的主界面,此时可以看到列表中已经出现了 u8g2 的软件包卡片,此时我们将鼠标移到 u8g2 卡片上,点击 配置项 进行配置。
由于我使用的 OLED 是 SSD1306 与 I2C 驱动的(软件模拟I2C),而官方正好有对应的例程,因此在配置项中,仅需打开 U8G2 Examples -> SSD1306(I2C的版本):
点击上方工具栏的保存按钮或使用 Ctrl+S 进行配置保存,此时 RT-Thread Studio 会自动下载软件包并完成配置。
工程配置好后我们还需要修改I2C接口对应的引脚。打开 packages > u8g2-official-latest > sys > rt-thread > examples 下的例程源文件:
找到开头的两个I2C引脚定义,由于我是接到了 H2 和 H3 两个 GPIO上,因此我的配置修改为:
修改完成后点击编译:
编译通过,此时就可以下载我们的例程到板子里了。不过这里需要注意,当前步骤在 RT-Thread Studio 下是可以编译成功的,但是如果你是 MDK,则在此时是会编译出错的,具体什么原因这里留个悬念,下次出 MDK 环境的使用案例时会讲到并解决这个编译问题。
下载完成后我们的屏幕上暂时还没有显示,这是因为例程中是通过一个命令行的指令来启动 U8G2 显示的:
可以看到这里注册了 u8g2_ssd1306_12864_sw_i2c_example 这个命令。
此时需要我们打开终端,连接到 ART-PI 的命令行,输入 u8g2 再按下 TAB 键,系统会自动补全指令:
按下回车后即可看到屏幕被点亮:
此时我们的 U8G2 就能够正常工作了。接下来就靠大家发挥各自的想象力,去创造属于自己的有趣界面吧!