STM32

STM32是STMicroelectronics(意法半导体)推出的一系列基于ARM Cortex-M内核的32位微控制器(MCU)产品。这些微控制器提供了广泛的产品系列,覆盖了多种不同的性能和功能需求,适用于各种应用领域,包括工业控制、汽车电子、消费类电子、医疗设备等。

STM32系列微控制器以其高性能、低功耗、丰富的外设接口和灵活的开发工具而闻名。它们通常具有丰富的存储器、多种通信接口(如UART、SPI、I2C、CAN等)、模拟数字转换器(ADC)、定时器、PWM输出等功能,以满足不同应用场景下的需求。

STM32微控制器通常使用标准的ARM Cortex-M内核,包括Cortex-M0、M0+、M3、M4和M7等,这些内核具有不同的性能和功耗特性,可根据具体应用的需求进行选择。此外,STM32系列还提供了多种封装和引脚配置,以满足不同尺寸和集成度的要求。

STMicroelectronics为STM32系列提供了丰富的开发工具和支持资源,包括基于ARM开发环境的集成开发环境(IDE)、调试器、评估板和参考设计等。这些工具和资源有助于开发人员快速开发和部署他们的应用,并提供了全面的技术支持和文档资料,帮助用户充分发挥STM32微控制器的性能和功能优势。

意法半导体(STMicroelectronics,以下简称 ST)最近推出了性价比出众的STM32C0系列产品,为开发人员降低了STM32入门门槛。现在,嵌入式开发软件和服务的全球知名提供商,ST 的授权合作伙伴IAR宣布支持这款热门 STM32 微控制器的最新产品系列。性能强大的 IAR Embedded Workbench for Arm 可帮助开发人员构建紧凑的代码并加以优化,以及提供全面的调试和分析能力。此番 IAR 和 ST 携手,将帮助使用 8 位或 16 位 MCU 的嵌入式开发人员,转向价格极具竞争力的 32 位芯片。

1.png

IAR Embedded Workbench for Arm 具备先进的代码优化技术和全面的调试功能,深受全球嵌入式系统开发人员的喜爱。该工具套件使应用开发流程变得更快、更高效且代码高度紧凑。此外,集成的静态和运行时代码分析工具有助于保证代码质量,以及帮助嵌入式软件实现长期的可维护性和可移植性。

全新的 STM32C0 系列是目前 ST性价比最高的 32 位 MCU 系列,主要针对家用电器、工业泵、风扇和烟雾探测器等通常采用较简单的 8 位和 16位 MCU 驱动的产品。由于采用了更现代的 32 位设计,因此在保持总成本和功耗相似的情况下,STM32C0 改进了产品性能,例如更快的响应速度、更多功能和支持联网等。此外,由于引脚布局一致, STM32C0 系列芯片还可以轻松迁移到 STM32G0 系列,以应对更高要求的项目。在同一个集成开发环境中,IAR 能为应用软件的迁移提供便利。

目前,IAR 的解决方案已完全集成到 STM32 生态系统中。所有可用于 STM32C0 系列的软件资源,如 STM32CubeMX 配置工具、Microsoft Azure RTOS 和 STM32CubeC0 MCU 软件包,都与 IAR 开发解决方案完全兼容并通过了测试。此外,IAR Embedded Workbench 支持开箱即用的 STM32C0 Nucleo(NUCLEO-C031C6)低成本开发板和两款 STM32C0 探索套件(STM32C0116-DK 和 STM32C0316-DK)。

ST微控制器部产品线市场经理Pierre Charvet表示:“新款 STM32C0 通用入门级微控制器是传统 8 位/16 位解决方案的绝佳替代,提供了大量先进的特性和功能。IAR 作为广泛而强大的 STM32 生态系统不可或缺的一员,能够帮助开发人员增强和优化他们的设计。在 IAR Embedded Workbench 的支持下,IAR 为新用户进入 32 位领域提供了便利,帮助他们加快了上市时间,同时不必担心超出预算。”

IAR 首席技术官 Anders Holmberg 表示:“我们与 ST 已紧密合作多年,为所有 基于 Arm 的STM32 32 位微控制器提供全面支持。作为 ST 的授权合作伙伴,我们致力于为这些功能丰富的微控制器提供充分的支持,包括最近新推出的、专为下一代智能电器和工业控制器开发的高性价比 STM32C0 系列。利用 IAR 开发解决方案,开发人员将能够简化他们的工作流程,并大幅缩短产品上市时间。”

IAR Embedded Workbench for Arm 最新的9.32版本将支持 STM32C0系列。如需了解该工具套件的更多信息,请访问 www.iar.com/arm

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 16

最近发布的TouchGFX 4.21 包含了TouchGFX Stock,这是迄今为止由微控制器GUI设计工具提供的最大的图形资产库。新版本软件为开发人员带来更多便利。它通过众多bug修复和质量改进让用户更轻松地创建UI。有了TouchGFX Stock,用户不用再去寻找资产和支付昂贵的许可费。对于想创建一个更丰满原型的团队或那些请不起设计师的团队来说,TouchGFX Stock是一个理想的解决方案,并且会随着时间的推移而不断成长、更加强大。TouchGFX现在同时支持SVG文件和NeoChrom GPU加速器,以实现可扩展性和动画。

1.jpg

下载TouchGFX4.21

TouchGFX 是 ST 的免费开发工具,帮助用户在 STM32 微控制器上创建图形用户界面。该引擎用 C++ 编写,充分利用了 ST 器件上的优化功能。TouchGFX 工作环境是假定用户界面由用户导航的屏幕组成,很直观地反映了用户体验。它应用广泛,可处理 2D 和 3D 对象、视频、动画、过渡等。此外,它还能访问生成代码,让专家级工程师可以优化他们的代码。开发人员如果想查找该工具的某个 API 或可用的开发工具信息,一般会先从TouchGFX 文档开始。

2.png
▲ 洗衣机上的TouchGFX界面

TouchGFX 4.21重要更新

  • TouchGFX Stock

TouchGFX Stock是基于微控制器框架提供的最大的免费UI图形资产库。它包括图标、GUI元素、主题、图像等。由于图标来自谷歌或者百度的免费使用库,而ST拥有其他资源的所有权,因此TouchGFX Stock在使用许可方面很慷慨,只要用户的项目在STM32设备上运行,即使是商业项目也可免费使用这些资产。用户可以抓取图形资产,调整大小以适应自己的界面,或对其进行编辑以满足特定的需求。TouchGFX Stock甚至还支持将这些图形资产与另一个图形框架一起使用,只要程序是在ST微控制器上运行的即可。

3.jpg

▲ 基于TouchGFX UI的高保真音响系统

最近,许多初创公司已在设计中重用TouchGFX占位符或示例资产。这个新趋势源于小型设计团队的崛起,他们没有资源聘请设计师。因此,当采用TouchGFX时,开发人员发现这些占位符很简洁明了,只需将其添加到最终界面中即可。这就是为什么ST决定投入开发TouchGFX Stock,并成为拥有最广泛的免费图形资产库的MCU供应商。这也诠释了我们的授权方法。多年来,ST一直努力让MCU上的GUI更易于使用,并且还在不断地增加新的主题、图像等来扩展这个库。
TouchGFX Stock提供了很多UI元素,如条形图、弹出窗口、时钟、仪表等,还为某些图形资产提供亮版和暗版。TouchGFX 4.21就像是一门设计课程。工程师无需担心调色板不匹配或设计理念过时等问题。我们提供的图形资产能够保持UI连贯性和现代性。我们还提供各种尺寸以匹配大多数的显示器,许多显示器甚至不需要自己调整大小。TouchGFX Stock上市时包含五个主题,但限于MCU上GUI的性质,还无法实现自动切换主题。由于没有与所有资产形成一一对应的关系,用户必须手动替换它们。

4.jpg

▲ TouchGFX Stock预览

  • 支持可缩放矢量图形图像(SVG)

TouchGFX推出了对SVG的支持。以往,TouchGFX架构存储的是光栅图像,如PNG文件,因为它们易于访问和显示。而SVG文件不包含渲染,但包含绘制说明。它们的可扩展性更好,但要求更高。这对于笔记本电脑或台式机不是问题,但对于低功耗微控制器就不同了。其难点在于,设计师正在创建越来越多的动画界面,他们希望一个UI可以通过缩放适应不同尺寸的显示器。因此,设计团队希望使用SVG文件节省资源,因为一个文件可以用多种不同的方式绘制。

5.jpg

▲ 可根据不同屏幕大小缩放的主控界面

为了应对这一日益增长的挑战,ST在某些STM32U5产品上集成了新的NeoChrom 2.5D加速器。该硬件对绘图动画进行了优化,减轻了与SVG文件相关的一些计算负担,从而解决了性能问题。该IP还具有更快的内存接口,加快了提取操作。因此,将文件存储在外部存储器中时,损失更小。SVG IP具有很大应用潜力,ST将继续基于其特性为用户带来更多新功能。

TouchGFX三大金刚

TouchGFX Designer 通常是开发人员启动UI 设计时使用的第一个工具。它采用所见即所得的方法,设计者可以在其中创建用户会看到并与之交互的内容。开发人员可以从示例项目开始,例如时钟、仪表或动画图像,以及更多成熟的演示,如骰子动画、场景转换或泳池监控系统。选择演示应用程序、ST 开发板,并配置所有内容都是通过一个启动屏幕进行的。因此,只需要几分钟即可运行示例代码和演示,从而更快地创建概念验证。TouchGFX Designer 中的 UI 元素通常采用通过实用程序界面添加和配置控件的形式。 

6.png

▲ TouchGFX Designer 为咖啡机创建 UI

TouchGFX Designer 是 TouchGFX 生态系统的一部分。例如,只要用户选择3.0模板,就可以在Designer中启动项目,然后将其转到STM32CubeMX,设置Discovery板或MCU,让TouchGFX Generator更新 .IOC文件以立即启用新设置。开发人员也可以从 TouchGFX Generator 开始,再移至 TouchGFX Designer,然后返回 STM32CubeMX 以更改显示分辨率。系统会自动更新 TouchGFX Designer,无需关闭应用程序。

在开发人员将图形用户界面运行到他们的 MCU 之前,TouchGFX Simulator 可对其进行模拟仿真。它的一个优点是提供了键盘快捷键,简化了工作流程,比如更容易进行各种截屏并逐帧研究动画。同样,按 F2 键会突出显示无效区域,即系统必须更新的帧。因此,开发人员可以检查他们的动画是否因为带来了无效资源从而浪费了 MCU 资源。

TouchGFX Generator 与 STM32CubeMX 一起生成 TouchGFX 抽象层 (AL) 的重要部分。我们支持几乎所有带显示屏的 STM32 探索套件,新插件适用于任何基于 Cortex-M0+、M4 或 M7 的 STM32 MCU。尽管工程师仍需添加他们的用户代码并进行执行优化,这个新插件使启动项目变得简单易行。Generator通过创建空函数指导开发人员并加快开发板初始化。ST 对开发板也进行了默认设置,可加速开发并用作示例。


7.jpg

▲ TouchGFX Generator 和 Designer 在智能手表上协同工作

TouchGFX 主要特性

  • 支持X-NUCLEO-GFX01M2和X-NUCLEO-GFX02Z1显示扩展板

当工程师已决定使用图形用户界面时,显示器就会成为其物料清单中最贵的组件。即便是没有触屏功能的简单的 2 英寸显示屏,都会显著地提升用户体验,但它还是比其他部件都贵。如果BOM目标在5 美元以下,想找到一个价格合理的显示器很难。为此,ST 推出了显示扩展板,帮助工程师找到性价比更高的组件,同时还为 TouchGFX Designer 中的硬件提供支持。用户只需选择显示器的配置,即可在与其规格匹配的界面上开始工作。

第一个扩展板是 X-NUCLEO-GFX01M2。它搭载了支持 SPI 闪存的 SPI 2.2 英寸 QVGA (320 x 240) 显示器,非常适合BOM在5美元左右、带外部闪存和两层 PCB 的典型嵌入式系统。X-NUCLEO-GFX01M2 与各种 64 引脚 NUCLEO 板兼容,例如 NUCLEO-WB55RG开发板,从而简化了蓝牙应用的开发。

8.png

▲ The X-NUCLEO-GFX01M2

同样,X-NUCLEO-GFX02Z1 是首款支持并行接口、QSPI 闪存和 144 引脚 Nucleo 板的显示扩展板。该平台面向功能更强的微控制器,可兼容更高带宽的接口。开发人员可以将 X-NUCLEO-GFX02Z1 与基于 STM32U5 的 NUCLEO-U575ZI-Q 搭配使用,工程师能够利用新 MCU 更出色的效率及性能创建出前几代 STM32 无法实现的用户界面。此外,ST正在更新 X-CUBE-DISPLAY 扩展软件包,无需 TouchGFX即可使用显示扩展板。

9.png

▲ The X-NUCLEO-GFX02Z1

  • 在 UI 中嵌入视频

随着嵌入式系统中屏幕的日益普及,开发者希望在用户界面(UI)中引入视频,更好地实现与用户互动。但在嵌入式系统 UI 中应用视频,实现起来是有相当难度的。操作系统没有自带默认的媒体播放器和编解码器。同样,编写一个能显示 YouTube 视频的网页也很难实现。开发人员需要自行完成所有繁琐复杂的工作,例如部署视频缓存,挑选出最适合工作在他们的微控制器上的编解码器;此外,还要考虑“如果设备运行硬件加速,如何实施?”等问题。TouchGFX Designer 提供了一个视频控件来应对这一挑战。添加视频只需要三个简单的步骤

  • 向量优化

微控制器上的大多数静态接口都使用位图,它们需要的计算吞吐量非常小。相比之下,矢量图像并不常见,因为它们需要更多的算力。UI开发的挑战在于矢量对于动画至关重要。因此,由于每秒帧数较高,开发人员可能会选择使用更多资源来实现更平滑流畅的动画。另一方式是,动画可以采用较低功率,减少画面的流动性。TouchGFX 4.20在处理矢量图形时提供了显著的优化,在某些场景下效率提高了70%。得益于v4.20版的优化功能,开发人员可以在更小的MCU上提供更平滑的动画或使用更多的矢量元素;还将在较大的动画上获得最大的性能提升。

新的优化利用Chrom-ART在某些操作(如颜色填充)期间降低微控制器负载。ST还更新了Touch GFX计算形状边缘的算法。此外,由于功能更新涉及到框架对矢量图形的处理,用户将从中受益。开发人员不仅能立即看到性能提升,还可以据此进行规划。有的开发者会选择降低应用程序的内存需求,有的会向界面添加新动画。团队协作开发时,必须注意检查他们的UI,因为某些元素的运行速度可能比预期的快。

  • 导出定制容器功能

在极简模式下,TouchGFX Designer通过各个控件,在屏幕实现绘制功能。该软件附带了许多预定义的控件,如仪表、时钟或图表,开发人员可以设计他们的自定义控件。为了使控件更简洁直观,设计者可以将它们分组归类到容器中。容器通常是用户界面的构建模块,帮助程序员在跨多个屏幕的场景下,复用一组控件,而无需每次重新配置它们。此外,容器的修改更新会影响映射到使用它的每个屏幕,这一功能大大简化了开发工作。
10.jpg

▲ 定制容器帮助企业实现跨应用的品牌策略

TouchGFX还提供了预定义的容器,以加快最常见的设计操作,开发人员也可以创建自定义容器。自定义容器非常受欢迎,开发人员通过使用它们实现用户界面的快速调整并呈现出精美的视觉效果。以往,设计师都不得不面对设计工具背后的固有挑战,即在一个项目上耗时精心打磨的 UI无法导出到另一个项目。而涵盖代码、图形资源、文本、附属项、甚至更多资源的自定义容器可以将这些资源打包并关联到待开发项目中。TouchGFX Designer 4.20通过提供导出功能解决了这个设计开发难题,该功能创建了一个可在其他项目上复用的文件包(.tpkg文件)。开发者可使用该工具向文件包添加诸如字体等各类资源,并通过一个XML文件列出所有内容。该列表便于开发者检查该文件并对其进行修改,以选择要导出的内容。

  • 导入自定义容器功能

导入自定义容器的操作路径是:用户选择编辑->导入->自定义容器。TouchGFX 4.20包括一个新的导入实用程序,可引导用户完成导入过程。例如,软件检测自定义容器定义的语言,并将其与新项目中可用的语言进行匹配或忽略它们。如果通用名之间存在冲突,或可能引发新接口内部出现问题,系统将会停止导入过程。TouchGFX Designer强制用户修复原始自定义容器上的问题,而不是在导入过程中创建工作区。由于该功能的目的是保留跨产品界面的外观和体验,因此在原始项目中强制更改可确保跨UI的一致性。

  • CacheableContainers

顾名思义,CacheableContainers 使用位图缓存加速图形性能,以更高的帧速率实现更平滑的过渡。下面的演示在 STM32F429I 探索套件上运行。如果没有 CacheableContainers,简单的全屏 (240 × 320) 幻灯片动画运行速度是每秒 9 帧。借助 TouchGFX 性能,系统可以达到每秒 60 帧。现在有些智能手表通过这个功能已实现无缝丝滑的用户体验,尽管其外形尺寸还存在很大的硬件限制,且需要更长的电池寿命。除了动画之外,CacheableContainers 还可以优化复杂的小控件,例如纹理映射器或在静态背景前显示的小型动态元素。

如果没有 CacheableContainers,动画的每一帧都必须重绘,计算量非常大。CacheableContainer 将第一帧和最后一帧存储在单独的容器中,并以位图形式保存在 RAM 中。系统无需渲染动画,而是使用 DMA 从内存中检索这两个图像,并采用一个简单的 DynamicBitmap 方法将它们显示在不同的位置。MCU 无需生成每一帧,显著优化了性能。开发者只需在 TouchGFX Designer 中勾选 Cacheable 框,选择要缓存的容器在内存中的位置,需要时调用即可。采用这种技术,渲染时间可从 100 ms 缩短到 5 ms。

  • 部分帧缓冲区

帧缓冲区是一个连续的内存空间,用于存储将出现在显示器上的每个像素的代表。例如,用于智能手表显示屏的标准 24 位 390 x 390 图像需要 3,650,400 位或 456.3 KB ( (390×390×24)÷8 ) 的帧缓冲区,这将占用 STM32L4+ (适用于智能手表和可穿戴设备)上可用SRAM 的 70% 以上。如果应用程序需要多个帧缓冲区,这个数字可能会激增。如果超出容量限制,较大的帧缓冲区需要更长的获取时间,因为需要从内存传输到显示器的数据更多,性能也会降低。

11.png

▲ 部分帧缓冲区优化智能手表的界面

顾名思义,Partial Framebuffer 只存储了部分帧缓冲区,因此占用的内存减少了 10 倍。开发者可以根据屏幕会变化的那一部分来配置它的大小,然后再存储多个部分缓冲区。随后工具将选择合适的那个并将其发送到显示器。这个技术最适用于短动画,例如时钟、加载条或随时间自行构建的图形。它要求屏幕使用嵌入式控制器,因为它会直接从 MCU 的 RAM 接收部分帧缓冲区,从而绕过闪存以提高性能。这一技术适用于并行/8080、DSI 和 SPI 显示器。

TouchGFX 还优化了部分帧缓冲区,让资源受限的微控制器也能实现 UI功能。过去,最小的图形界面也需要大约 200 KB 的帧缓冲区。而像 STM32G071 这样的微控制器只有 36 KB 的 RAM,怎么办?TouchGFX 将部分帧缓冲区优化到仅6 KB,解决了这个难题。考虑到该工具的应用数据,入门级 UI 只需要 16 KB 的 RAM 即可运行。TouchGFX 还具有智能部分屏更新功能。该功能补充了部分帧缓冲,以优化屏幕上的更新顺序。这个过程节省了大量资源,可以在同一时间段进行更多更新。

  • L8 压缩格式

图形资源占用大量内存空间,但降低图形质量也就意味着UI的降级。因此L8 是一项必不可少的功能,它可以将图像文件压缩 75% 而无需降级,这要归功于 STM32 微控制器中的 ChromART 加速器。图形资源最多使用 256 种颜色,这在基于 STM32 MCU 的小型嵌入式系统上很常见,开发人员只需在 TouchGFX Designer 中勾选一个框,就可以选择使用 L8 格式压缩图形。解压缩的算法也很高效,因为它使用 ChromART 引擎在表中查找颜色,并在不损失质量的情况下对图形进行渲染。

  • 文本的 XML 文件

设计团队通常将所有文本存储在可以导出的 Excel 文件中,这种格式更容易与全球开发人员协作。但管理改动非常不便,开发者必须手动处理更改,而不是使用Git这样的版本控制系统,并确保没有人无意疏忽覆盖其他人的工作,这就很麻烦。为了解决这个问题,TouchGFX将所有文本存在一个 XML 文件中。这个格式简化了合并操作和冲突的解决。为了兼顾开发者的以往工作习惯,TouchGFX还包括一个 XML 到 Excel 转换器。因此,开发人员仍然可以导出到 Excel,然后将他们的 Excel 文件传回 TouchGFX 生成 XML 格式。

  • 优化的项目文件

TouchGFX 还通过小型项目文件促进协作。小尺寸更容易合并和共享。通常,文本文件以 JSON 格式存储所有参数,这会让文件变得很大。因此,ST 通过仅存储自定义设置进行优化,所有文件中没有内容时都被视为使用默认值。这样大大缩小了文件尺寸,使 Git 上的合并操作更加简单和快捷。

  • 一次性文本及随机 ID

希望使用文本的开发人员必须在 TouchGFX Designer 的文本面板中创建资源,然后在 UI 中使用文本的 ID。但是,TouchGFX 也支持 “一次性文本”,它不会作为典型的文本资源出现。开发人员在测试期间或文本不重要时使用它。它可以防止数据库被不相关的文本填满,以加速原型制作。实际上,一次性文本功能与常规文本资源不同,它会自动生成 ID 并在从 UI 中删除资源时从数据库中删除。TouchGFX 还使用随机字符串生成器来生成 ID。因此,同一项目中的两个一次性文本 ID 几乎不可能相同。

  • 动画和控件

滑入过渡和动态图

如何充分利用TouchGFX 中不断增加的新功能,是开发人员面临的挑战。因此,我们提供了使用上述功能后得到优化的动画。例如,虽然传统的滑入式过渡需要刷新整个屏幕,但 TouchGFX 擦除动画使用的资源要少得多。同样,动态图标控件可以更好地显示序列数据,而不会给 RAM 和微控制器带来太大影响。

  • 静态图表

当可穿戴设备跟踪环境或物理数据时,用户希望看到进展情况。图表可以跟踪心率、温度、步行步数等。TouchGFX开发人员首先要求提供动态图表,因为它们的实现可能具有挑战性,并且该功能自TouchGFX 4.15以来一直可用。现在,我们的团队正在发布静态图表以适应新的应用程序。事实上,不需要不断演化或随时间变化很小的数据更适合静态呈现。静态图表的工作方式略有不同。呈现动态图表时,开发人员只需要在动态数据点上发送一个数据点,因为时间间隔是恒定的;然而,对于静态图表,程序员必须输入X轴和Y轴的信息。

  • 时钟和纹理映射器

TouchGFX 还具有模仿应用程序的控件,如模拟和数字时钟,以及一个纹理映射器,开发人员只需通过简单的拖放即可创建他们的映射程序。他们仍然需要输入C++ 代码,但整个过程会更加顺畅。纹理映射器也是在资源有限的 MCU 上进行 TouchGFX 优化的一个很好的例子。只要图形资源在 RAM 中而不是闪存中,它就可以帮助把对象制作成动画,甚至可以工作在 STM32G0 上。

  • 仪表

仪表模板绘制针和弧可以帮助用户监控值。开发人员还可以更改背景、针的方向、值的范围等。下面的演示展示了程序员如何在他们的 IDE 和 TouchGFX Designer 之间切换以获得更流畅的工作流程。团队可以快速检查量表,即时调整,并立即测试他们的代码。下方演示视频展示了 handleTickEvent() 函数如何控制仪表的动作。只需几行代码,开发人员就可以更改值的范围以及指示器接收更新的频率等。这些优化可以给不需要不断更新显示值的应用节省大量资源。

  • 先进文本管理

文本是大多数图形用户界面的重要组成部分,这解释了为什么设计师对其如此关注。他们定制、编译并改进它。在TouchGFX Designers上创建的一些应用程序可以拥有数千个文本资源,每个文本资源都被翻译成多种语言。如何更高效处理文本?为了减少损耗,TouchGFX现在提供新功能,开发人员可以根据其应用程序的部分或功能定义的组。如果您想在TouchGFX Designer中并排显示编译文本,新功能使这一过程变得更简单。它还帮助打包相关信息以检查一致性和准确性。最后,分组使搜索和查找特定资源更快速。

TouchGFX Designer还包括一个排版选项,用于设置组内的默认参数。该部分允许用户选择字体规格、回退字符、通配符、对齐方式等。以前,开发人员必须覆盖每个文本资源的参数,这可能带来大量工作。而由于有了组,可以同时为许多资源设置参数,从而极大地优化了开发。具有自定义排版的现有项目将看到其设置移动到新部分。新的文本界面还显示一次性文本,并在必要时将其升级为资源。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 180

意法半导体单片天线匹配 IC系列新增两款优化的新产品,面向BlueNRG-LPS系统芯片(SoC),以及STM32WB1x 和STM32WB5x*无线MCU。单片天线匹配 IC有助于简化射频电路设计。

1.jpg

针对BlueNRG-LPS优化的 MLPF-NRG-01D3和针对STM32WB优化的MLPF-WB-02D3集成了一个外部天线实现最佳射频输出功率和接收灵敏度所需的完整滤波和阻抗匹配电路。每款器件的天线侧标称阻抗都是50Ω。片级封装面积很小,凸点间距0.4mm,回流焊后的封装高度630µm。意法半导体的新天线匹配 IC 还有 2.4GHz低通滤波器,可轻松满足全球无线电法规的要求,包括 FCC、ETSI 和 ARIB 规范。

新IC电路元件是采用意法半导体的集成无源器件(IPD)技术制造在玻璃衬底上,这样设计可以最大限度地减少信号插入损耗,性能优于采用分立元件构建的电路。在同一芯片上集成所有元件还确保组件参数的一致性和终端产品的质量。 此外,意法半导体的 IPD 有助于加快产品上市时间,降低物料清单成本,缩小电路尺寸。

BlueNRG-LP和 BlueNRG-LPS SoC 以及 STM32WB1xSTM32WB5x包含意法半导体的高能效2.4GHz射频IP内核,并配有免版税的协议栈和专用软件工具,让射频设计经验不足的开发人员也能轻松快速地开发先进的无线产品。两款产品都提供片上功能,例如,存储器、外设、通信接口、稳压电源,以及先进的硬件安全功能,包括加密、存储器保护和公钥加速 (PKA)。

BlueNRG-LPx系统芯片可独立使用或配合网络处理器使用,支持 Bluetooth® Low Energy 5.3 功能,包括点对点和网状通信、广告扩展和测向。

MLPF-NRG-01D3 IPD 兼容BlueNRG-LPx全系产品,包括采用 UFQFPN 和 WLCSP 封装的 BLUENRG-3x5Vx、BLUENRG-3x5Ax 和 BLUENRG-332xx。

STM32WB5x 和 STM32WB1x MCU是取得Bluetooth 5.3, Zigbee® 3.0和OpenThread认证的无线双核微控制器,Arm® Cortex®-M4处理器内核处理应用任务,Cortex-M0+内核专门管理射频通信协议,采用WLCSP 和 UFBGA 封装,可以直接连接MLPF-WB-02D3 IPD。为连接UQFN和 VQFN封装的MCU,意法半导体还提供一款不同的IPD芯片。

MLPF-NRG-01D3MLPF-WB-02D3单片天线匹配 IC 现已量产。

详情访问www.st.com/rf-matched-lpf

围观 19

大家是不是经常听到这几个词:嵌入式、单片机、STM32。你知道他们之间的关系吗?今天就来科普一下他们的基础概念和关系~

嵌入式

“嵌入式”的官方定义是用于控制、监视或者辅助操作机器和设备的装置。
专业的名词或许有点晦涩难懂,我们举个例子:

  • 个人通信和娱乐系统:手机、数码相机、音乐播放器、可穿戴电子设备、PSP 游戏机

  • 家电:数字电视、扫地机、智能家电

  • 办公自动化:打印机、复印机、传真机

  • 医疗电子产品:生化分析仪、血液分析仪、CT

  • 网络通讯产品:通讯类交换设备、网络设备(交换机、路由器、网络安全)

  • 汽车电子产品:发动机控制、安全系统、汽车导航和娱乐系统

  • 工控产品:工控机、交互终端(POS、ATM)、安防监控、数据采集传输、仪器仪表

  • 军用和航空产品:无人机、雷达、作战机器人上述所有领域都使用嵌入式系统。这只是冰山一角。

所以,通俗点来说,就是在其它电子产品设备中,加入(嵌入)一个小小的"计算机"。这个小小的"计算机",就是嵌入式系统。

通常我们会要求这个小小"计算机",体积小、功耗低、成本低、实时性强、可靠性高。这是个小小的"专用"的"计算机",不追求最高性能,适用就行。

麻雀虽小,五脏俱全,要求还很高!会飞!

所以,搞嵌入式系统,即要懂硬件,也要懂软件,还要懂通信。是电子、通信、计算机的融合。

以后要求更多,主要是人工智能方面的,叫边缘计算。

单片机

上面我们说到嵌入式是一个专用计算机系统,那么系统就应该有硬件和软件,单片机就是硬件部分。在很久以前的技术不发达,没有办法把所有功能做到一个芯片里,只能把功能放到一个个片机里面,这就是单片机。

1.jpg

省流版:单片机就是一个微型电脑,它是靠程序工作的,并且可以修改。通过不同的程序实现不同的功能。

我们常说的51单片机其实是一个系列,51单片机,兼容Intel 8031指令系统。他们的来源就是英特尔(Intel) 8004单片机,51单片机靠着库存基础和大众基础,一直占领着主流市场,但是毕竟这是比较老的技术,现在使用的人已经大幅度减少了,不过因为他的价格便宜,所以在一些低端产品上还在使用。

STM32

最后就是STM32,其实STM32也是单片机的一种,只不过属于进阶版,51单片机是8位的,STM32单片机是基于ARM Cortex M 处理器内核的 32位闪存微控制器,ST厂商提供了非常丰富的函数库,所以工程师在编写程序的时候可以直接调取对应功能的函数,特别方便。51单片机的运行速度慢,显然已经跟不上现在的产品的要求,所以现在比较智能的电子产品都选用运行速度更快的STM32,并且STM32的内部资源更多,接近于计算机的CPU,所以在程序编写上有更多的选择。

2.jpg

经过讲解,你明白嵌入式,单片机和STM32的关系了吗?至于在就业层面需要如何选择,还是要看各位小伙伴自己的个人偏好啦!

本文来源:网络转载、华清远见,

转载此文目的在于传递更多信息,版权归原作者所有。

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 94

CRC校验算应该绝大部分理工类同学都学习过,但真正搞明白的没几个,之前给大家分享过《几种常见的校验算法》,今天结合STM32来分享其中CRC相关的内容。

1、关于CRC校验

CRC:Cyclic Redundancy Check,即循环冗余校验码。

CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。
循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

---来自百度百科

学电子、计算机相关专业的同学都应该学习过CRC的基础原理。其原理说难不难,可以说就是一个公式。同时,说简单也不简单,这个公式里面包含的内容不简单。

1.jpg

拿STM32参考手册中CRC计算单元来说,使用CRC-32(以太网)多项式:0x4C11DB7─ X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X4 + X2 + X +1

关于CRC基础原理的内容比较多,百度、谷歌一下可以看到很多关于CRC原理的内容,我这里就不再过多讲述。

参考维基百科循环冗余校验:https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97

2、STM32中CRC计算单元

相信初学STM32的朋友都知道STM32中有个CRC计算单元,如果有不知道的去面壁思过(参考手册中目录一看就能看见CRC章节)。

但很多朋友都仅限知道有CRC计算单元这个东西,基本都没怎么进一步了解过。

STM32全系列产品都具有 CRC 外设(注意,是全系列都有), 对 CRC 的计算提供硬件支持,为应用程序节省了代码空间。

STM32的CRC(循环冗余校验)计算单元使用一个固定的多项式发生器从一个 32 位的数据字中产生 CRC 码。

在众多的应用中,基于 CRC 的技术还常用来验证数据传输或存储的完整性。

根据 EN/IEC60335-1 标准的规定,这些技术提供了验证 Flash 完整性的方法。CRC 计算单元有助于在运行期间计算软件的签名,并将该签名与链接时生成并存储在指定存储单元的参考签名加以比较。

CRC 主要特性

  • 使用 CRC-32 (以太网)多项式:0x4C11DB7

— X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1

  • 单输入/输出 32 位数据寄存器

  •  CRC 计算在 4 个 AHB 时钟周期 (HCLK) 内完成

  • 8 位通用寄存器 (可用于临时存储)

---来自STM32参考手册

输入/输出数据的反转

STM32默认不对输入数据和输出数据进行位反转。

1.对输入数据的位反转操作可以设置为按字节/半字 /字为单元进行操作。例如输入数据为0x1A2B3C4D,

  • 每个字节内逐位反转,结果是 0x58D43CB2

  • 每半字内逐位反转,结果是 0xD458B23C

  • 每个字长内逐位反转,结果是 0xB23CD458

2.对输出数据的位反转

  • 例如输出数据为 0x11223344,反转后为 0x22CC4488

操作STM32的CRC比较简单,只有三个比较简单的寄存器,不管是使用寄存器,还是库函数,对于大部分人来说,没有多大难度。

看下标准库的部分函数源码:

2.jpg

3、CRC应用

我记得读书那个时候,想要把CRC搞明白好难啊,原因在于不知道学这个CRC到底有什么用途。

CRC用途其实非常广泛,我们最常见的就是在一些通信上,比如:Modbus:

3.jpg

再比如之前讲述的MAVLink通信协议:

4.jpg

CRC其主要目的就是验证数据的正确性。在CRC应用中,还有一个重要的作用:通过 CRC 校验对 FLASH 的完整性进行检查。

在对 FLASH 完整性检查的应用中,需要事先计算出整个 FLASH 的 CRC 校验值(不包括最后保存 CRC 值的字节),放在 FLASH 的末尾。在程序启动或者运行的过程中重新用同样的方法计算整个 FLASH 的 CRC 校验值,然后与保存在 FLASH 末尾的 CRC 值进行比较。

这个对Flash添加CRC校验主要目的:在远程升级程序可有效检查程序的完整性。

在IAR EWARM中有这么一个功能:Checksum。不知道大家使用过没,也是可以对Flash添加CRC的功能。看下图:

5.jpg

简单来说,这里的配置可以对Flash进行CRC计算,关于这里内容比较多,足以单独写一篇文章了,感兴趣的读者可以深入了解一下。

来源:strongerHuang

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 185

关于STM32对内部Flash的保护

为了防止对Flash的非法访问,所有STM32的芯片都提供对Flash的保护,具体分为写保护和读保护。

如果对Flash设置了写保护,那就无法对Flash进行编程和擦除。在开发STM32的时候,如果出现这种情况,通常仿真器都支持对Flash进行解锁,像jlink,stlink等仿真器都支持这个功能。

在使用MDK进行调试的时候,可能会遇到如下图所示的报错信息,这时候就要排查Flash是不是被保护起来了。 

1.png

读保护即大家通常说的“加密”,是作用于整个Flash存储区域,相关文章:STM32等单片机程序加密的方法。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:

  • 通过调试器(JTAG或SWD)

  • 从RAM中启动并执行的程序

写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志,读与写设置的效果见下表: 
当Flash读保护生效时,CPU执行程序可以读受保护的Flash区,但存在两个例外情况:

2.png 

  • 调试执行程序时

  • 从RAM启动并执行程序时 

STM32还提供了一个特别的保护,即对Flash存储区施加读保护后,即使没有启用写保护,Flash的第 0 ~ 3 页也将处于写保护状态,这是为了防止修改复位或中断向量而跳转到RAM区执行非法程序代码。 

Flash保护的相关函数   

FLASH_Unlock();   //Flash解锁 
FLASH_ReadOutProtection(DISABLE);  //Flash读保护禁止   
FLASH_ReadOutProtection(ENABLE);   //Flash读保护允许

STM32如何设置读保护和解除读保护?

读保护设置后将不能读出Flash中的内容。
如何设置读保护在程序的开头加入“设置读保护”的代码即可,每次运行代码时都检查一下,如果没有开就打开,如果打开了就跳过。其中,设置读保护的代码如下:

int main(void)
{  
   ...
   if (FLASH_GetReadOutProtectionStatus()!=SET)//检查设置读保护与否  
   {    
      FLASH_Unlock();         //写保护时可以不用这句话,可用可不用    
      FLASH_ReadOutProtection(ENABLE);     //设置读保护  
   }  
   ...
   while(1)  
   {    
   ...  
   }
}

上面的代码执行后,使用j-link就不能读出程序了,实现了代码读保护。需要注意的是,芯片读保护后无法再次烧写新的程序到Flash中,必须要解除读保护才可以。但是当解除读保护的时候STM32会自动擦除整个Flash,起到保护数据的作用。

通过代码解除Flash保护
解除读保护可以设置在按键里面,方便实现解锁,也可以设置在命令中。如下是解除读保护代码:

3.png

程序中设置一个按键或者命令,可以随时解除Flash的读保护,让芯片又可以重新烧录程序。如果没有留,还可以专门写一个程序,下载到RAM中去运行,用来解除读保护。

注意:执行后,Flash会自动全部擦除。

int main(void)
{
   Chip_Init();  
   FLASH_Unlock(); //不解锁FALSH也可设置读保护,可用可不用  
   FLASH_ReadOutProtection(DISABLE);
}

通过ST-Link Utility来解除Flash保护

在STLink连接目标板的情况下打开程序烧写软件ST-Link Utility,在菜单栏的Target下选择connect,因为这时候Flash已经被锁住了,能看到如下图所示的错误提示。

4.png

下面来操作如何解除Flash保护。

请确保当前已经正确连接了STLink和目标板,在菜单栏Target里打开Option Bytes...选项,发现在这里Read Out Protection选项是Enable,这个表示无法通过SWD读取STM32内部Flash的程序。

5.png

将Read Out Protection选项设置为Disable,并点击Apply。

这时候Flash已经成功解锁了,跟上文提到的解除Flash保护的结果一样,内部Flash已经被擦除了,如下图红框中所示。

6.png

完成以上步骤之后,在菜单栏Target下选择Disconnect断开与目标板连接。

重新进入MDK,可以正常对目标板烧写程序了。

通过ST-Link Utility来设置Flash保护

7.png

在菜单栏Target里打开Option Bytes...选项,可以看到下面有Flash sector protection选项。选择Select all之后,发现所有Page的Protection项都已经变成Write Protection了,只要选择Apply选项就可以对Flash进行写保护,如上图所示。

来源:STM32嵌入式开发

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 253

页面

订阅 RSS - STM32