
【引言】 首先,感谢ST中文论坛【GUI】活动选中本人申请!这是本人第二次上手 Discovery 系列板卡(之前用过公司的STM32L4R9I-DISCO,在U5x9系列没有上市之前,是ST最合适做表的MCU)。STM32L562E-DK这块板子,去官方电商平台搜索,好家伙,居然卖720元(不含税)!本着拿人手短的原则,尽可能详细阐述整套开发过程,杜绝水贴!(规定的分享时间对上班党有些紧张,今天卡点发首帖) 看到大家的Demo分享都是基于TouchGFX或者LVGL 的。为避免雷同,切实回馈ST中文论坛,本设计将基于最新版本STemWin 6.46 开发。 【图形相关外设】 由STM32L562xx参考手册(RM0438 )可知,与图形界面开发相关的外设如下: FMC:驱动间接接口LCD,支持8080,6800 OCTOSPI: 访问外部Flash ICACHE: 提高从内部和外部存储器获取指令和数据时的性能 IIC: 读取触摸芯片,AFE等传感IC数据 其他外设 【主要硬件】 (1)TFT-LCD触摸总成位于STM32L562E-DK 原理图(MB1373 )第7页。由图可知,Display IC采用了SITRONIX/台湾矽创 公司的ST7789,8080-16bit接法,挂载在FMC的A0地址上 (2)揭开绝缘胶带,Touch IC采用了FocalTech/敦泰 公司的FT3267 (3)外部 FLASH为MXIC/旺宏电子公司的MX25LM51245GXDI0,位于原理图第8页。采用8位接口连接 【BSP包】 位于STM32Cube_FW_L5_V1.5.1\Projects\STM32L562E-DK\Examples\BSP中,包括各类芯片的驱动、中间件等。烧录该工程后如下图所示,便于开发者快速了解MCU开发板各项功能。IC驱动级中间件位于STM32Cube_FW_L5_V1.5.1\Drivers\BSP\Components 中。 【创建工程】 (1)在CubeMX中基于STM32L562E-DK,按照默认模式直接创建项目,并取消TrustZone的使用。 (2)开启CRC和FreeRTOS,仅勾选必要外设导出,外设参数可以参照BSP包配置。 (3)导出MDK工程,基于Keil开发 【软件开发】 由于固件包提供的BSP风格个人不是很习惯,重新开发驱动层。QSPI Flash除外,如下图所示。 🚀️ flexible_button 一个开源库,使用如下按键事件作为人机交互输入 🚀️ ST7789 这个芯片很经典,驱动和手册很常见,核心接口如下图所示。 🚀️ FT3267 主要关注以下寄存器,其他功能本节暂不讨论 😄 上述报点寄存器为连续空间(6Byte),建议采用联合体解析,如下图所示 👀️ 注意: 实际测试时Touch和Display的初始坐标原点不匹配。当板子横着并正向面对我们时,Display的原点位于左上方,Touch的原点位于左下方。需要对正确读取的触点坐标做旋转处理,以保证与Display一致。 此外,开发中遇到1个问题,手势寄存器0x01返回值始终为0x0 目前认为是IC固件版本问题,固件要么是单点+手势,要么是双报点。当前是双报点 如有知晓如何获取手势,欢迎评论留言 🚀️ QSPI-Flash内存映射 包里提供了板载QSPI-Flash的下载算法,非常方便。后续可以用于存储图片和字库文件,分散加载之类的。 🚀️FreesRTOS 个人不太习惯CubeMX导出的 cmsis_os API。重新拟定FreeRTOS的主函数,简易的任务划分如下图。其中,触摸和模拟前端使用最高优先级3;按键扫描使用软件定时器,优先级为2;GUI任务使用最低优先级1。 🚀️目前用到三个EXTI: (1)板载按键中断 (2)LCD_TE:限制ST7789刷新率,避免撕裂 (3)CTP_INT:用于触发报点读取 至此,健康手环基础界面开发(一)—— 准备工作,全部介绍完毕! 下一期,分享GUI移植相关内容。 |
STM32L562E-DK 驱动FMC接口的LCD屏
STM32L562E-DK移植lua脚本语言
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
STM32F103移植LittlevGUI代码
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
STM32F3DISCOVERY + UCGUI3.90A的移植(源码+视频)
STM32MP135F-DK开发板评测-Linux系统下基于gtk的计算器应用
STM32MP135F-DK开发板评测-Linux系统下的GTK计算器