0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【沁恒-CH32V208-开发板免费试用】RTT 基于SSD1306显示的一些例子

硬核造拆物 来源:硬核造拆物 作者:硬核造拆物 2023-05-25 09:01 次阅读
title: 【沁恒-CH32V208-开发板免费试用】RTT 基于SSD1306显示的一些例子
date: 2023-05-24 19:41:52
tags: [嵌入式,rt-thread移植]

概述

沁恒-CH32V208是一款基于risc-v内核的微控制器,支持RT-thread实时操作系统。本文将介绍如何使用SSD1306显示屏和U8G2库在RT-thread上进行开发,并提供一些示例代码。通过本文的介绍,读者可以了解如何在沁恒-CH32V208上使用SSD1306显示屏和U8G2库进行图形化界面开发,以及如何绘制矩形、圆形、位图等图形元素,以及如何滚动显示内容等。这些功能可以帮助开发者快速构建出具有良好用户体验的应用程序。大家若有兴趣可以继续深入研究哈。

环境/工具

需要借助一些软件和硬件相结合,做出项目.

软件

  • Windows10 (其他平台没测试)
  • VScode
  • make (针对makefile编译)
  • risc-v 8.2.0 工具箱 (github有提供riscv-none-embed-XXX压缩包)
  • WCHISPTOOLS (沁恒自带烧录工具)
  • SERIAL DEBUG (查看调试日志)

原理

让我们来了解一下沁恒-CH32V208上使用SSD1306显示屏和U8G2库进行开发的原理。

首先,SSD1306是一款128x32像素的OLED显示屏,具有高亮度、高对比度、低功耗等特点。在沁恒-CH32V208上使用SSD1306显示屏需要通过I2C总线进行通信,并使用U8G2库进行驱动。

U8G2库是一款轻量级的图形化界面库,支持多种显示屏类型和控制器,包括SSD1306、SH1106、ST7920等。在使用U8G2库时,需要根据显示屏类型和控制器类型选择相应的初始化函数,并设置相关参数,如I2C地址、SPI模式等。

在使用U8G2库绘制图形时,可以使用U8G2库提供的API函数,如u8g2_DrawFrame()函数绘制矩形、u8g2_DrawCircle()函数绘制圆形、u8g2_DrawXBM()函数显示位图等。同时,U8G2库还支持滚动显示、反转显示、旋转显示等功能,可以根据实际需求进行设置。

通过以上原理介绍,可以了解到在沁恒-CH32V208上使用SSD1306显示屏和U8G2库进行开发的基本原理和流程。

感谢 wuhanstudio 提供 rt-u8g2 开源库

测试

基于github->01LED上复制到03SSD1306文件夹下,并新增一些内容,如下:

在同一个文件夹下新建文件,命名为rt-u8g2/rt-u8g2.mk

PACKAGE_NAME := rt-u8g2
CPPPATHS +=	-I$(APP_ROOT)/$(PACKAGE_NAME)/port
CPPPATHS +=	-I$(APP_ROOT)/$(PACKAGE_NAME)/src
CPPPATHS +=	-I$(APP_ROOT)/$(PACKAGE_NAME)
C_FILES += $(wildcard $(APP_ROOT)/$(PACKAGE_NAME)/src/*.c)
C_FILES += $(wildcard $(APP_ROOT)/$(PACKAGE_NAME)/port/*.c)
# 对应你的ssd1306型号
# C_FILES += $(APP_ROOT)/$(PACKAGE_NAME)/examples/ssd1306_12832_sw_i2c_example.c
# C_FILES += $(APP_ROOT)/$(PACKAGE_NAME)/examples/ssd1306_12864_hw_i2c_example.c
# C_FILES += $(APP_ROOT)/$(PACKAGE_NAME)/examples/ssd1306_12864_sw_i2c_example.c

在同一个文件夹下打开src.mk,并追加几行,

include rt-u8g2/rt-u8g2.mk
# include rt_ili9341/rt_ili9341.mk
# include ssd1306/ssd1306.mk

然后我选择模拟i2c,所以选择ssd1306_12832_sw_i2c_example.c

#define OLED_I2C_PIN_SCL rt_pin_get("PC.0")
#define OLED_I2C_PIN_SDA rt_pin_get("PC.1")

int main(void)
{
    rt_pin_mode(LED0, PIN_MODE_OUTPUT);
    rt_kprintf("MCU-CH32V208WBU6\\\\r\\\\n");

    u8g2_t u8g2;

    // Initialization
    u8g2_Setup_ssd1306_i2c_128x32_univision_f(&u8g2, U8G2_R0, u8x8_byte_sw_i2c, u8x8_rt_gpio_and_delay);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_I2C_CLOCK, OLED_I2C_PIN_SCL);
    u8x8_SetPin(u8g2_GetU8x8(&u8g2), U8X8_PIN_I2C_DATA, OLED_I2C_PIN_SDA);

    u8g2_InitDisplay(&u8g2);
    u8g2_SetPowerSave(&u8g2, 0);
    int i = 10;
    char *ch1 = rt_malloc(20);
    char *ch2 = rt_malloc(30);
    ch1 = "Hello, rx-ted,";

    while (i -= 1)
    {

        u8g2_ClearBuffer(&u8g2);
        u8g2_SetFont(&u8g2, u8g2_font_ncenB08_tr);
        rt_sprintf(ch2, "%s%d\\\\n", ch1, i);
        rt_kprintf(ch2);
        u8g2_DrawStr(&u8g2, 1, 10, ch2);
        u8g2_SendBuffer(&u8g2);
        rt_thread_mdelay(1000);
        // u8g2_ClearDisplay(&u8g2);
        u8g2_DrawCircle(&u8g2, 118, 20, 5, U8G2_DRAW_ALL);
        
        u8g2_SendBuffer(&u8g2);
        rt_free(ch2);

        rt_thread_mdelay(1000);
    }

ssd1306.png

代码

传送门: github->03SSD1306

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7350

    浏览量

    150258
  • 嵌入式
    +关注

    关注

    5046

    文章

    18837

    浏览量

    299084
  • 开发板
    +关注

    关注

    25

    文章

    4789

    浏览量

    96280
  • RTT
    RTT
    +关注

    关注

    0

    文章

    64

    浏览量

    16996
  • RT-Thread
    +关注

    关注

    31

    文章

    1240

    浏览量

    39491
收藏 人收藏

    评论

    相关推荐

    CH32V208 开发板免费试用RTT 纯命令行(makefile) 和 点灯测试

    CH32V208 开发板款基于risc-v内核的微控制器,具有丰富的外设资源和高性能的
    的头像 发表于 05-25 09:03 1871次阅读
    【<b class='flag-5'>沁</b><b class='flag-5'>恒</b> <b class='flag-5'>CH32V208</b> <b class='flag-5'>开发板</b><b class='flag-5'>免费</b><b class='flag-5'>试用</b>】<b class='flag-5'>RTT</b> 纯命令行(makefile) 和 点灯测试

    CH32V307 评估开发视频集锦

    升级的功能热门直播:32位无线型RISC-V单片机 CH32V208开发入门免费试用:【抢先体验】
    发表于 03-10 16:40

    【抢先体验】 CH32V208 开发板免费试用

    、心得,提供文字+视频展示。试用报告要求3篇试用报告+1个试用视频(视频需要发布在硬声APP里面)报告形式:标题格式【
    发表于 03-10 17:58

    CH32V208 开发板免费试用】开箱 + 资料整理 + 环境搭建

    ,先点灯。来的晚,所以也少踩了一些坑,看到不少人说送的WCH-Link模式不对,无法直接下载,参考下大佬的文章,用他实践过的方式进行下载。【
    发表于 04-16 20:50

    CH32V208 开发板免费试用开发环境配置及开箱测试

    CH32V208 开发板免费试用】+开箱测试硬件资源介绍
    发表于 04-17 23:30

    CH32V208 开发板免费试用】RT-Thread ssd1306驱动

    目的用RTT 驱动SSD1306方法步骤下载rtthread源码:https://gitee.com/lugl/rt-thread。这个创库我会修正一些试用的问题。在rt-thread
    发表于 04-21 08:20

    CH32V208 开发板免费试用】体验openharmonyOS

    CH32V208移植了openharmony的liteOS。今天体验了官方给的示例,展示如何体验openharmonyOS在国产芯片
    发表于 04-26 07:48

    CH32V208 开发板免费试用开发板开箱以及开发环境搭建

    感谢电子发烧友论坛提供的这次测评机会,趁着这次五一假期来学习的32位RISC-V内核处理器CH32V208的评估学习。收到的硬件有
    发表于 04-29 15:41

    CH32V208 开发板免费试用】1.建立烧录开发调试环境

    CH32V208 开发板免费试用】 1.建立烧录开发
    发表于 05-04 07:54

    CH32V208 开发板免费试用RTT 纯命令行(makefile) 和 点灯测试

    title: 【 CH32V208 开发板免费试用RT
    发表于 05-24 19:33

    -CH32V208-开发板免费试用RTT 基于SSD1306显示一些例子

    title: 【-CH32V208-开发板免费试用RT
    发表于 05-24 20:13

    CH32V208 开发板免费试用RTT 模拟Arduino库开发项目

    操作系统。本文将介绍如何使用RTT模拟Arduino库在 CH32V208开发板上进行开发
    发表于 05-24 20:31

    CH32V208开发板试用】1-构建RTT-Stdio开发环境

    CH32V208开发板试用】1-创建RTT-Stdio
    发表于 05-28 15:41

    CH32V208开发板试用】2-ARDUINO

    CH32V208开发板试用】2-ARDUINO 天问Block站式的
    发表于 05-28 15:46

    CH32V208 开发板免费试用 CH32V208 开发板的编译和下载

    的 USB 是同个信号。 按上面的方法就可以把自己写的代码烧录至 CH32V208 开发板,也可以测试和运行
    发表于 06-09 23:13