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

【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实现的效果是非常好的!

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

举报

2个回答
STMWoodData 回答时间:昨天 16:26

真不错

STMCU-管管 回答时间:6 小时前

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

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版