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微控制器的性能和功能优势。

STM32芯片主要由内核和片上外设组成,STM32F103采用的是Cortex-M3内核,内核由ARM公司设计。STM32的芯片生产厂商ST,负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设,如 GPIO、USART(串口)、I2C、SPI 等。

1.png

芯片内部架构示意图

芯片内核与外设之间通过各种总线连接,其中驱动单元有 4 个,被动单元也有 4 个,具体如上图所示。可以把驱动单元理解成是内核部分,被动单元都理解成外设。

ICode 总线

ICode总线是专门用来取指令的,其中的I表示Instruction(指令),指令的意思。写好的程序编译之后都是一条条指令,存放在 FLASH中,内核通过ICode总线读取这些指令来执行程序。

DCode总线

DCode这条总线是用来取数的,其中的D表示Data(数据)。在写程序的时候,数据有常量和变量两种。常量就是固定不变的,用C语言中的const关键字修饰,放到内部FLASH当中。变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。

系统System总线

我们通常说的寄存器编程,即读写寄存器都是通过系统总线来完成的,系统总线主要是用来访问外设的寄存器。

DMA总线

DMA总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部FLASH。

因为数据可以被Dcode总线,也可以被DMA总线访问,为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

内部的闪存存储器Flash

内部的闪存存储器即FLASH,编写好的程序就放在这个地方。内核通过ICode总线来取里面的指令。

内部的SRAM

内部的SRAM,是通常所说的内存,程序中的变量、堆栈等的开销都是基于内部SRAM,内核通过DCode总线来访问它。

FSMC

FSMC的英文全称是Flexible static memory controller(灵活的静态的存储器控制器)。通过FSMC可以扩展内存,如外部的SRAM、NAND-FLASH和NORFLASH。但FSMC只能扩展静态的内存,不能是动态的内存,比如就不能用来扩展SDRAM。

AHB

从AHB总线延伸出来的两条APB2和APB1总线是最常见的总线,GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上。这个是学习STM32的重点,要学会对这些外设编程,去驱动外部的各种设备。

来源:ittbank

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

围观 34
WiFi6/Bluetooth®低功耗蓝牙5.3/Thread ST67W611M1模块加快开发进度,提高设计灵活性,提供先进的消费和工业物联网解决方案

意法半导体(简称ST)推出了与高通技术公司(Qualcomm)战略合作的首款产品,新产品可以简化下一代工业和消费物联网无线解决方案开发过程。此项合作的初期目标是依托意法半导体的强大的STM32生态系统,借助高通技术公司领先的无线连接解决方案,为消费和工业市场推出无线物联网模块。

1738829363871890.jpg

第一款模块ST67W611M1包含一个Qualcomm® QCC743多协议连接系统芯片(SoC),预装了Wi-Fi6、Bluetooth 5.3 qualified和Thread combo协议,可以与任何一款STM32微控制器(MCU)或微处理器(MPU)轻松集成。该模块将支持Wi-Fi上的Matter协议,可以实现面向未来的无线连接,让STM32产品组合能够顺利进入Matter生态系统。为了方便系统集成,该模块还包含4MB的代码和数据闪存,以及一个40MHz晶振。此外,模块还配有一个集成的PCB天线或微型RF(uFL)外部天线连接器。

意法半导体微控制器、数字IC和射频产品部(MDRF)总裁Remi El-Ouazzane表示:“我们的合作为使用STM32系列设计嵌入式系统的广大开发者带来了多重优势。现在,产品开发者可以轻松获得高通的极具影响力和使用广泛的无线连接技术和STM32开发生态系统强大的软件、工具和功能,以及加快项目进度的优势。”

高通技术公司连接、宽带和网络业务部总经理Rahul Patel表示:“我们的使命才刚刚开始,我们预计这一合作将会产生更多的成果,为新的先进的边缘处理应用赋能,我们期待与意法半导体继续合作,通过Wi-Fi、蓝牙、AI、5G等技术为用户带来更多无与伦比的连接体验。”

模块内置高级硬件安全功能,包括硬件加密加速器以及安全启动和安全调试等服务,达到PSA认证的1级保护。该模块是一个独立的产品,根据强制性规范进行了预认证,没有要求开发者必须具备射频设计专业知识。该模块在32引脚LGA封装内集成了许多功能,可直接安装在电路板上,可以使用简单的低成本的两层 PCB电路板。

ST67W611M1依托STM32生态系统。该生态系统包含4,000多款产品、强大的 STM32Cube工具和软件,以及促进边缘人工智能开发的软硬件,其中包括最近推出的STM32N6 MCU和ST Edge AI Suite软件。STM32N6 MCU集成了意法半导体自研的神经网络处理器Neural-ART Accelerator;ST Edge AI Suite提供AI Model Zoo模块库以及STM32Cube.AI和NanoEdge AI优化工具。

这些模块的设计意图是与任何STM32微控制器或STM32微处理器快速集成,为客户提供灵活、广泛的性能、价格和功耗选择。现有微控制器产品系列齐全,低中高端应用市场全覆盖,有搭载Arm® Cortex®-M0+内核的成本和功耗敏感的产品,还有基于高性能内核的微控制器,例如,搭载Cortex-M4和Cortex-A7的STM32MP1/2 MPU。

ST67W611M1样片现已上市,2025年第一季度开始为OEM供货,大众市场供货时间为2025年第二季度。若要申请样品和询价,请联系当地的意法半导体销售办事处。

点击此处,查看详情

来源:意法半导体中国

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

围观 43

觉得简单,说明ST成功了

当年STM32是怎么在众多单片机里脱颖而出的?因为有库函数这个东西。

在这之前,单片机主要是51、AVR、PIC、MSP430这些玩意,就是写个UART通信函数,都要先去搜索下别人的代码“借鉴”一下,发现别人写得不完全满足需求又自己修改,然后慢慢地积累出自己的一套库,在换下一款单片机的时候这几年的积蓄发现又用不上。

ST半导体搞这个库函数,不就是为了降低开发门槛么?开发库相关文章:STM32标准库、HAL库特点与应用。

让开发者专注于更抽象的应用而不需要太关注单片机底层的东西才是大趋势,ST抓住这个趋势先发制人才得以迅速占领市场。

什么?直接写寄存器?汇编?这种炫技的东西绝大多数STM32的目标应用都不需要。什么成本敏感?成本敏感谁选STM32啊。大把几毛钱一颗,却只能用汇编编程的单片机,可以去了解一下。

入坑STM32,我们要学习什么

  • 做一个键盘/鼠标,可以学习USB协议

  • 做一个联网设备,需要学习以太网,TCP/IP协议的底层实现

  • 做一个无线设备,可能需要学习蓝牙、WIFI或者zigbee的协议

而最终的应用,可能不一定有库或者包,需要自己去写底层。如果用模块,则可能需要学习SPI、I2C或者SDIO接口去连接模块。

做一个平衡小车,需要学习PID算法,相关项目请移步:STM32平衡自行车项目,你也可以试试!文末附代码。

做一个摄像头能需要学习SCCB协议,如果想深入一些,可能需要学习一些图像处理的知识。

如果这个摄像头要连接PC,做更深度的处理,则需要学习上位机的编写,可能需要设计协议或者写一个服务器,此时可能需要学习开发服务器的知识,以及一门写服务器的语言,包括不限于C++/Java/python/nodeJs。服务器框架可能也要学一个。服务器都有数据库,学习个简单的nosql吧,当然mysql和oracle也可以。

上位机要是需要图形界面,最简单的可能是C#,当然C++调用win32 API更好。

如果要做人脸识别、图形分割,还需要机器学习的知识,可能需要python和tensorflow / pytorch框架,当然其他语言也可以,但可能更复杂,而机器学习,基础是数学,嗯~,很难的那种。

现在都是手机端操作,Android可能学一下,Java走起。如果碰巧手机是苹果的,objective-c学起来。

如果继续深入,做一个更复杂的设备,首先需要自己设计板子。这时候PCB设计需要学,模电数电需要学,电路原理更需要学。

软件层面,可能发现裸机已经不够用了,可能需要学习ucos/freeRTOS之类的操作系统,甚至自己学习写一个操作系统内核。如果这个系统要求健壮、高效,需要深入理解操作系统、数据结构、算法、优化、汇编语言等。

上述种种内容还不少,不知不觉已经学习了计算机科学的一部分了,对计算机科学有了基本的了解了。

如果大家觉得这是强行关联,其实不是。综上所述,只是用STM32做了一个处理单元放在服务器端的小机器人,能保持平衡、识别人脸、能在PC端和手机端控制而已。

语音识别、对话系统等功能还没说,这些可能需要更多自然语言处理、乃至强化学习的知识,你发现,往往效果不尽如人意,这不是你技术不好,而是这个世界的瓶颈,恭喜,可以看论文、写论文,为人类在计算机、人工智能领域的突破做贡献了。

什么?想要把运动单元做波士顿动力那样的?这事情就更复杂了,不然你以为我怎么入坑的?有个波士顿机器人的视频,看这里:波士顿机器人一直被欺负,最后忍无可忍。

当技术往深了说

技术深究起来自己都怕,比如刚学习了STM32的cortex架构,那其寄存器、指令集、内存是如何实现的?刚了解这些,那其锁存器是哪一种,取指与解码过程是怎样的?加法器又怎么实现?刚了解三极管和布尔逻辑运算,那三极管是怎么工作的?刚了解PNP和NPN,那共射特性曲线是怎样的?为什么载流子会运动,正偏反偏是什么?为什么磷、硅、硼作为半导体材料,会形成电子流动?空穴是否能流动?

重点不是STM32能做什么,而是我们能用STM32做什么?能做什么程度的产品,市场竞争力如何,甚至考虑是否满足了用户未被满足的需求,也就是填补了市场空白。技术并不是独立的,而是拓扑的。

来源:STM32嵌入式开发

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

围观 30

WiFi6/Bluetooth®低功耗蓝牙5.3/Thread ST67W611M1模块加快开发进度,提高设计灵活性,提供先进的消费和工业物联网解决方案

服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM) 推出了与高通技术公司(Qualcomm)战略合作的首款产品,新产品可以简化下一代工业和消费物联网无线解决方案开发过程。此项合作的初期目标是依托意法半导体的强大的STM32生态系统,借助高通技术公司领先的无线连接解决方案,为消费和工业市场推出无线物联网模块。

1734938311727271.jpeg

第一款模块ST67W611M1包含一个 Qualcomm® QCC743 多协议连接系统芯片 (SoC),预装了 Wi-Fi6、Bluetooth 5.3 qualified和Thread combo协议,可以与任何 一款STM32微控制器 (MCU) 或微处理器 (MPU)轻松集成。该模块将支持Wi-Fi上的Matter协议,可以实现面向未来的无线连接,让STM32产品组合能够顺利进入Matter生态系统。为了方便系统集成,该模块还包含4MB的代码和数据闪存,以及一个40MHz晶振。此外,模块还配有一个集成的PCB天线或微型 RF (uFL) 外部天线连接器。

意法半导体微控制器、数字 IC 和射频产品部 (MDRF) 总裁 Remi El-Ouazzane 表示:“我们的合作为使用STM32 系列设计嵌入式系统的广大开发者带来了多重优势。现在,产品开发者可以轻松获得高通的极具影响力和使用广泛的无线连接技术和STM32开发生态系统强大的软件、工具和功能,以及加快项目进度的优势。”

高通技术公司连接、宽带和网络业务部总经理Rahul Patel表示:“我们的使命才刚刚开始,我们预计这一合作将会产生更多的成果,为新的先进的边缘处理应用赋能,我们期待与意法半导体继续合作,通过 Wi-Fi、蓝牙、AI、5G等技术为用户带来更多无与伦比的连接体验。

模块内置高级硬件安全功能,包括硬件加密加速器以及安全启动和安全调试等服务,达到 PSA 认证的 1 级保护。该模块是一个独立的产品,根据强制性规范进行了预认证,没有要求开发者必须具备射频设计专业知识。该模块在32 引脚LGA 封装内集成了许多功能,可直接安装在电路板上,可以使用简单的低成本的两层 PCB电路板。

ST67W611M1依托STM32生态系统。该生态系统包含4,000多款产品、强大的 STM32Cube工具和软件,以及促进边缘人工智能开发的软硬件,其中包括最近推出的 STM32N6 MCU和ST Edge AI Suite软件。STM32N6 MCU集成了意法半导体自研的神经网络处理器Neural-ART Accelerator;ST Edge AI Suite提供AI Model Zoo模块库以及STM32Cube.AI和NanoEdge AI优化工具。

这些模块的设计意图是与任何STM32微控制器或STM32微处理器快速集成,为客户提供灵活、广泛的性能、价格和功耗选择。现有微控制器产品系列齐全,低中高端应用市场全覆盖,有搭载Arm® Cortex®-M0+内核的成本和功耗敏感的产品,还有基于高性能内核的微控制器,例如,搭载Cortex-M4和Cortex-A7的STM32MP1/2 MPU。

ST67W611M1样片现已上市,2025年第一季度开始为OEM供货,大众市场供货时间为2025年第二季度。若要申请样品和询价,请联系当地的意法半导体销售办事处。

产品详情访问 www.st.com/st67w

还可以查阅10月的新闻稿: STMicroelectronics and Qualcomm enter strategic collaboration in wireless IoT

关于意法半导体

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

围观 28
01、简介 

STM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。

本文将以手势识别为例,介绍Model Zoo的使用。

02、环境安装 

详细的安装步骤可以参考ST的wiki页面

2.1. 设置代理等环境变量 

为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:

1733707647769729.png

注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。

2.2. 安装 STM32Cube.AI 

可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。

  • 如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。

  • 如果使用本地,可以通过CubeMX进行安装。

2.3. 安装STM32 model zoo 

可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo

1使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git

2. 使用zip:从git仓库中下载zip压缩包,解压即可。

2.4. 安装Python环境 

如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。

2.5. 安装STM32CubeIDE

需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。

2.6. 更新yaml文件 

Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。

注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/

03、手势识别应用

手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。

1733707757754804.png

▲ 图1. 部署环境和开发板 

3.1. 数据集 

手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:

1733707784510161.png

▲ 图2. 手势数据集 

也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址

1733707808288780.png

▲ 图3. 手势数据采集和标记工具 

3.2. 配置 

在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。

3.2.1. 训练 

操作模式operation_mode的配置 

操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。

5.png

▲ 图4. 选择模式 

数据集的配置:

1733707848933633.png

▲ 图5. 数据集配置 

数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。

预处理和数据增强的配置:

1733707875217443.png

▲ 图6. 预处理和数据增强

preprocessing: 

  • Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。

  • Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。

  • Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。

data_augmetation: 

使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。

训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。

1733707901844888.png

▲ 图7. 训练参数的配置

3.2.2. 评估 

操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:

1733707928757240.png

▲ 图8. Tools的配置 

on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。

path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。

3.2.3. 部署 

操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:

1733707946467794.png

 ▲ 图9. 部署相关的配置

3.3. 运行脚本 

在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。

3.3.1. 模型训练 

直接运行脚本:

➢ python stm32ai_main.py 

或者指定模式运行脚本:

➢ python stm32ai_main.py operation_mode=”training” 

训练过程中的输出结果:

1733707982896778.png

▲ 图10. 训练中的输出结果

1733708017686368.png

▲ 图11. 混淆矩阵 

训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。

3.3.2. 可视化训练结果 

进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: 

➢ tensorboard --logdir logs 

打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。  

1733708051425773.png

▲ 图12. 准确率曲线 

也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:

➢ mlflow ui

1733708104531600.png

▲ 图13. Mlflow界面

3.3.3. 模型评估 

将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:

➢ python stm32ai_main.py operation_mode=”evaluation”

1733708124778970.png

▲ 图14. 配置文件和模型评估结果 

3.3.4. 基准测试 

在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:

➢ python stm32ai_main.py operation_mode=”benchmarking” 

如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:

1733708153735912.png

▲ 图15. 配置文件和基准测试

3.4. 部署 

连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:

➢ python stm32ai_main.py operation_mode=”deployment”

1733708171554870.png

▲ 图16. 部署流程 

3.5. 总结 

本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。

来源:STM32

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

围观 60

页面

订阅 RSS - STM32