你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32C0评测】移植touchGFX

[复制链接]
lugl 发布时间:2025-4-23 15:26

【前言】

官网中讲到了这个MCU是支持TouchGFX图形界面开发的。但是他只有30K的内存,因此对于彩色TFT来是说是比较紧张的,我考虑了一下128160的分辨率的屏需要占用128 160 2 就需要40K的内存,因此先用OLED来移植,因此oled只需要占用1K的显存就行了。

【移植前提】

1、需要下载好touchGFX desiger。

2、stm32cubeMX需要下载好coube-touchgfx插件。

【移植步骤】

1、开发原理图的i2c1为CN5的D15、D14为PB9、PB8。因此打开stm32cubeMX配置好OLED使用的IIC,使用400KHz模式:

image.png

2、生成工程后,移植开源的ssd1306的驱动,下载网址为:afiskon/stm32-ssd1306: STM32 library for working with OLEDs based on SSD1306, SH1106, SH1107 and SSD1309, supports I2C and SPI

3、下载后,把源码复制到工程的Drivers\BSP目录下面,并把源码添加到工程中,把ssd1306_conf_template.h重命名为ssd1306_conf.h。同时把stm32C0的宏打开。

image.png

3、添加好工程后如下面所示:

image.png

4、在main.c中添加ssd1306与ssd1306_test的头文件。添加测试代码:

image.png

5、下载程序后,OLED屏应该显示正确的LOGO

bc659a7368e468d57047316170cb9e3.jpg

到此OLED屏的驱动完成,接下来移植TouchGFX

6、在stm32cubeMX中打开CRC,并打开TIM17,为TouchGFX提供心跳包。

image.png

配置这样后,为20Hz产生屏幕刷新一次。

7、接下来打touchgfx,配置为单色屏幕,像素为128*64

image.png

这样就可以生成工程了。

8、在生成工程后,在TouchGFX目录下打开工程

image.png9、在工程中,添加一个文本跟一个图像:

image.png

然后生成工程,在mdk中打开工程,按下面的步骤添加代码。

10、在TouchGFXHAL.cpp中添加代码如下,意在引用C的头文件,即SSD1306的驱动文件,同时引用OSwrappers.hpp

#ifdef __cplusplus
    extern "C"{
#include "ssd1306.h"
            }
#endif
#include <touchgfx/hal/OSWrappers.hpp>

image.png

11、在刷新函数中添加自定的代码:

      const unsigned char* bitmap = (const unsigned char*) getClientFrameBuffer();
    ssd1306_DrawBitmap(0, 0, bitmap, 128, 64, White); 
    ssd1306_UpdateScreen();

image.png

12、在最低部添加同步刷新函数,以C接口注明可以在定时器中断中调用:

extern "C"
void touchgfxSignalVSync(void)
{
    /* VSync has occurred, increment TouchGFX engine vsync counter */
    touchgfx::HAL::getInstance()->vSync();
    /* VSync has occurred, signal TouchGFX engine */
    touchgfx::OSWrappers::signalVSync();
}

13、编写定时器中断,添加周期调用:

extern void touchgfxSignalVSync(void);
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM17) 
    {
        touchgfxSignalVSync();
    }
}

14、在main.c中注释掉ssd测试的函数,同时添加启动定时器的代码:

image.png

下载后就可以看到实际的效果了:

image.png

【总结】

在这么小资源的芯片上实现touchGFX,方便图形界面开发,用户自己需要实现的代码量也比较少,使用起来还是比较方便的。如果有大尽尺寸的单色屏幕,UI实现的效果是非常好的!

收藏 评论3 发布时间:2025-4-23 15:26

举报

3个回答
STMWoodData 回答时间:2025-4-23 16:26:44

真不错

STMCU-管管 回答时间:2025-4-24 15:58:52

不错,可以试试3.5寸的那个屏幕

lugl 回答时间:2025-4-25 10:03:50

STMCU-管管 发表于 2025-4-24 15:58
不错,可以试试3.5寸的那个屏幕

那要考虑如何重新组装数据,尽量吧。还要把3.5的跳线成为SPI。

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版