STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础 您所在的位置:网站首页 智能手表怎么重装系统 STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础

STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础

2024-07-17 09:54| 来源: 网络整理| 查看: 265

STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础​​​​​​​

一、项目介绍

1.1方案提供

1.2主控选择

1.3硬件平台

1.4 开发环境

1.5 关于华清

二、GUI界面基础

2.1.1 嵌入式绘图系统

2.1.2 色彩格式

2.1.3帧缓冲区

2.1.4图形引擎

2.1.5主循环

2.1.6操作系统

2.1.7内存使用

2.1.8硬件选择

2.1.9软件架构

一、项目介绍

  微控制器广泛应用于各种领域,如汽车电子、工业自动化、家电、智能家居、医疗电子、物联网、消费电子、航天航空、能源管理等。随着物联网、边缘AI以及RISC-V的发展与应用,嵌入式人才的培养极其重要,微控制器的裸机开发是嵌入式系统开发的基础,掌握微控制器的原理、外设以及项目开发,对于以后嵌入式系统层编程、设计与维护打下良好的基础。。

  嵌入式人才培养目标不同于高校等一般普适性人才的目标,它具备满足业界特殊要求的专业性技术人才,对象更为广泛,不仅可以是高校毕业生,也可以是社会在职人员。其目标是通过人才培养,缩小企业的需求与教学书本理论之间存在的鸿沟,快速为社会提供经验相对丰富的技术性人才。

  嵌入式技术专业人才认证平台是联合中国电子学会开展的嵌入式技术专业人才培训项目,旨在培养具备满足业界需求的专业型技术人才,包括但不限于芯片级嵌入式应用、物联网软件编程设计及联网连云的应用开发能力。培养对象广泛,包括电子信息大类相关专业的本科或者大专在校、毕业生,及在嵌入式相关领域从业人员。嵌入式系统设计工程师中级认证—嵌入式裸机编程,基于STM32U575微控制器进行外设的学习与智能可穿戴设备-智能手表项目的裸机开发。

​图 1-1 认证体系及流程

  智能可穿戴设备是指人体可直接穿戴的,在运动传感技术、生物传感技术、无线通信技术、低功耗、嵌入式系统软件支持下实现用户交互、人体健康监测、生活娱乐等功能的智能设备。智能可穿戴设备的功能覆盖人体健康管理、运动检测、休闲娱乐等诸多领域。

  智能可穿戴设备行业根据应用领域分为商业消费级和专业医疗级设备。商业消费级设备按照产品形态又可分为手环、手表、眼镜、服饰等,其多用于日常健康生活的监测使用中,如监测运动量、心率、呼吸等,最典型的代表产品是智能手环,如华为/小米运动手环,用户群体以健身爱好者为主。专业医疗级智能可穿戴设备有如智能云血压仪、心率血氧探测仪、智鼾垫等包括监测和治疗慢性病类型的医疗设备,多供以医疗机构使用。

  根据IDC数据,2017年-2022年全球可穿戴出货量由1.35亿台增长至4.92亿台,复合增长率达29.52%,呈现爆发式增长态势。

图 1-2 可穿戴设备全球出货量(亿台)

  从国内企业来看,已有众多科技公司在智能穿戴领域火热地竞争,都推出了相应的产品。目前出货量较大的智能穿戴生产商有华为、小米等厂家。华为已推出多种智能可穿戴设备,包括智能手环、智能手表等,给用户带来全天候的运动健康检测。华为智能穿戴设备出货量不仅国内第一,全球累计发货量也位居前列,其现有智能穿戴产品已多达10余种,不同种类的智能穿戴设备分别面向于青春活泼的年轻人以及成熟稳重的商务人士。

图 1-3 基于STM32L4+平台与TouchGFX软件的华为手表

1.1方案提供

  STMicroelectronics(ST)是一家全球领先的半导体公司,提供广泛的智能穿戴产品解决方案,包括传感器、处理器、无线通信芯片等。下面从传感器、处理器、无线通信以及强大的生态系统几个方面介绍ST在智能穿戴产品开发领域的产品使用情况:

1. 传感器应用:ST的传感器产品应用十分广泛,例如加速度计、陀螺仪、磁力计、压力传感器等,这些传感器可以用于测量用户的运动状态、睡眠状态、环境温度等信息。ST的传感器还具有高精度、低功耗、小尺寸等特点,适合用于智能穿戴设备中。

2. 处理器应用:ST的处理器应用包括MCU和MPU芯片,这些芯片可以用于控制智能穿戴设备的各种功能,例如运动追踪、心率监测、通信等。ST的处理器还具有低功耗、高性能、小尺寸等特点,适合用于智能穿戴设备中。

3. 无线通信应用:ST的无线通信应用包括ZigBee、BLE、WiFi、UWB、NB-IOT等通信芯片,这些芯片可以用于智能穿戴设备的通信功能,例如接收电话、短信等信息,或者进行支付等操作。ST的无线通信芯片低功耗性能优秀,因此适合用于智能穿戴设备中。

4. 强大的生态系统:经过多年的市场深耕与强大的生态软件支持,ST的产品在国内被众多开发者认可与使用,软件工具方面有: STM32CubeMX、 STM32CubeIDE、STM32CubeProgrammer、 STM32CubeMontor等。嵌入式软件包方面STM32CubeMCU Packages 和 扩展软件包CubeExpansions等是开发者的利器(硬件抽象层(HAL)通过标准化API调用实现不同STM32器件之间的可移植性;低层 (LL) API,一组轻量级、优化的、面向专家的 API,旨在提高性能和运行时效率;中间件组件的集合,包括实时操作系统、USB库、文件系统、TCP/IP堆栈、触摸感应库或图形库(取决于STM32系列);射频堆栈用于STM32无线系列,如 Bluetooth LE  5.2、OpenThread、Zigbee 3.0、LoRaWAN和Sigfox)。

  消费市场领域,有大量的厂家采用ST公司的芯片与工具,进行智能手表、智能手环等产品的开发。例如,小米公司的智能穿戴设备使用了ST的传感器、处理器等产品,这些产品可以用于健康监测、运动追踪等功能,具有高性能、低功耗等特点,从而设计出更加智能化与高性价比的产品。

  ST公司的众多高性能产品,构建出了智能穿戴设备的生态链,在这样一个完善的生态系统加持下,开发者可以方便地获得全面的硬件和软件支持,例如传感器、处理器、中间件、开发工具等,从而能够满足智能穿戴设备的应用场景和市场,满足用户的不同需求,提高用户的体验和满意度。

1.2主控选择

  ST公司的MCU产品线非常丰富,涵盖了多个不同的系列和型号,可以满足各种不同应用场景的需求。其中,STM32系列是ST的重要产品线之一,其具有丰富的型号,如F1系列、F2系列、G0系列等等,适用于各种市场和应用场景。STM32系列采用ARM Cortex-M内核,具有高性能、低功耗、高集成度等特点,可支持多种接口和协议,包括USB、CAN、Ethernet、LCD等。同时,STM32系列还支持多种开发环境和工具,例如Keil、IAR、STM32CubeIDE等,方便开发者进行开发和调试。

  此外,STM8系列是ST的另一个MCU产品线,其采用8位内核,具有低成本、低功耗、高可靠性等特点。STM8系列支持多种接口和协议,例如SPI、UART、I2C等,同时还具有多种模拟和数字功能,例如ADC、PWM、计时器等。

  在本教程中我们以开发智能手表为最终目的,综合多方面因素考虑,最终选用STM32U5系列高性能MCU芯片。该系列芯片由ST公司于2021年7月推出,STM32U5系列提供基于ARM  Cortex-M33的先进节能型微控制器,以满足满足智能应用最严苛的功率/性能要求,这些应用包括可穿戴设备、HMI、个人医疗器械、家居自动化和工业传感器。以下特性是我们采用这款芯片作为智能手表开发的原因:

1. 智能手表一般被用户期望待机时间尽可能地长,即低功耗性能一定要出色。STM32U5系列单片机采用了ARM Cortex-M33内核,运行主频可达160MHz,具有高性能、低功耗特点。能够满足电池类应用的要求。

2. 智能手表需要较大地存储空间来存储图片数据,STM32U575RIT6内置2MB的Flash存储器和786KB的SRAM,同时在我们的开发板上还搭载了16MB的Flash存储器,来满足我们对存储空间的需求。满足智能手表的UI界面需求。

3. STM32U5系列支持多种连接性协议和接口,例如USB、CAN、UART、SPI、I2C、Ethernet等,可以方便地与外部设备进行通信和交互,从而实现使用多个传感器对人体情况的监测。

4. STM32U5系列在嵌入式系统设计中实现了新的功能,性能优于同类产品:

1.3硬件平台

  STM32U5核心板采用STM32U575RIT6微控制器,基于32位Cortex-M33内核,运行频率可达160MHz,内部Flash容量为2MB,RAM容量786KB。核心板采用最小系统设计,板载16MB的Flash存储器,用于存储大容量数据,例如图片(分辨率240*320的16位彩色图片大小240*320*16=150KB)、升级的固件等等。供电端口采用USB TypeC接口,板载USB转UART芯片,用于ISP功能或串口调试。核心板提供复位、BOOT与用户按键,提供2.8寸电容触摸屏接口。核心板提供电源指示灯与运行指示灯(用户编程控制)。

图 1-4 STM32U5核心板资源

  STM32开发板底板,支持5V电源适配器与TypeC供电。提供RTC时钟电源,提供三轴加速度与角速度传感器,用于姿态感知。板载ESP-12F无线模组,用于物联网云平台项目开发。提供1路五向按键,采用中断与A/D模式采样。提供1路有源蜂鸣器,1路2*17P扩展接口,用于资源扩展板的接入。核心板接口通过2.54mm间距的插针引出,方便用户外接其它设备。

图 1-5 STM32开发板底板

  电容触摸显示屏在很多智能设备上得到应用,提升了设备的交互感。在开发板套件中使用方型显示屏用来模拟圆形的一个手表项目。显示屏尺寸为2.8寸,分辨率320*240(RGB)。驱动IC采用ILI9341,自带172,800字节的 GRAM存储。电容触摸屏采用I2C接口,驱动IC采用FT6336G。

图 1-6 2.8寸显示屏

  提供基于I2C总线的温湿度传感器、环境光感知、心率/脉搏测量。基于模数转换接口的电压/电流采集。基于EXTI事件/中断控制类型的人体红外、光电开关、火焰感知传感器。基于SPI总线的数码管驱动电路。基于PWM控制的风扇、蜂鸣器、震动马达。基于GPIO的按键、LED指示灯。基于异步串行通信的485总线电平转换。基于控制器局域网总线的CAN电平转换等外设。资源扩展板主要用于微控制器入门外设的使用,硬件图纸原理以及项目案例的应用开发学习。

图 1-7 资源扩展板

  仿真器在单片机程序开发过程中起着重要的作用。通过仿真器,使开发者能够在计算机上运行和调试单片机程序,开发者可以逐步执行程序并观察变量的值、寄存器的状态以及程序的执行流程,从而快速发现和解决程序中的错误。推荐采用的仿真器:FS-DAP-Link或者ST-LINK V3.0,用于程序烧写和仿真调试。

图 1-8 华清远见DAP-Link仿真器

  基于TouchGFX的智能手表项目,硬件包含STM32U5核心板、底板、2.8寸显示屏、资源扩展板以及仿真器,进行智能手表的设计。手表主要功能包括健康监测、运动模式、环境检测、电池电量检测、RTC时钟、状态提醒、模式切换(运行/待机,LPBAM功能演示)和网络连接等功能。

1.4 开发环境

  单片机的开发工具有很多,常见MDK-ARM、IAR Embedded Workbench、STM32CubeIDE等,对于开发化境而言没有最好,适合自己项目需求就可以了,本项目中采用STM32CubeMX + Keil uVision5方式进行开发, 捎带使用Visual Studio Code进行代码的编辑,VS Code的界面风格、代码关联、代码提示以及丰富的插件在代码编辑时非常方便,可在官网下载最新版本。

图 1-9 开发环境与UI设计工具

  STM32Cube生态系统是是意法半导体(STMicroelectronics,简称ST)针对STM32微控制器和微处理器免费推出的完整软件解决方案。既适用于为STM32寻找完整且免费开发环境的用户,也适用于已经拥有IDE的用户(包括Keil或IAR),他们可以在其中轻松集成各种组件,如STM32CubeMX,STM32CubeProgrammer 以及STM32CubeMonitor。

  STM32CubeMX软件包括图形界面配置器及初始化C代码生成器和各种类型的嵌入式软件,配置初始化工具能够一步一步地引导用户完成微控制器配置。嵌入式软件包括一个新的硬件抽象层(HAL,Hardware Abstraction Layer),用于简化代码在STM32产品之间的移植过程。通过在一个软件包内整合在STM32微控制器上开发应用所需的全部通用软件,方便用户快捷高效的获取最新版本的软件。

图 1-10 TouchGFX的工具与框架

  TouchGFX是一款针对STM32微控制器进行了优化的免费高级图形软件框架。借助STM32图形功能和架构,TouchGFX可通过创建类似于智能手机的图形用户界面,来加快HMI-of-things技术革新。

 TouchGFX框架包含易于使用的拖放式图形构建PC工具TouchGFX Designer (TouchGFX Designer)以及强大的优化图形处理内核TouchGFX引擎。结合WYSIWYG仿真器和自动代码生成功能,TouchGFX大大简化了GUI开发。通过对完成的原型进行快速迭代,它涵盖了从早期设计草图到生成独家最终产品的所有步骤。

  TouchGFX Designer可作为独立的软件工具提供,便于快速轻松地进行图形评估和概念验证。TouchGFX框架(包括TouchGFX Designer)包含在STM32Cube MCU软件包中。它完全兼容STM32CubeMX初始化和代码生成工具,便于在统一项目环境中无缝地联合开发图形和主应用程序。

  TouchGFX 引擎用于驱动UI应用程序的TouchGFX C++框架,以及处理屏幕更新、用户事件和定时等。 先进的TouchGFX技术针对STM32微控制器进行了优化,从而以最低CPU负荷和内存消耗实现提供最佳性能。

1.5 关于华清

  华清远见教育科技集团,2004年创立于北京中关村,是一家集产学研用于一体的科技驱动型高端教育服务品牌,致力于新一代信息技术领域的高质量人才培养和服务。伴随着公司的高速发展,华清远见先后在北京、上海、深圳、成都、重庆、沈阳、济南、武汉、南京、西安、长沙、广州成立12个学习中心。从线下到线上(创客学院)。从教学到研发,从理论到实践,从校园到职场,深度助推产教融合,广泛开展校企合作,为科技强国建设输送了27余万高质量复合型IT人才,并为1000余所高校、20000余家企业赋能人才培养和人才支撑。

图 1-11 资质荣誉

  华清远见研发中心以“科技引领教育发展”为理念,提供了现代产业学院、专业一体化建设、综合实训平台、产学研协同育人中心、OEM/ODM 相关产品的研发和先进解决方案,推动嵌入式人工智能、物联网、云·大数据等先进技术在高校的深度应用和融合创新,以领先的科研水平及卓越的科技服务能力助力高校新一代信息技术领域的学科建设,赋能校企协同发展产业生态、育人生态。研发中心先后被评为国家级高新技术企业、教育部产学合作协同育人单位、产教融合示范基地。众多教学平台及产品荣获国家多项发明和实用新型技术专利、国家软件著作权以及 ISO9000 国际质量体系认证,已深度应用于1000 余所高校及企业。

图 1-12实训产品与教材出版

二、GUI界面基础

  在进行TouchGFX相关工具使用与界面开发前,对GUI界面的基础知识进行整理与学习,该节的内容主要来源TouchGFX社区,社区提供了TouchGFX基础信息和安装指南、基本概念(介绍关键图形概念)、开发(如何开发TouchGFX应用,包括结构、工作流和工具)、教程(TouchGFX教程集合)等方面的文档教程。

2.1.1 嵌入式绘图系统

  一词有许多种含义。首先,不同的人对一词有不同的理解,对于有些人来说,嵌入式系统意味着以微控制器、微处理器为中心的软硬件系统。 也可能意味着功能强大的现代智能手机。

  其次,“绘图系统”一词有许多种解释。 对有些人来说,它表示在喜欢的绘画程序中绘制像素。 对其他人来说,它表示游戏机上运行的3D渲染软件。

  对TouchGFX而言,嵌入式系统表示STM32微控制器上的任意系统。 绘图系统表示有用户界面的运行频率为60帧每秒的交互式应用。

  为了在嵌入式系统上实现绘图应用,我们考虑四个直接相关的主要组件。当然,嵌入式系统可能包含许多其他组件,但其他组件与图形显示的相关性较小。

图 2-1 MCU、RAM、闪存和显示屏

  简而言之,TouchGFX使用MCU,通过对闪存中的各个部分进行组合,创建和更新RAM中的图像。组合图像会被传输到显示屏。系统会视需要尽可能多地重复此过程。

微控制器(MCU)

  在这个过程中,MCU承担了所有的重要任务。它读取闪存中的图像,并将它们写入RAM。将半透明红色文本融合到图像上时,它计算得到的色彩并将其存储到RAM。 对圆的所有像素进行渲染并存储到RAM。 将图像从RAM传输到显示屏。

图 2-2 MCU提供CPU、内部闪存和内部RAM等 

  STM32系列MCU具有特定功能,如LTDC、Chrom-ART、Chrom-GRC等,为绘图系统的实现提供帮助。

RAM

  所得计算图像(帧缓冲)存储在RAM中。 在更新图形时,MCU对RAM执行读和写操作。在将图像传输给显示屏时,再次对RAM执行读操作。

  在多数情况下,所得图像被存储在MCU内部的RAM中。如果将所得图像存储在内部RAM中的方法不可行,可以添加外部RAM。

Flash

  所有静态数据均存储在闪存中,例如:图像、字体和文本。闪存由MCU读取,其内容被写入RAM或与RAM内容进行组合。

  在大多数情况下,由于内部闪存很少能够容纳下所有图像资源,因此设置中会增加外部闪存。对于十分简单的应用,内部闪存可以满足需求。

  理想的做法是对闪存进行存储器映射(STM32U575支持存储器映射),以便从闪存直接读取像素并写入RAM。或者,如果不对闪存进行存储器映射(STM32G070采用SPI接口读写),可将闪存内容传输到RAM,然后再从RAM读取。

显示

  显示屏将图像实际显示给人眼。RAM中存储的计算后的图像(帧缓冲)由MCU按固定时间间隔发送到显示屏。

2.1.2 色彩格式

  色彩是由显示屏的像素呈现出的样子。这些色彩来自帧缓冲存储的值。在传统意义上,绘图系统中能够表现、使用和显示的色彩数量是有限的。这同样适用于TouchGFX和TouchGFX应用。

  像素色彩数量会影响到应用的许多方面。从显示屏上看到的实际内容到帧缓冲所需的内存消耗,以及整体性能。 本节将进一步介绍TouchGFX中的色彩和可用的色彩格式,并指出其优缺点。

色彩

  TouchGFX中的色彩是红、绿和蓝分量的三元组,即RGB色彩。每个色彩分量的范围为0至255。0表示该分量无作用,255表示该分量处于最大值。全黑色表示为RGB色彩 (0,0,0),全白色表示为 (255,255,255)。 亮绿色为 (0,255,0),半亮红为 (128,0,0),暗紫色为 (64, 0,64),诸如此类。 

 图 2-3 部分RGB色彩

灰度

  灰度应用的所有色彩均为灰色,包括从黑色到白色之间的所有灰色,因此用灰色强度(而不是RGB值)表示。 可将灰度色彩理解为R = G = B的RGB色彩。

不透明度

  在某些情况下,我们会考虑为色彩增加一个描述色彩不透明的分量。与色彩的其他分量一样,不透明度的范围为0至255。有不透明度的色彩称为RGBA色彩。A表示alph,是不透明度使用的传统名称。

  完全不透明的黑色表示为 (0,0,0,255),有一些透明的红色表示为 (255,0,0,128),诸如此类。

 图 2-4 白色和灰色之上的一些RGBA色彩

  当色彩并非完全不透明时,需将它与已存在的色彩进行混合。这种色彩混合称为Alpha混合。

色深

  色深是指帧缓冲存储的用于描述每种色彩的位数。我们将该值表示为每像素位数,简称bpp。使用的位数越多,可描述的色彩越多。常用的色深为24 bpp。由于每一位都可以是有或无,这表示可以呈现224 = 16777216种不同色彩。另一个较少使用得稍色深是1 bpp。此色深适用于黑白应用,只能呈现21 = 2种不同色彩。

TouchGFX支持下列色深:

32 bpp - 16777216种色彩及相应不透明度值

24 bpp - 16777216种色彩

16 bpp - 65536种色彩

6/8 bpp - 64种色彩

4 bpp - 16种灰度色彩

2 bpp - 4种灰度色彩

1 bpp - 2种灰度色彩

  关于色彩分量范围的注释。当使用的色深小于24 bpp时,红、绿和蓝分量中每一个的范围并不直接取0至255。 以16 bpp的红色分量为例,范围为0至31。 我们将值31视为16 bpp色深时能够表现的最红的色彩,即24 bpp色深时的值255。 一种理解方式是16 bpp色深的色彩只是24 bpp色深可能表现的色彩的一个子集。

  在6/8 bpp色系中,每个像素使用6位表示色彩信息(2位分别表示红色、绿色和蓝色)。 为了简化帧缓存访问,每个像素从6位增加至8位(1字节)。 帧缓存中多余的两位未使用。

格式

  在确定表示色彩所需的位数后,我们进一步研究位的内容。色彩通过位来描述红色、绿色和蓝色,但色深本身并不能指定像素中位的顺序(格式)。 例如: 先是蓝色,再是绿色,接着是红,或者顺序相反。

像素色彩格式

  根据应用的色深,可使用某些特定的色彩格式。

RGB888

  在TouchGFX中,色深为24 bpp的色彩的色彩格式为RGB888。 这意味着对红、绿和蓝分量中的每一个使用8个比特位。以亮紫色RGB (255,0,255) 为例,通过将分量组合成一个色彩值来表示这种色彩。

uint32_t brightPurpleRGB888 = 255


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有