STM32

前言

在STM32之前,都是老大头51,带着它的“小弟们” MSP430、AVR、PIC在单片机界呼风唤雨。

那个时候,市场上遍布8位机,大学教材用51入门,个人、企业学单片机基本上也都在用51。虽然AVR也有一些8位机市场,但与stc带领下的51单片机是完全不能相比的。当然,这个时候也有16位机的msp430,其他厂家单片机还有pic,高端嵌入式处理器等市场有arm7、arm9等。这个时期的单片机市场是百花齐放、百家争鸣,但总体来说,还是势均力敌、一片祥和的。那么,这个局势是从什么时候开始打破的呢?这还得从物联网的崛起说起。 

原因

当时,物联网(Internet of Things,IoT)逐步进入人们的视野范围。随着它的发展,嵌入式领域对于高性能处理器的需求呈现爆发式增长。

虽然8位CISC(复杂指令)架构内核8051占据了半壁江山,但奈何其性能低下,寻址范围受限,已经难以适应更多的新兴应用领域。而32位架构微处理器内核凭借其极佳的执行效能,不仅能满足物联网对数据处理能力的要求,还能兼顾物联网的低功耗和高性能要求,斩获物联网市场的独家宠爱。在32位架构微处理器中,属ARM公司推出了面向各类嵌入式应用的微控制器核Cortex-M内核受到市场青睐,Cortex-M之于32位MCU就如同8051之于8位MCU。而正是Cortex-M的出现,让ST公司看到了这个内核的强大之处——利用该内核设计了大放光芒的STM32,打破了曾经的单片机局面。

崛起过程

如今,我们往回看那段历史,会发现一切改变都由那时发生——

从2007年6月11日推出第一代STM32产品——Cortex-M MCU STM32F1开始,单片机市场迎来了STM32新星,32位MCU浪潮,如期而至。

1.jpg

2.jpg

此后,芝麻开花节节高,STM32成功的故事也一直在延续。ST公司陆续在每一年都基于新的内核或者新的技术领域有所突破,发布超过了19个STM32 产品系列,包括一个MPU产品线,生产工艺也从180nm不断进阶到110nm、90nm和40nm。例如:

2009年推出了全球第一款超低功耗系列STM32 L1;

2010年推出了第一款在高性能的基于90纳米工艺、120 MHz 的STM32F2产品线;2011年推成第一款高性能Contex-M4的处理器STM32F4;

......

2019年推出全球最为强大的第一款双核处理器STM32MP1、最新一代混合信号Contex-M4 MCUs和世界上最大的MCU STM32H7;

2020年推出全球首颗内置LoRa收发器的SoC——STM32WL。

3.jpg

“一只南美洲亚马逊流域热带雨林中的蝴蝶,偶尔扇动几下翅膀,可以在两周以后引起美国德克萨斯州的一场龙卷风。”STM32这只小蝴蝶带来的改变效果也很明显。2007年ST公司的通用MCU全球排名还只是第11位,2015年便上升到第3位,2018年上升到第2位,2018年则在中国供应商的排名中ST公司一举拿下第一的高地,此后数年,ST的地位几乎无人撼动。

4.jpg

如何学习

入坑STM32后,我们应该如何学习?

如今,STM32堪称爆火,并且潜力无穷。所以,有很多人都在学STM32。

但STM32对入门者可能不是特别友好,因为知识很多,但是对于有一定开发经验的人来说,就是一把好兵器,它能帮你大大缩短开发周期。

那应该如何入坑STM32呢?

(1) 根据时间表定时定量学习

大学时期,都有实验室的学长学姐带着入门,安排任务。

比如,基本任务是一周内学完搭好环境、熟悉调试软件,结合《STM32Fxxx参考手册》、《STM32固件库使用手册》和光盘视频,实现基本篇的GPIO应用。

(2) 举一反三,并通过阶段任务检查学习效果

在学习例程时,可以尝试修改该例程的外设配置,达到举一反三的效果。

每一周,学长学姐会根据你的学习进度,安排给你一个阶段任务,用来检查你的学习效果。

如果你是自学,那么可以根据网上教程和各大资源网站上的“STM32入门小项目合集”,主动给自己找一个小项目,把它实现出来。

这里我推荐正点原子的资源,毕竟每次看视频时的片头曲“我的未来不是梦”让我对STM32充满激情,当然野火、小苗、普中也不错~

(3) 基本外设、功能会用就行,后期需要什么再去针对性地学

按部就班地把STM32知识从头到尾系统性地学习完,固然很好。但是,你要知道学习单片机只是为了解决问题,我们只要在遇到问题时,能够通过STM32解决就行。

因此,当你把基本外设、功能都差不多掌握了,程序能跑起来,并且也知道哪里可以修改、修改成什么就已经基本入门了。

此后,你可以通过一些大大小小项目,巩固理解和探索新功能,你的经验也随之增加。

(4) 学好C语言,可以学着画PCB制板、焊接

软件和硬件都要两手抓。C语言对于STM32的学习至关重要,C语言不好,还跑什么代码?学会画板子、焊板子,这样有什么需求,都可以自己添加。

当然,上面的建议都是给0基础的STM32入门者,若是你有一定基础,那当然是对症下药,哪里不会补哪里。

学海无涯,勇于探索新技术

“学海无涯、永无止境”,更何况是每一年都在推陈出新的STM32。

事实上,STM32 的开发方式已经发生了很大的变化。

比如:

2014 年,ST 公司推出了 HAL 库和 MCU 图形化配置软件STM32CubeMX。

2017 年年底,ST 公司收购了 Atollic 公司,把专业版 TrueSTUDIO 转为免费软件。

2019 年 4 月,ST 公司正式推出了自己的 STM32 程序开发 IDE 工具软件 STM32CubeIDE1.0.0,打造了一个完整的 STM32Cube 生态系统。

而STM32Cube 生态系统已经完全抛弃了早期的标准外设库,STM32 系列 MCU 都提供 HAL固件库以及其他一些扩展库。

STM32Cube 生态系统的两个核心软件是STM32CubeMX 和STM32CubeIDE,且都是由 ST 官方免费提供的。

使用 STM32CubeMX 可以进行 MCU 的系统功能和外设图形化配置,可以生成STM32CubeIDE 项目框架代码,包括系统初始化代码和已配置外设的初始化代码。

如果用户想在生成的 STM32CubeIDE 初始项目的基础上添加自己的应用程序代码只需把用户代码写在代码沙箱段内,就可以在 STM32CubeMX 中修改 MCU 设置,重新生成代码,而不会影响用户已经添加的程序代码。

由此看来,使用STM32CubeMX 和 TrueSTUDIO 进行STM32 开发是一个良好的组合方式!

本文直接来源:嵌入式资讯精选

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

围观 5

该视频分为3个部分,第1部分将介绍如何在STM32CubeMX中设置Octo-SPI外设。第2部分将介绍如何初始化Octo-SPI外设并在存储器映射模式下设置Octo-SPI外设。第3部分将介绍如何为IS25LX256 OCTOSPI Flash 构建外部Flash loader。

来源:STM32单片机

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

围观 21

I-care 集团在Wi-care智能工业预测性维护系统中采用STM32WB5MMGH6无线模块

服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)通过开发智能无线模块帮助工业企业提高制造效率,减少资源浪费和环境污染。STM32WB5MMGH6无线模块是为工业4.0应用专门设计,可以降低用意法半导体创新的无线微控制器开发强大用例的难度,如,I-care 集团的智能设备状态监测。

该模块为使用Bluetooth Low Energy、Zigbee、Thread等主流标准开发无线通信应用提供了一个完整的子系统,并配备免费的通信协议栈,开发人员也可以选用其他的专有协议。该模块集成了几个基本组件,包括天线及其匹配电路、全部无源器件和时钟晶体。EMC、Bluetooth LE 5.3、Zigbee 3.0 和 OpenThread 标准预认证可以简化用户的强制性测试和产品级审批流程,从而节省开发成本,加快产品上市时间。

一些客户已经在使用意法半导体的 STM32WB5MMGH6 模块设计即将推出的新产品。全球机器健康市场的龙头企业I-care Group就是其中一例,其机器工况持续监测解决方案可以改善工业设备的维护,确保机器处于最佳性能状态,避免意外故障和停机。 该公司的 Wi-care 传感器是真正的即插即用的无线持续资产监测系统,与 I-care 的云计算人工智能分析平台 I-see配合使用时,Wi-care 传感器变成了维护 4.0整体解决方案,准许用户将设备状态可视化,并制定维护时间计划。有了I-care 解决方案,用户可以避免 99% 以上的工业故障,减少机器停机时间10-20%,降低维护成本35-45%。

I-care 首席执行官 Fabrice Brion 表示:“I-care 的目标是成为全球规范性和预测性维护市场的领导者。我们市场先进的 Wi-care 传感器的快速成功生产和推出,在我们的发展计划中起着至关重要的作用。其中,ST 的 STM32WB5MMGH6 无线模块在Wi-care 中的贡献不可或缺。”

意法半导体BLE/802.15.4 MCU 总经理 Hakim Jaafar 表示:选用无线模块开发系统,而不是从零开始设计,是帮助开发人员完成项目的最快方式。STM32WB5MMGH6 模块基于我们自己的 STM32WB55 无线 MCU,并有 ST开发资源的全面支持,让这种开发方法变得更快捷、更容易、更经济。

STM32WB5MMGH6TR现已投产,产品已经上市。 该产品属于意法半导体工业产品长期供货10 年产品寿命承诺范围内。

详细技术信息

STM32WB5MMGH6 供电的 STM32WB55 MCU 具有用于应用级处理的 Arm® Cortex®-M4 内核和专用于管理集成无线电的 Cortex-M0+,可确保两个域的实时性能。

MCU 包含大量的片上 RAM,这在运行 Thread 协议时特别有利。 流行的用例包括无线通信和设备控制,例如远程传感器、智能门锁、包括打印机在内的 PC 配件,以及网络网关和智能楼宇控制器等基础设施设备。 无线电的多协议技术提供了灵活性,并允许方便的设备管理和车队管理。

使用 STM32WB5MMGH6 模块的产品设计人员受益于广泛的 STM32 微控制器开发生态系统,其中包括 STM32CubeMX 配置器等免费工具和 STM32CubeWB MCU 软件包等软件。 该软件包提供基本的嵌入式开发资源,包括生产就绪的 MISRA C ISO/TS 16949 兼容的硬件抽象层 (HAL) 和低层 APIFatFS 文件系统、FreeRTOS、通信协议堆栈和代码示例。

关于意法半导体

意法半导体拥有48,000名半导体技术的创造者和创新者,掌握半导体供应链和先进的制造设备。作为一家半导体垂直整合制造商(IDM),意法半导体与二十多万家客户、数千名合作伙伴一起研发产品和解决方案,共同构建生态系统,帮助他们更好地应对各种挑战和新机遇,满足世界对可持续发展的更高需求。意法半导体的技术让人们的出行更智能,电力和能源管理更高效,物联网和互联技术应用更广泛。意法半导体承诺将于2027年实现碳中和。详情请浏览意法半导体公司网站:www.st.com

关于I-Care Group

I-care Group 是世界机器健康管理领域的先进企业,其人工智能和数据驱动解决方案可以在提前几个月甚至几年预测设备故障。I-care致力于让世界各地的机器变得更安全,生产效率更高,可持续性更强。2004 年在Mons成立,公司拥有近 700 名员工,在12个国家(美洲、欧洲和亚太地区)成立子公司,客户遍布55 个国家。I-care荣获 2020 年安永企业奖(比利时)

围观 9

意法半导体在GitHub网站上创建了 STM32 Hotspot社区,为开发者寻找专业开发的STM32 微控制器嵌入式软件项目提供了一个新场所。STM32 Hotspot 包含意法半导体内部工程师原本是为展品和概念验证模型等用途开发的非产品化代码。

srxYkHSAiw.jpg

意法半导体通常不会与外部分享此类代码示例。意法半导体已经为用户提供大量的 STM32 参考代码,现在STM32 Hotspot又将内部项目代码分享供给更广泛的开发者社区,助力他们创造更多的产品附加值。通过意法半导体GitHub社区获取软件资源,用户对软件的真实来源放心。

STM32 Hotspot 中的项目来自实际用例,有助于加快常用功能的开发,减少项目开发工作量和总体研发周期。这些代码可以免费下载,软件发行协议是意法半导体简化商贸手续的常规许可条款,方便客户直接集成到自己的应用程序中。

STM32 Hotspot 与意法半导体的GitHub主社区并存,后者让用户可以访问意法半导体官方发行的所有STM32开源软件,包括 STM32Cube平台和 STM32MPU 嵌入式软件发行版。这两个社区并立扩大了对 STM32 系列 1200 多款Arm® Cortex®-M 嵌入式内核和 Cortex-A7 MPU 内核微控制器的开发支持。

GitHub 用户可以在 https://github.com/stm32-hotspot 找到 STM32 Hotspot网页。了解更多信息,加入 ST GitHub 主社区,请访问 https://github.com/STMicroelectronics

了解详情还可以阅读我们的博文: https://blog.st.com/stm32-hotspot/

围观 8

机器学习 (ML) 在服务器和移动应用中已经风靡多年,现在这种趋势已蔓延到边缘设备,并且变得突出。由于边缘设备需要节能,因此开发人员需要学习和了解如何将ML模型部署到基于微控制器的系统中。

在微控制器上运行的ML模型通常被称为tinyML。然而,将模型部署到微控制器并非易事,但它正在变得越来越容易,没有经过任何专业培训的开发人员也能在规定时间完成部署。

本文探讨了嵌入式环境开发人员如何通过STMicroelectronics的STM32微控制器开始使用ML。为此,文中展示了如何通过X-CUBE-AITensorFlow Lite for Microcontrollers模型转换用于STM32CubeIDE,来创建“Hello World”应用。

tinyML用例介绍

tinyML是一个不断发展的领域,它将ML功能整合到微控制器等资源和功耗受限的设备中,通常采用深度神经网络。然后,这些微控制器设备可以运行ML模型,在边缘进行有价值的工作。以下几个用例中的tinyML非常值得关注。

第一个用例常见于许多移动设备和家庭自动化设备,即关键词识别。通过关键词识别,嵌入式设备可以使用麦克风捕获语音并检测预先训练的关键词。tinyML模型使用表示语音的时间序列输入,将其转换为语音特征,通常为频谱图,其中包含随时间变化的频率信息。然后,将频谱图输入经过训练的神经网络,以检测特定的字词,结果就是检测到特定字词的概率。图1显示了这个过程的示例。

“图1:关键词识别是tinyML的有趣用例。输入的语音被转换为频谱图,然后输入经过训练的神经网络,以确定是否有预先训练的字词。(图片来源:Arm®)"
图1:关键词识别是tinyML的有趣用例。输入的语音被转换为频谱图,然后输入经过训练的神经网络,以确定是否有预先训练的字词。(图片来源:Arm®)

许多嵌入式环境开发人员感兴趣的另一个tinyML用例为图像识别。微控制器从摄像头捕获图像,然后将其输入预先训练的模型。模型可以辨别图中的内容。例如,模型可以确定是否有猫、狗或者鱼等等。图像识别用于边缘的一个很好的例子是视频门铃。视频门铃通常可以检测门口是否有人,或者是否有放下的包裹。

最后一个非常常见的用例是用tinyML进行预见性维护。预见性维护使用ML基于异常检测、分类算法和预测模型来预测设备状态。同样,从HVAC系统到工厂车间设备,应用非常广泛。

尽管上述三个用例是目前常见的tinyML,但开发人员无疑还可以找到更多潜在的用例。以下是相关应用的列表:

  • 手势分类
  • 异常检测
  • 模拟量表读取器
  • 指导和控制 (GNC)
  • 包装检测

无论哪个用例,开始熟悉tinyML的最好方法是使用“Hello World”应用,它可以帮助开发人员学习和理解实现并运行一个最基础的系统所遵循的基本流程。在STM32微控制器上运行tinyML模型,有5个必要步骤:

1、捕获数据
2、标记数据
3、训练神经网络
4、转换模型
5、在微控制器上运行模型

捕获、标记和训练“Hello World”模型

关于捕获和标记用于训练模型所需的数据,开发人员通常有许多选择。首先,有大量的线上训练数据库。开发人员可以搜索他人收集和标记的数据。例如,对于基本的图像检测,有CIFAR-10或ImageNet。如需训练模型来检测照片中的微笑,也有一个图像集。从在线数据存储库开始显然是不错的选择。

如果所需的数据尚未在互联网上公开,开发人员也可以生成自己的数据。可以使用Matlab或其他工具来生成数据集。如果不能自动生成数据,也可以手动完成。最后,如果觉得这些都太耗时,也可在互联网上购买数据集。收集数据往往是最令人兴奋和有趣的选择,但也最费事。

这里探讨的“Hello World”示例展示了如何训练模型来生成正弦波并将其部署到STM32上。这个示例由Pete Warden和Daniel Situnayake整理,当时他们在谷歌开展TensorFlow Lite for Microcontrollers工作。这样一来,工作变得更容易,因为他们已经整理出了简单的捕获、标记和训练模型的公开教程。可以在Github上找到(点击此处);打开链接后,开发人员应点击“Run in Google Colab”(在Google Colab中运行)按钮。Google Colab是Google Collaboratory的简称,它允许开发人员在浏览器中编写和执行Python,无需配置,并提供对Google GPU的免费访问。

浏览训练示例将输出两个不同的模型文件;一个是为微控制器量化的model.tflite TensorFlow模型,一个是没有量化的model_no_quant.tflite模型。量化可以表明如何以数字方式存储模型的激活和偏置。量化后可以得到更小的模型,更适合于微控制器。好奇的读者可以在图2中查看训练过的模型结果与实际正弦波结果的对比。模型的输出以红色显示。正弦波输出并不完美,但对“Hello World”程序而言,其效果已经很好了。

“图2:TensorFlow模型正弦波预测与实际值的对比。(图片来源:Beningo
图2:TensorFlow模型正弦波预测与实际值的对比。(图片来源:Beningo Embedded Group)

选择开发板

在研究如何转换TensorFlow模型以便在微控制器上运行之前,需要选择该模型中部署的微控制器。本文将重点介绍STM32微控制器,因为STMicroelectronics公司有许多tinyML/ML工具,可以很好地转换和运行模型。此外,STMicroelectronics有多种与其ML工具兼容的元器件(图3)。

“图3:图示为STMicroelectronics
图3:图示为STMicroelectronics AI生态系统目前支持的微控制器和微处理器单元(MPU)。(图片来源:STMicroelectronics)

如果办公室里有这样一块开发板,就非常适合启动和运行“Hello World”应用。然而,如果对本例之外的应用感兴趣,想要了解手势控制或关键词识别,可以选择STM32 B-L4S5I-IOT01A开发套件物联网节点(图4)。

该开发板带有STM32L4+系列Arm Cortex®-M4处理器。该处理器有2MB闪存和640KB RAM,为tinyML模型提供了充足的空间。该模块还带有STMicroelectronics的MP34DT01微机电系统 (MEMS) 麦克风,可用于关键词识别的应用开发,适用于tinyML用例实验。此外,同样来自STMicroelectronics的板载LIS3MDLTR三轴加速计,可用于基于tinyML的手势检测。

“图4:STM32
图4:STM32 B-L4S5I-IOT01A开发套件物联网节点搭载Arm Cortex-M4处理器、MEMS麦克风和三轴加速计,是适应性tinyML实验平台。(图片来源:STMicroelectronics)

使用STM32Cube.AI转换和运行TensorFlow Lite模型

凭借可以运行tinyML模型的开发板,开发人员现在可以开始对TensorFlow Lite模型进行转换,以便在微控制器上运行。TensorFlow Lite模型可以直接在微控制器上运行,但需要一个运行时环境来处理它。

运行模型时,需要执行一系列的功能。这些功能首先收集传感器数据,然后筛选,提取必要特征,并反馈给模型。该模型输出结果,然后对结果进一步筛选,通常还会再进行一些操作。图5显示了该过程的概况。

“图5:数据如何从传感器流向运行时,再到tinyML应用的输出。(图片来源:Beningo
图5:数据如何从传感器流向运行时,再到tinyML应用的输出。(图片来源:Beningo Embedded Group)

STM32CubeMx的X-CUBE-AI插件提供了解释TensorFlow Lite模型的运行时环境,并提供了开发人员可以利用的替代运行时和转换工具。X-CUBE-AI插件在项目中默认不启用。然而,在创建新项目并初始化电路板后,在Software Packs-> Select Components(软件包-> 选择组件)下,有一个启用AI运行时的选项。这里有几个选项;确保本例中使用的是Application模板,如图6所示。

“图6:X-CUBE-AI插件需要使用本例的应用模板来启用。(图片来源:Beningo
图6:X-CUBE-AI插件需要使用本例的应用模板来启用。(图片来源:Beningo Embedded Group)

启用X-CUBE-AI后,STMicroelectronics X-CUBE-AI类别将出现在工具链中。点击该类别,开发人员能选择自己创建的模型文件并设置模型参数,如图7所示。可通过分析按钮对模型进行分析,并为开发人员提供RAM、ROM和执行周期信息。强烈建议开发人员比较Keras和TFLite模型选项。在较小的正弦波模型示例中,没有显著差异,但却可以发现其中的区别。点击“Generate code”(生成代码)可生成该项目。

“图7:分析按钮为开发人员提供RAM、ROM和执行周期信息。(图片来源:Beningo
图7:分析按钮为开发人员提供RAM、ROM和执行周期信息。(图片来源:Beningo Embedded Group)

代码生成器将初始化项目,并为tinyML模型构建运行时环境。但默认情况下,不会为模型提供输入。开发人员需要添加代码,为模型提供输入值 — x值,模型将解释该值并生成正弦y值。如图8所示,需要在acquisition_and_process_data和post_process函数中增加几段代码。

“图8:所示代码将连接伪输入传感器值到正弦波模型。(图片来源:Beningo
图8:所示代码将连接伪输入传感器值到正弦波模型。(图片来源:Beningo Embedded Group)

此时,本例运行就绪。注意:添加一些printf语句来获取模型输出,以便快速验证。快速编译和部署能让“Hello World”tinyML 模型运行。获取整个周期的模型输出得到图9所示的正弦波。它并不完美,但对于首个tinyML应用来说非常优秀。由此,开发人员可以将输出与脉冲宽度调制器 (PWM) 联结起来,并产生正弦波。

“图9:在
图9:在 STM32上运行时的“Hello World”正弦波模型输出。(图片来源:Beningo Embedded Group)

嵌入式系统上的ML技巧和窍门

开发人员若要在基于微控制器的系统上开始使用ML,需要做相当多的工作,才能让自己的首个tinyML应用运行起来。然而,记住几个“技巧和窍门”,可以简化和加快其开发:

  • 浏览TensorFlow Lite for Microcontrollers的“Hello World”示例,包括Google Colab文件。花点儿时间调整参数,了解这些参数对经过训练的模型的影响。
  • 在微控制器应用中使用量化模型。量化模型经过压缩,可以使用uint8_t而非32位浮点数。因此,该模型更小,执行速度更快。
  • 了解TensorFlow Lite for Microcontrollers资源库中的其他示例。其他示例包括手势检测和关键词检测。
  • 以“Hello World”为例,将模型输出连接到PWM和低通滤波器上,以查看产生的正弦波。执行运行时实验,增加和减少正弦波频率。
  • 选择包括“额外”传感器的开发板,以便尝试广泛的ML应用。
  • 尽管收集数据很有趣,但一般来说,购买或使用开源数据库来训练模型更容易。

开发人员遵循这些“技巧和窍门”,可以在确保应用安全的同时节省更多的时间并省去更多的麻烦。

本文小结

机器学习已经蔓延至网络边缘,而基于资源受限微控制器的系统是其主要目标。最新的工具可以转换和优化机器学习模型,以在实时系统上运行。如图所示,在STM32开发板上实现和运行模型相对容易,但也会涉及复杂性问题。虽然只探讨了产生正弦波的简单模型,但也可以实现更复杂的模型,如手势检测和关键词识别。

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

围观 38

页面

订阅 RSS - STM32