自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (13)
  • 收藏
  • 关注

原创 STM32H5 的 PB14 引脚被意外拉低的问题解析

摘要:STM32H523RET6应用中配置PC9为输出、PB14为输入时,发现PC9输出高电平时PB14被意外拉低。经分析,这是由于STM32H5默认激活了UCPD的Dead Battery功能,当PC9(复用为UCPD1_DBCC2引脚)电压超过1V时,会激活内部下拉电阻将PB14拉低。解决方案包括在代码中禁用DB功能(HAL_PWREx_DisableUCPDDeadBattery()),并建议在PC9外接100K下拉电阻。该问题在STM32G0中可通过CubeMX配置,而STM32H5的CubeMX版

2025-10-22 14:42:46 1171

原创 KEIL 环境下 printf 导致程序无法执行的解决方案

摘要:在MDK Keil环境下调用printf函数导致程序卡在BKPT指令的问题,是由于未启用MicroLIB时默认使用Semihosting机制与调试器交互所致。解决方法包括:1)启用CMSIS-Compiler CORE组件;2)将STDOUT设置为Custom选项并实现用户接口;3)重新编译后程序即可正常运行。该方法避免了Semihosting依赖,适用于无法使用MicroLIB的场景。

2025-10-22 14:41:32 911

原创 STM32N6 平台如何使用 MCO2 输出 Clock

STM32N6 是 ST 第一款带 NPU 的基于 Cortex-M55 内核的 MCU,在 STM32N6 开发过程中,有客户遇到 MCO2 无输出问题,他们使用 24MHz 外部晶振,使用 RCC HAL API HAL_RCC_MCOConfig 设置 MCO2 输出,参数选择 RCC_MCO2, RCC_MCO2SOURCE_HSE, RCC_MCODIV_1,期待获得 24MHz 输出波形,但 MCO2 管脚一直没有输出。这里,我们发现 MCO2 (PC9) 管脚是由 VDDIO4 独立供电的。

2025-04-17 14:00:10 787

原创 STM32CubeIDE 实用技巧之条件断点的妙用

在嵌入式项目中,我们经常会碰到各种各样的异常和故障,比如客户说,某个问题可能需要一天,一周,甚至以月为周期才能复现一次问题。诸如此类问题,着实令工程师苦恼,因为很难去捕获信息来分析和复现问题,这里给大家分享一些我的经验和技巧。

2025-04-17 09:40:39 1509 1

原创 两个 STM32G0 I2C 通信异常的案例分析

后面让客户用示波器抓取 SCL 波形,并且建议在 I2C GPIO 配置为开漏模式时测量上升沿上升的时间,如下图三,在上拉电阻为 4.7K 时,Rise time 是 180ns 左右,符合规格书要求。但问题是功耗变大,客户不接受改小上拉电阻。如上图寄存器状态看,确实是发生了 BERR 错误,并且示波器抓的图形看,发现最后一个NACK 的上升沿变化时,SCL 看起来是为高的。进一步的分析是看谁把 SDA 的电平拉低,建议客户在 SCL,SDA 线路接电阻测量出问题时,I2C 主从两端的电压变化。

2025-04-16 11:42:54 2164

原创 Cortex-M核除0操作的报错机制话题

除 0 操作属于错误操作,在 ARM Cortex M 平台上会有相应的报错机制。但这边会涉及到整型数的除 0 以及浮点数的除 0,另外还会涉及错误产生后的报错机制,是中断还是错误位,本文会对这个报错机制加以说明。使用 STM32H723 做为测试芯片。

2025-04-16 11:08:55 360

原创 如何通过DMA配合CRC功能

STM32 的 CRC 外设是用来实现 CRC 计算的硬件单元,硬件实现 CRC 计算相对于软件算法实现来说,可以大大提高运算速度。CRC 计算单元具有单个 32 位读/写数据寄存器(CRC_DR)。它用于输入新数据(写访问)并保存以前的 CRC 计算结果(读访问)。当 DMA用作数据传输处理器时,可以极大地减轻 CPU 负荷。本文以 STM32G474 为例,介绍如何通过 DMA 配合 CRC 计算,以供读者参考。

2025-04-15 14:13:00 1241

原创 STM32C0 HAL 库的 SPI 驱动导致的 Hardfault 问题分析

在项目开发中使用 STM32C071 作为主控 MCU,驱动代码使用了版本STM32Cube_FW_C0_V1.2.0,应用程序调用 SPI HAL API 与 NFC 模块通信,SPI 工作在Master 模式,调用 HAL_SPI_Transmit 函数发送数据的时候,出现 Hardfault 现象,同时客户反馈同样的应用程序代码在 STM32G0 平台上,没有出现类似的问题,客户不得其解。根据客户反馈的现象,本文分析其原因以及解决方法。

2025-04-15 08:40:25 863

原创 SPI 传输长度超过 1024 时出现异常的问题分析

使用 STM32U595QII6Q 开发产品时发现,使用该芯片的 SPI3 与对方通信时,如果发送的数据超过 1024 字节时,SPI3 作为主设备,使用 HAL 库的 SPI 相关发送函数,发送完成回调函数不会执行。因为依据手册,对于 SPI3,最大支持的长度为 1023 字节,而 1024 字节超过了最大长度,因此设置失败。单步调试发现,在函数 HAL_SPI_TransmitReceive_DMA,执行以下代码片段时,修改 CR2 寄存器失败,因此 CR2 的值一直未 0。

2025-04-14 13:50:52 522

原创 STM32G0 单线串口通信帧错误问题解析

所以在这个单线串口的设计中,STM32G0 要保持和 STM32L433 的配置一致,也就是上面提到的 GPIO 下拉,TX,RX 通过软件切换并且 TX,RX 电平反向。客户的答复是这是保留上一代产品的设计,新一代的产品设计只是因为成本,将两颗 MCU中的一颗 MCU 更换为了 STM32G0,而原来 STM32L433 上的软件是不能更改的。对于客户奇怪的单线串口设计,我们首先的疑问是为什么不直接使用参考手册提供的现成的单线串口半双工通信方法,而是要自己去实现一套软件切 TX,RX 的单线半双工通信。

2025-04-14 13:39:27 1426

原创 高精度定时器如何实现 PWM 零满占空比的连续切换

在《高精度定时器如何输出零占空比与满占空比 PWM 波形》一文中,我们分享了在高精度定时器中 PWM 输出零占空比和满占空比的方法,但是在实际的应用中还会存在零占空比和满占空比连续切换的情况,在原有的 PWM 发波方式上,若是采样 up-down count 模式的话要实现这种连续切换会存在一些问题,本文将分析相关问题,并给出更加合适的方案来实现 PWM 零-满占空比的连续切换。

2025-04-11 09:02:58 1039

原创 在 STM32 中实现电机测速的方法介绍

在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有 M 法测速和 T法测速。M 法测速是利用在规定时间 Ts 内编码器输出脉冲数量 M1 计算电机转速,如下图所示,信号 A 和 B 为正交编码器的输出信号,C 解码后的计数脉冲(4x)。单位时间(1s)内编码器输出脉冲数量,即脉冲频率:𝑓𝑐 = 𝑀1⁄𝑇𝑠假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为 Z,则电机转速为:r/min 代表圈/分钟。

2025-04-11 08:53:40 2348

原创 奇怪的 NRST 管脚异常复位问题

MCU 内部是远比 MCU 外部电路更复杂的微电子电路,内部线路间距小,不同功能间可能只是由电子开关或多路复用器做选择,当高频干扰进入 MCU 后,干扰可以在看似不直接相连的电路间耦合而影响 MCU 的正常工作。重要的是避免干扰进入 MCU。在排查干扰传递的路径时,不要将目光局限于直接相连的电路或管脚。

2024-04-19 15:48:34 1981

原创 简谈 BlueNRG-LP 和-LPS 的代码空间优化

Linker 中可定义一些宏、用于指定链接脚本文件所需的配置。这些宏定义不作用于.c文件或者.h文件,只作用于链接文件(.icf 或者.sct 或者 *.ld)。SDK 中默认提供了 4 种默认配置的协议栈加一种自定义的协议栈配置(BLE_STACK_CUSTOM_CONF),如下图所示。上述 5 种不同协议栈的配置,本质上就是通过使用宏控制不同的特性功能是否打开。只是前面 4种提供了默认便捷的设置,而最后一种可以进行细粒度更细的自定义的协议栈。

2024-04-19 14:44:51 1218

原创 关于蓝牙连接参数更新进程后导致断连的问题分析

通常客户在做低功耗蓝牙模块设计的时候,如果蓝牙模块在实际使用场景中和手持移动设备(如手机等)绑定使用的话,往往会非常注意蓝牙模块与不同品牌、不同型号的手机的兼容性测试。这些测试项目可能包括长时间连接状态的保持,频繁建立连接,或主动断连后再次建立连接等场景。

2024-04-18 16:20:50 1227

原创 BlueNRG-X 原理图参数说明

为了让客户在原理图设计阶段少走弯路,我这里结合客户评估和设计阶段常遇到的问题,整理了一下 BlueNRG-1/-2 相关设计及注意事项以备客户解惑用。

2024-04-18 16:12:00 1161

原创 STM32芯片软复位导致SRAM2的值被擦除话题

客户在使用 STM32L433CCY6 开发过程中,出现软件复位后 SRAM2 里的值被擦除问题。

2024-04-16 14:05:49 1288

原创 程序运行在 STM32H750 的外扩 FLASH 上两小时后死机

客户使用 STM32H750VBT6,通过 QSPI 外扩了一个 4M 的 NOR FLASH,采用memory map 模式。当程序跳转运行到外设 FLASH 后,大约两个小时后程序死机。客户使用的 IDE 是 KEIL,此问题可以固定重现。在 KEIL 调试模式下重现问题时,通过多次观察发现,程序死的位置总体上会停在两个位置,并不是同一个位置。一个是 TIM15函数的入口;另一个是进入中断函数后的一个赋值语句。

2024-04-16 09:01:39 2223

原创 STM32 SPI NSS 功能的灵活应用案例

某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。

2024-04-15 11:36:55 1302

原创 通过 LSE 校准 HSI 偏差大的问题解决

某客户使用 STM8AL 时,由于设计限制需使用 HSI 作为系统时钟。为减小 HSI 偏差,使用 LSE 对其进行校准。小批量试产发现 3%左右产品校准后频率和 16MHz 偏差较大。

2024-04-15 11:26:10 885

原创 如何理解 RAMECC FAR 寄存器的值

某客户测试 STM32H753xi 板子上的 ECC 功能,用于监控 AXI-SRAM 区域,但不是很明白 RAMECC FAR 寄存器在 RM0433 中的描述, “Bits 31:0 FADD[31:0]: ECC error failing address”。比如在 AXI-SRAM 中,如果客户示例显示的是 FAR = 0x2004,但是这个地址值 0x2004 并不在 AXI-SRAM 范围之内,客户该如何理解 FAR 寄存器?

2024-04-13 14:22:22 1060

原创 关闭 SPI 会导致 WRPERR 错误的问题分析

在 STM32 的应用中,SPI 算是用的比较多的外设了,也是单片机最常见外设之一。客户说它执行了关闭 SPI 的代码,竟然会导致 Flash 中的 WRPERR 标志置位,致使应用碰到一些问题。这就奇怪了,SPI 和内部 Flash 看起来是风马牛不相及的事情,为什么会发生这种事呢?一起来看看吧。

2024-04-13 14:01:52 1260

原创 高精度定时器中 single-shot 计数模式不工作

客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时器无 PWM 输出,在调试模式下发现该子定时器的计数器一直为 0,即计数器一直没有启动,但如果将计数方式修改为continuous 模式,其他保持不变,定时器工作正常。

2024-04-12 20:04:09 1092

原创 STM32 DCMI 的带宽与性能介绍

随着市场对更高图像质量的需求不断增加,成像技术持续发展,各种新兴技术(例如3D、计算、运动和红外线)的不断涌现。如今的成像应用对高质量、易用性、能耗效率、高集成度、快速上市和成本效益提出了全面要求。为了满足这些要求,STM32 MCU 内置的数字照相机接口(DCMI),能够高效连接并行照相机模块。对于使用 STM32 DCMI 开发相机应用的客户,经常有以下问题:STM32 DCMI 最大支持的像素时钟是多少?STM32F4/F7/H7/U5 能支持 1280×720 的相机分辨率吗?最大的帧率是多少?

2024-04-12 18:27:50 1808

原创 在 Keil 中使用 STM32CubeProgrammer

STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。

2024-04-12 11:20:47 1281

原创 TouchGFX 控件附加 ClickListener 功能的方法介绍

模板一般分为函数模板和类模板。函数模板我们这里不做赘述,重点关注 TouchGFX Mixins 类模板。TouchGFX 的 Mixins 类模板用于拓展控件的功能,目前 TouchGFX v4.20.0 中有四个 Mixin 功能,分别是 Draggable、ClickListener、FadeAnimator 和MoveAnimator,分别为控件增添相关功能。如图 1 (TouchGFX Designer Mixins 功能)所示,本文主要针对 ClickListener 做具体介绍。

2024-04-12 09:21:55 994

原创 使用 NANOEDGE.AI 工具完成人体姿态识别应用

NanoEdge™ AI 库是 Cartesiam 推出的人工智能静态库,它可以帮助客户直接生成可以运行在嵌入式 Arm Cortex 处理器上的.a 静态库文件。2021 年 ST 收购 Cartesiam,完善了 ST 在 AI 领域的生态,大大降低了客户使用 STM32 开发 AI 应用的难度。通过使用 NanoEdge AI Studio,用户只需要了解基本的 AI 概念,并提供相应的数据,便可以从众多 AI 算法库中智能搜索和生成出最符合用户应用的算法。

2024-04-11 11:13:24 2499 1

原创 通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法

随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。

2024-04-11 08:43:47 2007

原创 BlueNRG系列芯片Flash操作与BLE事件的互斥处理

在许多基于 BlueNRG-1/2 系列芯片的低功耗蓝牙的设计项目时,客户通常会在 Flash的特定区域存储定制的数据。然而需要特别注意的是,在 BlueNRG-1/2 方案中,用户对Flash 的读写操作必须在射频空闲的情况下进行,两者是互斥的关系。

2024-04-10 14:31:22 1435

原创 Arm-v7-M 架构的 STM32 如何启用 DWT 计数

客户在使用 STM32H7 的时候,想要使用 DWT 计数来测量代码执行时间,评估执行效率。客户发现在重新上电或 reset 后,无法启用 DWT 进行计数。

2024-04-10 13:42:30 608

原创 如何选择和设置外部晶体适配 BlueNRG-X

鉴于经常有客户对如何选择外部低速晶体,如何测试外部 32khz 时钟,如何直接使用外部32khz 信号源 以及 如何选择外部高速晶体,如何测试和校准频偏存在诸多困惑,我整理了该文档以备解惑用。

2024-04-09 09:14:43 1072

原创 关于 BlueNRG-2 在低功耗模式下的端口保持

BlueNRG-2 作为一款高性能低成本的低功耗蓝牙 SoC 解决方案,实现了在有限的资源下兼容蓝牙 5.2 协议的功能。客户在使用 BlueNRG-2 芯片设计产品时,通常会将其当作方案中的主控芯片来用,控制外围器件,最常见的应用就是使用 GPIO 输出高低电平控制外部器件或作为某些器件的开关使能信号,本文讨论下 BlueNRG-2 在低功耗模式下,客户关于 GPIO 口使用上的一些常见问题。

2024-04-09 09:13:59 804

原创 BlueNRG-X 如何实现外部天线和 PA 的控制

BlueNRG-1 提供了 ANATEST1(用于 QFN32 封装(PIN 14)和 WCSP34 封装(PIN D4)), 它可以提醒未来的发送或接收事件。对于其它GPIO 的使用,在原理图设计阶段也需要关注表中在低功耗模式下的默认值。关于外加 PA 的实现,本文以 RFX2401C 和 RT201 为例进行硬件和软件配置的说明;关于 WIFI 和 BLE 共用一个天线,本文以 BlueNRG-1 为例进行硬件和软件配置的说明,希望通过以上的例子能够给客户在相关应用场景的设计提供一个参考。

2024-04-08 13:48:03 1742

原创 PWM 脉宽跟随方案介绍

数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。

2024-04-08 09:13:52 1186

原创 S2-LP 的 FIFO 机制

众所周知,S2-LP 拥有两个数据 FIFO,一个用于数据传送,另外一个用于数据接收,它们各自的长度均为 128 字节。针对普通的小数据量而言,128 字节长度的 FIFO 基本上可以满足大部分应用。但是,随着应用越来越复杂以及对数据量的需求越来越大,128 字节就不够用了,此时就需要对 FIFO 进行管控,才能接收或者发送更多的数据。本文将详细介绍 S2-LP 针对大数量场景时的 FIFO 机制。

2024-04-07 14:28:03 1230

原创 基于 S2-LP 实现 802.15.4g 帧格式的数据透传

S2-LP 硬件上支持 802.15.4g 的帧格式,但是现有的 SDK 包并没有基于该帧格式的示例工程,因此本篇文章将介绍如何实现基于 802.15.4g 帧格式的数据透传。

2024-04-07 14:27:23 1214

原创 如何将普通应用更改为 OTA APP

BlueNRG-LP 方案中提供了 2 种 OTA 的软件框架,分别是 OTA Reset Manager 框架和OTA Service Manager 框架。不同框架下程序在 Flash 的分别位置和区域图 1 所示。图1. OTA 软件升级框架Reset Manager,负责程序的跳转,根据有效标志选择执行 Higher APP 还是 LowerAPP。Higher APP 和 Lower APP 是客户不同版本的应用程序,同一时间运行其后一个升级的版本。

2024-04-06 08:54:26 1083

原创 关于 STM32WL LSE 添加反馈电阻后无法起振问题

客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。

2024-04-06 08:31:00 1058

原创 巧用 STM32CubeIDE 之编译警告

编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。

2024-04-06 08:23:11 1305

原创 AFCI 应用笔记三、使用 mlflow 管理模型

超参数的选择不是一件容易的事情,需要大量的实验以得到稳定可靠的结论。模型实验对数据的质量要求很高,稳定可靠的数据才能得到可靠的结论,否则实际部署会存在较大差异。从文中图中可以看到,不一定采样率越高越好,帧长越长越好,相反,较低的采样率和帧长可以大大节省 Flash 和 Ram 的空间,以及减少推断时间。目前测试进行的实验次数仍然较少,可能得到的结论不一定非常准确,本文中的实验全部使用了相同的数据集和相同的网络模型,以减少评估参数。客户可以根据实际需要,使用更多的模型,更多的测试参数进行实验。

2024-04-05 09:32:08 1582 1

LAT1561-MC-SDK-V6.x软件HSO参数说明-V1.0

内容概要:本文详细介绍了在MC SDK V6.x软件中集成的高灵敏度无传感观测器算法HSO的关键参数配置方法,涵盖电流基值、端电压基值、频率基值、采样延迟、角度补偿因数等核心参数的计算与设置原则,并说明了辅助电压保护功能(回馈与加速电压保护)及软件过流保护的配置策略,旨在帮助开发者正确初始化和调试HSO算法。; 适合人群:从事电机控制开发的工程师,特别是使用ST平台进行无传感器控制算法调试的技术人员,具备一定电力电子与控制理论基础的研发人员。; 使用场景及目标:①指导MC SDK V6.x中HSO算法的初始参数配置;②优化电机控制系统中的电流、电压、频率采样精度与动态响应;③实现稳定的速度闭环控制并避免电流过冲等问题; 阅读建议:本文以具体硬件平台和电机型号为例,建议读者结合自身系统参数对照计算,实际调试时应在Motor Pilot等工具辅助下动态调整关键参数,尤其注意角度补偿因数和采样延迟的现场优化。

2025-11-05

LAT1612-使用DFSDM模拟看门狗做过流保护以及封波应用-V1.0

内容概要:本文介绍了在STM32H723微控制器上利用DFSDM模块实现过流保护(OC)和周期封波(CBC)的联合应用方案。通过配置DFSDM的两个模拟看门狗通道,分别输出Break信号至TIM1和TIM16,结合TIM1的ETR清零功能与TIM16的自动输出使能(AOE)机制,实现OC和CBC双重保护。文章详细说明了DFSDM、TIM1和TIM16的CubeMX配置方法、模拟看门狗寄存器的手动设置、DMA数据传输配置及内存区域分配,并提供了测试波形验证功能有效性。; 适合人群:具备嵌入式系统开发经验,熟悉STM32定时器、DFSDM和DMA应用的1-3年工作经验的电子工程师或电机控制开发者; 使用场景及目标:① 在伺服控制系统中实现快速响应的过流保护与周期性电流限制;② 掌握DFSDM模拟看门狗与多定时器协同设计方法,提升系统安全性和可靠性; 阅读建议:需结合Nucleo-H723ZG开发板实践,重点关注DFSDM看门狗寄存器配置、TIM1与TIM16联动逻辑及DMA内存映射设置,建议配合代码调试与示波器观测波形进行验证。

2025-11-05

LAT1565-编译器随机分配RAM地址导致DMA错误-v1.0

内容概要:本文详细解析了在使用STM32F429IGT6开发过程中,因Keil编译器随机分配RAM地址至CCRAM区域,导致Ethernet DMA操作失败的问题。CCRAM为内核专用内存,DMA外设无法访问,从而引发Fatal Bus Error,致使MCU无法被PC ping通。通过对比正常与异常运行时的map文件,发现Keil编译器在未明确配置的情况下可能将DMA相关数据分配到CCRAM,而IAR编译器因模板未启用CCRAM故无此问题。最终提出两种解决方案:禁用CCRAM或强制将DMA访问的数据段定位至SRAM。; 适合人群:使用STM32系列MCU进行嵌入式开发的工程师,尤其是涉及DMA、FreeRTOS及多编译器环境的开发者;具备一定硬件架构和编译原理基础的1-3年经验研发人员。; 使用场景及目标:①排查因编译器内存分配策略不当引起的DMA访问异常问题;②理解不同编译器(Keil与IAR)在RAM分配机制上的差异;③掌握如何通过链接脚本或内存布局配置避免关键外设访问非法地址;④提升对STM32内存架构(如CCRAM、SRAM等)及其访问权限的认知。; 阅读建议:阅读时应结合STM32参考手册中的内存架构图和DMA工作原理,重点关注map文件分析方法与编译器配置差异。建议在实际工程中验证不同编译器下的内存分布,并手动调整链接脚本以确保DMA安全访问。

2025-11-05

LAT1575-使用KEIL-IDE调试STM32N6芯片XIP的一种方法-v1.0

内容概要:本文介绍了一种在Keil IDE环境下调试STM32N6芯片XIP(eXecute In Place)应用的方法。由于STM32N6无内部Flash,XIP应用需通过BootRom加载FSBL来配置外部Flash的memory map模式,而常规调试方式无法直接运行。为此,文章提出在Dev模式下不跳转至应用,而是修改FSBL屏蔽跳转功能,仅完成XIP配置,并通过创建App.ini脚本文件在调试启动时自动加载FSBL并设置PC寄存器,随后加载应用进行调试,从而实现无需切换Boot模式的高效调试流程。该方法适用于基于STM32Cube_FW_N6_V1.1.0的Template_FSBL_XIP工程,提升了开发效率。; 适合人群:从事STM32N6系列芯片嵌入式开发的工程师,具备一定Keil IDE使用经验及嵌入式系统调试基础的研发人员; 使用场景及目标:①解决STM32N6在XIP模式下无法直接调试的问题;②实现FSBL与应用分离的模块化调试;③提升在外部Flash运行程序时的开发与调试效率; 阅读建议:建议读者结合STM32Cube固件包实际操作,重点关注FSBL修改与App.ini脚本的编写细节,并确保理解XIP机制与Keil调试流程的协同关系,调试前确认硬件启动模式设置正确。

2025-11-05

LAT1587-使用STM32CubeMX创建STM32N6的LOAD-RUN工程-V1.0

内容概要:本文详细介绍了如何使用STM32CubeMX工具为STM32N6微控制器创建Load&Run(LRUN)工程,重点围绕从NOR Flash启动的应用程序加载机制展开。通过配置XSPIM模块、XSPI外设及EXTMEM_MANAGER中间件,实现将应用程序从NOR Flash加载到RAM中运行。文档还涵盖了时钟配置、GPIO设置、电压匹配(如VDDIO3)、OTP配置以及APP镜像大小获取等关键技术点,并指导用户完成FSBL与APP工程的生成、编译、签名和调试流程。; 适合人群:具备嵌入式开发基础,熟悉STM32生态系统,正在开发或调试STM32N6系列芯片的工程师和技术人员;尤其适用于需要实现远程升级或安全启动的项目开发者; 使用场景及目标:①帮助开发者快速搭建基于STM32N6的Load&Run启动架构;②指导在实际硬件平台上正确配置XSPI接口与NOR Flash通信;③实现安全可靠的双阶段启动流程(FSBL + APP);④为自定义板卡移植提供配置参考; 阅读建议:需结合STM32Cube_FW_N6固件包、UM3234用户手册及LAT1491应用笔记同步实践,特别注意HSLV电压配置和OTP一次性编程的风险控制,建议在开发板上先行验证后再应用于自定义硬件。

2025-11-05

LAT1592-如何打开STM32Cube-Keil-AC5工程-v1.0

内容概要:本文介绍了如何在新版MDK Keil µVision(如V5.42)中打开并编译基于旧版AC5编译器的STM32Cube工程。由于新版Keil默认集成AC6编译器,而AC5与AC6不兼容,直接打开旧工程会导致编译失败。文章详细说明了下载和配置Legacy Arm Compiler(AC5)的方法,即将AC5安装至Keil的ARM目录下,并在项目设置中手动添加AC5编译器版本。此外,针对UBT授权不支持AC5的问题,提供了通过运行armlm genLIC命令生成旧版Single-User License授权码的解决方案,确保编译正常进行。最后强调AC5已属过时技术,新项目应优先使用AC6编译器。; 适合人群:使用STM32系列微控制器、需维护或运行旧版STM32Cube例程的嵌入式开发人员;熟悉Keil开发环境但遇到AC5工程兼容性问题的工程师;; 使用场景及目标:①解决在新版Keil中无法编译AC5工程的问题;②学习如何配置旧版编译器与授权以兼容遗留项目;③实现对STM32H7等系列早期例程的顺利加载与调试; 阅读建议:操作前备份当前Keil环境与授权信息,严格按照步骤安装AC5并切换授权模式,避免因授权冲突导致软件异常。完成临时项目后建议恢复UBT授权,长期开发推荐迁移到AC6平台。

2025-11-05

LAT1567-使用STM32N6测试Helium指令-v1.0

内容概要:本文介绍了如何使用STM32N6微控制器测试Arm Helium(MVE)指令集在数字信号处理中的性能表现,重点对比了在不同内存区域(SRAM2、DTCM/ITCM)运行及启用Helium指令前后执行2048点FIR滤波器的效率差异。文章详细说明了测试环境搭建、主频验证、编译器配置(如IAR和ARM编译器)、关键函数实现,并展示了测试结果:启用Helium后FIR运算速度提升约3倍,在TCM中运行比SRAM2快6~7倍。此外,还介绍了Helium作为Armv8-M架构下的SIMD技术,可显著增强Cortex-M55的并行计算能力,适用于DSP和神经网络等应用场景。; 适合人群:具备嵌入式系统开发经验,熟悉C语言和汇编基础,从事MCU性能优化、数字信号处理或边缘AI开发的工程师;工作年限1-5年的研发人员;关注高性能MCU应用的技术开发者。; 使用场景及目标:①评估Helium指令在FIR滤波等DSP任务中的加速效果;②掌握在STM32N6上启用MVE指令的方法与编译配置;③优化实时信号处理算法性能,提升MCU并行运算效率;④为边缘计算和低功耗AI应用提供硬件加速参考。; 阅读建议:建议结合STM32N6开发板(如NUCLEO-N657Z0-Q)实际操作,重点关注编译器设置、内存布局优化与官方CMSIS-DSP库的集成使用,同时参考ARM官方文档深入理解MVE指令机制。

2025-11-05

LAT1569-STM32N6功耗测量方法-v1.0

内容概要:本文介绍了基于STM32N6-DK开发板和STLINK-V3PWR硬件平台的功耗测量方法,详细阐述了从硬件连接到软件配置的完整流程。通过使用ST官方提供的x-cube-n6-ai-power-measurement软件包,结合Python脚本实现对STM32N6在AI任务中各阶段功耗的精确采集与分析,涵盖摄像头图像捕获、NPU推理、时间戳记录、数据解析及报告生成等环节,并支持图形化展示测量结果。整个方案开源可定制,适用于多种低功耗应用场景的评估与优化。; 适合人群:嵌入式系统工程师、MCU开发人员、从事低功耗设计或AIoT应用研发的技术人员,具备一定硬件调试和Python脚本使用经验者更佳; 使用场景及目标:①评估STM32N6在边缘AI任务中的实际功耗表现;②分析不同工作阶段(如待机、图像采集、神经网络推理)的能耗分布;③为产品低功耗设计提供数据支撑,优化电源管理策略; 阅读建议:建议结合官方代码包中的固件与Python脚本同步实践,注意硬件修改细节(如电阻移除、供电切换),并根据实际使用的SMPS效率调整配置文件参数,以确保测量准确性。

2025-11-05

LAT1579-STM32H5擦写FLASH时意外触发hardfault-v1.0

内容概要:本文详细分析了在STM32H5系列MCU(如STM32H503RB)中擦写FLASH时意外触发hardfault的问题。根本原因在于,当ICACHE使能时,程序访问位于RO区域的特殊地址(如FLASHSIZE_BASE)会引发hardfault,因为这些只读存储区域在Cache开启状态下无法正确读取。文档通过对比正常例程与客户代码,定位问题出现在GetSector函数中对FLASHSIZE_BASE地址的读取操作,并结合技术手册说明了RO区域需禁用Cache或配置MPU为Non-cacheable的解决方案。此外,强调了在带Cache的MCU中处理FLASH操作时的安全实践。; 适合人群:嵌入式系统开发工程师、STM32系列MCU开发者,尤其是涉及FLASH操作和底层系统调试的技术人员;具备一定ARM Cortex-M架构和硬件调试经验的1-3年工作经验研发人员。; 使用场景及目标:①解决STM32H5在擦写FLASH过程中因ICACHE未关闭导致的hardfault异常;②理解RO区域(如设备ID、FLASH大小寄存器)访问时Cache的影响机制;③掌握在不关闭ICACHE的情况下通过MPU设置Non-cacheable区域的方法;④提升对MCU底层存储架构与Cache协同工作的认知和调试能力。; 阅读建议:此文档侧重于实际问题的排查与原理分析,建议结合STM32H5参考手册中关于ICACHE、FLASH及MPU的相关章节进行对照学习,并在开发中避免在Cache开启时直接访问RO区域地址,优先采用官方例程推荐的安全操作流程。

2025-11-05

LAT1604-STM32H5-STiRoT-OEMuRoT之初体验-v1.0

内容概要:本文详细介绍了在STM32H573微控制器上实现STiRoT(不可变信任根)与OEMuRoT(可更新信任根)的安全启动架构的实操过程。通过使用STM32Cube工具链,包括STM32CubeProgrammer和Trust Package Creator,指导开发者完成从环境配置、密钥生成、固件编译、加密签名到烧录和固件升级的全流程。重点演示了如何利用芯片内置的STiRoT保护OEMuRoT,再由OEMuRoT管理应用固件(S_APP/NS_APP)及其数据的安全更新机制,并验证了各阶段的升级功能。同时提供了调试方法和常见问题解答,确保开发过程顺利进行。; 适合人群:具备嵌入式开发基础,熟悉STM32平台及相关工具链(如STM32CubeIDE、STM32CubeProgrammer),从事安全启动、可信执行环境或固件升级开发的工程师;适用于有一定工作经验(1-3年)的技术人员; 使用场景及目标:① 实现基于STM32H5系列的安全可信启动架构;② 掌握STiRoT与OEMuRoT的分工与协作机制;③ 完成安全固件的加密、签名、更新与验证全过程;④ 支持多镜像(应用、数据)独立升级;⑤ 学习如何调试高安全性等级(HDPL)下的固件; 阅读建议:此资源以动手实验为主,建议读者严格按照文档步骤操作,确保开发环境路径无中文和空格,使用指定版本工具,并结合LAT1328和LAT1325等辅助文档进行调试。在实践中深入理解信任根、安全启动、固件加密与防回滚机制的设计原理。

2025-11-05

LAT1601-如何在STM32N6上验证模型-v1.0

内容概要:本文详细介绍了如何在STM32N6微控制器上验证和评估AI模型的准确率与性能。通过使用ST官方提供的STEdgeAI工具链,结合Python脚本、Cube Programmer和开发环境(如STM32CubeIDE或IAR),用户可完成从模型生成、编译下载到性能测试与准确率验证的全流程。重点包括模型转换与代码生成、内存分配配置(如mpool文件)、NPU与MCU协同执行分析(HW/SW epoch)、性能优化策略(如启用epoch控制器)以及输入输出格式调整(如int8输出、channel位置转换)。文中还提供了常见问题解决方案和性能对比数据,展示了优化前后推理时间显著提升的效果。; 适合人群:具备嵌入式开发基础和AI模型基本理解,从事边缘计算或嵌入式AI开发的1-3年经验工程师;熟悉Python、C/C++及基本神经网络结构的技术人员。; 使用场景及目标:① 在STM32N6平台上快速部署并验证TFLite或ONNX格式的AI模型;② 评估模型在真实硬件上的推理性能(如延迟、资源占用)和准确率;③ 通过配置优化提升NPU利用率,减少MCU干预,实现高效AI推理。; 阅读建议:此资源以实操为导向,建议读者按照步骤搭建开发环境,结合提供的命令与脚本进行实践,重点关注neural_art.json和mpool文件的定制化配置,并利用真实数据集进行验证以获得可靠结果。

2025-11-05

LAT1560-MC-SDK-V6.x软件HSO功能ADC采样设计说明-V1.0

内容概要:本文详细介绍了ST公司MC SDK V6.x软件中新增的高灵敏度无传感观测器算法HSO(High Sensitivity Observer)的ADC采样硬件设计要求。HSO算法依赖精确的电流和端电压采样,因此对硬件设计提出较高要求。文档阐述了电流采样需采用开尔文连接方式,并推荐滤波参数;端电压采样则需合理分压与滤波,推荐截止频率为500Hz左右。同时明确了MCU的ADC模块分配原则,建议使用至少两个独立ADC模块,在一个PWM周期内进行四次采样,根据不同数量的ADC模块(两个或三个)提供具体的信号分配方案。; 适合人群:从事电机控制硬件设计、嵌入式系统开发及相关应用工程师,具备一定模拟电路与MCU外设基础知识的研发人员; 使用场景及目标:①指导开发者正确设计支持HSO算法的电流与电压采样电路;②合理配置STM32G4系列MCU的ADC资源以满足HSO对实时性和精度的需求;③确保马达控制系统在高低速运行下均能实现精准的角度与速度观测; 阅读建议:结合STEVAL-LVLP01和B-G473E-ZEST1S等参考板电路进行对比分析,重点关注ADC触发机制、滤波参数选取及PCB布局布线,建议在实际平台上验证采样精度与系统稳定性。

2025-11-05

LAT1563-STM32N6-XSPI1时钟配置问题与建议-v1.0

内容概要:本文针对STM32N6微控制器在使用XSPI1接口时因时钟配置不当导致应用复位后程序卡死的问题进行了详细分析。问题出现在将XSPI1时钟源设置为PLL(如PLL2→IC3)时,系统复位后BootROM无法正常加载外部Flash中的FSBL程序,原因是复位过程中PLL时钟尚未稳定,导致XSPI1时钟切换失败,从而引发通信异常。文章通过实验验证了问题根源,并指出只要FSBL或应用程序中XSPI1的时钟源与BootROM使用的per_ck保持一致,即可避免该问题。此外,还提出了在复位前手动切换回兼容时钟源的备用解决方案。; 适合人群:从事STM32系列MCU开发的嵌入式软硬件工程师,特别是使用STM32N6芯片并涉及外部Flash启动和XSPI配置的开发人员;具备一定时钟树和启动流程基础知识的中级开发者。; 使用场景及目标:①指导开发者正确配置XSPI1时钟源以确保系统复位后正常启动;②帮助理解STM32N6的RCC时钟切换机制及BootROM对外设时钟的依赖;③避免因时钟配置不当导致的应用卡死问题,提升系统可靠性; 阅读建议:建议结合STM32N6参考手册RM0486和UM3234文档一起阅读,重点关注RCC外设时钟分配机制和BootROM行为,在实际项目中优先采用与BootROM一致的时钟源配置策略,并在调试时注意区分上电复位与系统复位的行为差异。

2025-11-05

LAT1570-STM32N6在FSBL中使用大内存时的异常问题-v1.0

内容概要:本文介绍了STM32N6在FSBL(第一阶段引导加载程序)中使用大内存时出现的异常问题及解决方案。当在FSBL中尝试使用AXISRAM3等高编号SRAM区域时,由于这些存储区在复位后默认处于断电状态(SRAMSD位为1),若未预先使能时钟并清除关断位,则会导致程序运行异常甚至调试器卡死。解决问题的关键是在系统初始化阶段(如SystemInit函数中)添加代码,使能AXISRAM3的时钟并将其SRAMSD位清零,从而激活该内存区域。文中以IAR开发环境为例,详细说明了修改流程,并验证了方案的有效性。 适合人群:嵌入式系统开发工程师、STM32系列MCU开发者,特别是涉及FSBL开发和大内存管理的技术人员。 使用场景及目标:①解决在STM32N6的FSBL阶段使用AXISRAM3及以上内存区域时的异常问题;②理解STM32N6多区域SRAM的上电机制与初始化配置方法;③掌握在无外置Flash架构下合理分配和启用片上内存资源的实践技巧。 阅读建议:此资源适用于实际项目中遇到类似内存访问异常的情况,建议结合STM32N6参考手册和STM32CubeMX工具对比阅读,并在硬件平台上实测验证相关初始化代码的插入位置与执行顺序,确保内存正确使能后再进行DMA等操作。

2025-11-05

LAT1572-STM32H7的Cache-Level1配置相关话题-V1.0

内容概要:本文详细介绍了STM32H7系列微控制器中Level 1 Cache(L1缓存)的配置与使用注意事项,重点阐述了指令缓存(I-Cache)和数据缓存(D-Cache)的工作原理、缓存命中与缺失处理机制、写策略(Write-through与Write-back)、分配策略(Write-allocate与No-write-allocate)以及空间和时间局部性等核心概念。文章结合实际案例说明了未正确配置MPU或未进行缓存一致性维护导致的外设初始化失败问题,并深入讲解了MPU(内存保护单元)的配置方法,包括不同内存类型(Normal、Device、Strongly Ordered)的属性设置及对缓存行为的影响。同时提供了Cache相关CMSIS函数的使用说明,特别是在DMA操作中如何通过Clean、Invalidate等操作维护数据一致性,确保多主控环境下数据的正确性。; 适合人群:具备嵌入式开发基础,熟悉STM32H7或Cortex-M7架构,有一定Cache和MPU使用经验的中高级研发工程师;适用于从事高性能嵌入式系统开发、涉及DMA与外设通信设计的技术人员; 使用场景及目标:①解决因Cache配置不当引发的程序运行异常或外设通信故障;②优化系统性能,在启用Cache的同时保障数据一致性,尤其是在DMA传输场景下;③掌握MPU与Cache协同配置的最佳实践,提升系统稳定性和执行效率; 阅读建议:此文档技术性强,建议结合STM32H7参考手册、AN4839和AN4838应用笔记以及ARM Cortex-M7官方指南进行对照学习,重点关注Cache策略选择、MPU区域配置示例及DMA前后Cache维护操作,实践中应严格遵循32字节对齐原则,并根据具体应用场景权衡性能与一致性开销。

2025-11-05

LAT1581-STM32N6如何配置EMMC启动-v1.0

内容概要:本文详细介绍了STM32N6微控制器如何配置eMMC启动,涵盖BootROM工作机制、Boot Mode设置、FLASH启动源配置(OTP设置)、电源管理(VDDIO与HSLV模式启用)、SDMMC外设引脚与时序要求,以及eMMC设备端的关键寄存器配置。文章重点解析了eMMC引导流程及时序规范,明确指出STM32N6仅支持SDR单数据率模式,不支持DDR或HS200高速模式,并提供了不同封装型号对SDMMC接口的支持情况,指导开发者正确完成eMMC启动配置与FSBL烧录。; 适合人群:从事嵌入式系统开发,熟悉STM32系列MCU,具备一定硬件和底层启动知识的工程师;适用于参与STM32N6项目启动配置的软硬件研发人员。; 使用场景及目标:①帮助开发者正确配置STM32N6从eMMC启动所需的Boot模式和OTP参数;②指导eMMC设备端的寄存器设置以满足启动时序要求;③解决实际开发中因电源、引脚或时序配置不当导致的启动失败问题。; 阅读建议:本文基于ST官方文档补充实践性指导,建议结合UM3234和eMMC V5.1规范对照阅读,重点关注OTP配置、电源设置与eMMC应答时序,在实际调试中配合示波器验证信号完整性,并确保硬件设计符合AF功能映射和电压匹配要求。

2025-11-05

LAT1593-基于Up-Down计数模式实现6路交错PWM发波-v1.0

内容概要:本文详细介绍了如何利用STM32H745微控制器的定时器(TIM1/2/3/4/5/8)在Up-Down计数模式下实现6路交错PWM发波技术。通过采用中心对齐的PWM模式,结合定时器之间的内部触发与同步机制,实现了各通道间相位差为60度的交错输出,有效降低电流纹波和开关损耗,提升系统效率与电磁兼容性。设计中使用TIM15作为辅助定时器,通过延迟半周期触发TIM3和TIM2,解决Up-Down模式下无法直接设置递减启动方向的问题。文中还提供了CubeMX配置方法、定时器初始化顺序、CNT初值设置及实测波形验证,确保相位错序正确。; 适合人群:具备STM32嵌入式开发基础、熟悉定时器和PWM原理的电子工程师或研发人员,尤其适用于从事电机控制、电源设计等电力电子领域的技术人员; 使用场景及目标:①实现多相交错Boost电路中的低纹波PWM控制;②掌握STM32定时器在复杂同步应用中的配置与联动技巧;③优化高功率密度DC/DC变换器的热管理和电磁干扰性能; 阅读建议:学习时应结合CubeMX工具进行实践配置,重点关注定时器主从触发关系、初始化顺序及CNT初值设定,建议配合硬件平台调试并测量实际波形以验证设计效果。

2025-11-05

LAT1544 读取STM32H5 Data Flash触发NMI的问题解析-v1.0.pdf

内容概要:本文详细解析了在STM32H5系列微控制器中读取Data Flash时触发NMI异常的问题。问题出现在未写入数据前读取刚擦除的high-cycle data flash区域,导致ECC双错误,进而引发NMI或hardfault异常。文章通过复现问题、分析寄存器状态和参考手册说明,指出根本原因是virgin word状态下访问会触发ECC错误,且该错误在编程前不会自动消除。同时,文档提供了两种解决方案:一是确保读取前先写入数据;二是通过配置屏蔽ECC错误引发的NMI中断。此外,还强调了访问data flash前必须关闭对应内存区域的缓存属性,否则也会引发hardfault,类似机制同样适用于OTP和只读数据区域。; 适合人群:嵌入式系统开发工程师、STM32系列MCU使用者、固件开发者,特别是涉及Flash操作和底层系统调试的技术人员; 使用场景及目标:①解决STM32H5在读取Data Flash时意外触发NMI或hardfault的问题;②理解Data Flash、ECC校验机制与内存属性配置之间的关系;③正确实现高耐久性数据存储功能,避免因误操作导致系统异常; 阅读建议:在实际项目中应用前应结合STM32H5参考手册和官方示例代码进行验证,重点关注ECC错误处理、MPU缓存配置及SBS外设对NMI的控制,确保系统稳定性与数据可靠性。

2025-10-24

LAT1472 KEIL环境下printf导致程序无法执行的解决方案-v1.0

内容概要:本文针对在KEIL开发环境中使用printf函数导致程序无法正常执行的问题,分析其根本原因为Semihosting机制在未得到调试器响应时会阻塞程序启动,甚至阻止进入main函数。为解决此问题,文章提出在不使用MicroLIB库的前提下,采用CMSIS-Compiler组件进行配置,通过禁用标准输出底层调用并自定义STDOUT接口的方式,有效规避Semihosting带来的执行卡死问题。具体步骤包括启用CMSIS-Compiler CORE组件、设置STDOUT为Custom模式,并实现用户定义的输出接口,最终实现printf调试信息的正常输出且程序可全速运行。; 适合人群:从事嵌入式开发,熟悉KEIL MDK环境,具备C语言基础和调试经验的1-3年开发人员;尤其适用于因项目限制无法启用MicroLIB但仍需使用printf进行调试的开发者。; 使用场景及目标:①解决KEIL环境下因printf引发的程序卡死在BKPT指令问题;②掌握CMSIS-Compiler在STDOUT重定向中的应用;③实现无需Semihosting的printf调试输出方案,提升调试效率与程序稳定性。; 阅读建议:此资源以实际问题为导向,建议读者结合自身工程实践,按照文档步骤逐步配置CMSIS-Compiler并实现自定义输出函数,同时理解Semihosting机制原理,以便在类似问题中灵活应用。

2025-10-22

LAT1542 STM32H5的PB14引脚被意外拉低的问题解析-v1.0

内容概要:本文详细解析了STM32H5系列MCU中PB14引脚在特定条件下被意外拉低的问题。根本原因在于STM32H5默认启用UCPD外设的“Dead Battery”(DB)功能,当PC9(复用为UCPD1_DBCC2)检测到电压超过1V时,芯片内部会自动激活Rd下拉电阻,导致PB14(复用为UCPD1_CC2)引脚被拉低。该机制是为了满足USB Type-C协议中在电池耗尽情况下仍能被电源端识别的需求。解决方案是在初始化代码中调用HAL_PWREx_DisableUCPDDeadBattery()关闭DB功能,并建议在DBCC引脚外接100kΩ下拉电阻以防误触发。; 适合人群:使用STM32H5系列芯片并涉及GPIO或UCPD外设的嵌入式软硬件开发工程师;遇到类似引脚异常电平问题的技术人员;; 使用场景及目标:①排查STM32H5中PB14、PC9等UCPD相关引脚异常拉低问题;②理解UCPD外设中Dead Battery功能的设计原理与应用场景;③掌握如何通过软件配置禁用DB功能以恢复GPIO正常操作; 阅读建议:在实际项目中若将UCPD引脚用作普通GPIO,务必检查是否需关闭DB功能;建议结合STM32CubeMX工具和参考手册RM0481、AN5225进行配置验证,注意未来CubeMX版本可能支持该功能的图形化配置。

2025-10-22

高g值加速度计搭配智能IMU: 提升动态环境下的测量精度

内容概要:本文介绍了意法半导体推出的新型高g值加速度计IMU——LSM6DSV80X和LSM6DSV320X,该惯性测量单元创新性地在单一封装内集成低g值加速度计(±16g)、高g值加速度计(最高±320g)和三轴陀螺仪,解决了传统传感器在动态环境中难以兼顾高低加速度精确测量的问题。通过独特的MEMS机械设计、双加速度计架构及先进的信号处理技术,实现了宽范围加速度的高精度检测,尤其适用于高强度冲击、振动和快速运动变化的场景。器件内置有限状态机(FSM)、机器学习内核(MLC)、传感器融合算法和峰值跟踪等功能,支持边缘智能处理,可在不依赖主机处理器的情况下完成复杂运动识别与实时事件检测。配合1.5KB可扩展至4.5KB的FIFO缓冲区,保障了数据完整性与系统高效运行。此外,配套的软件库(如MotionXLF、MotionFX)、开发工具(MEMS Studio、ST AIoT Craft)和硬件平台构成完整开发生态,大幅简化设计流程,加速产品上市。; 适合人群:从事智能可穿戴设备、运动监测、工业资产追踪、汽车安全及物联网终端开发的硬件工程师、嵌入式系统开发者和传感器应用研究人员,具备一定的MEMS传感器基础知识和嵌入式开发经验者更佳; 使用场景及目标:①用于高强度体育运动中的冲击监测(如网球拍振动、滑雪撞击、拳击出拳分析);②实现个人跌倒检测与车祸碰撞识别等安全防护功能;③支持智能手表、AR/VR设备中的高级手势识别与情景感知;④应用于无人机、机器人等需要高动态环境感知的系统中,提升姿态估计精度与响应速度; 阅读建议:建议结合官方提供的应用笔记(AN6119、AN6292等)、软件库文档及开发工具进行实践验证,重点关注双加速度计的数据融合策略、嵌入式AI功能配置与功耗优化设置,以充分发挥该IMU在复杂动态场景下的性能优势。

2025-11-15

LAT1416 通过DMA将内存图像旋转90度-v1.0

内容概要:本文介绍了如何利用DMA技术在STM32微控制器上高效实现内存图像逆时针旋转90度的方法。针对传统软件旋转效率低的问题,提出使用DMA硬件加速方案,分别基于STM32H7系列的MDMA和STM32U5系列的GPDMA实现。其中,MDMA采用LinkedList模式,通过配置多个链表节点逐行传输并转存为列数据,适用于无2D寻址功能的场景;而GPDMA支持2D寻址,可通过重复块传输机制直接实现图像旋转,无需链表结构,更加高效且节省内存。文章还提供了具体的代码示例和地址偏移计算方法,并指出若MCU集成GPU2D模块(如STM32H7R/S、U59/A/F/G等),还可进一步借助硬件图形引擎完成旋转操作。; 适合人群:嵌入式系统开发人员、STM32平台开发者、从事UI图形处理或图像算法优化的工程师,具备一定DMA和C语言编程基础的技术人员; 使用场景及目标:①在资源受限的嵌入式设备中提升图像旋转效率,降低CPU负载;②学习如何利用DMA的高级特性(如LinkedList、2D寻址、重复块传输)优化图形数据搬运;③为横竖屏切换、图像预处理等应用场景提供硬件加速解决方案; 阅读建议:建议结合STM32H7与STM32U5的参考手册和HAL库文档对照阅读,动手实践代码并在实际平台上调试验证,深入理解DMA在复杂数据重排中的应用机制。

2025-11-15

LAT1501 STM32CubeMX生成时钟获取函数分析-V1.0

内容概要:本文分析了在使用STM32CubeMX V6.13.0与STM32Cube_FW_H7 V1.12.0生成代码时,由于D1CorePrescTable数组定义错误导致串口通信乱码的问题。重点解析了该数组在HAL库时钟获取函数中的作用机制,指出错误的数组值{0,0,0,0}替代原本的{1,2,3,4}会导致APB1总线分频计算错误,从而影响串口波特率设置。通过对比寄存器配置与时钟树结构,阐明了查表法在时钟频率计算中的关键作用,并提供了手动修复数组内容的解决方案。; 适合人群:嵌入式系统开发人员、STM32系列MCU使用者,特别是从事STM32H7系列开发并使用STM32CubeMX工具的工程师;具备一定时钟系统和外设驱动调试经验的技术人员。; 使用场景及目标:①解决STM32CubeMX升级后因时钟配置表异常引发的外设通信故障;②深入理解HAL库中时钟频率获取机制及查表法实现原理;③提升对MCU时钟树、寄存器配置与外设性能关联性的分析能力; 阅读建议:此资源以实际问题为导向,建议结合STM32H7参考手册(RM0433)、调试工具和源码进行对照分析,在实践中验证时钟配置对串口等外设的影响,并关注ST官方后续补丁更新。

2025-11-15

LAT1551 创建在PC上验证X-Cube-AI算法的工程-v1.0

内容概要:本文介绍了如何在PC上使用STM32CubeIDE和X-Cube-AI工具创建一个用于验证AI算法的工程,提升算法验证效率。通过构建包含X-Cube-AI生成模型代码和上位机支持文件的项目结构,配置开发环境并修改主函数调用相关初始化和处理接口,实现对AI算法的批量自动化测试。该方法避免了手动验证数据的低效与遗漏,支持在桌面端以C语言完整运行和验证嵌入式AI算法。; 适合人群:熟悉STM32开发环境并有一定嵌入式AI应用经验的工程师,具备C语言编程能力和基本的AI模型部署知识的研发人员; 使用场景及目标:①在PC端搭建X-Cube-AI算法验证环境,实现大数据量自动测试;②通过上位机工具快速调试和评估模型推理结果,提升开发迭代效率;③实现跨平台算法验证,确保模型在嵌入式设备部署前的准确性与稳定性; 阅读建议:此资源侧重于工程搭建与环境配置,建议读者结合实际X-Cube-AI生成的模型代码,按照文档步骤逐步操作,并注意路径设置、库文件链接及头文件兼容性处理,确保工程正确编译与运行。

2025-11-05

LAT1521 STM32U5外部中断不响应问题分析-v1.0

内容概要:本文分析了STM32U5系列微控制器在BOOT程序跳转到APP程序过程中偶发性外部中断不响应的问题。通过实验复现发现,在第二次初始化EXTI(外部中断)时,尽管未更改配置,但由于对EXTICR寄存器的操作会触发内部多路复用器(MUX)切换,导致短暂的中断响应窗口丢失,从而造成上升沿中断未能被正确捕获。测试使用NUCLEO-STM32U575和NUCLEO-STM32H503平台,结合示波器波形分析,定位问题发生在EXTICR寄存器写入期间。最终结论为:即使不改变EXTICR值,其写操作本身也会引起中断敏感时段,建议仅在BOOT阶段完成一次EXTI初始化,避免重复初始化。; 适合人群:嵌入式系统工程师、STM32开发者、固件开发技术人员,特别是有低功耗、中断响应可靠性要求的应用开发者;具备一定MCU外设寄存器操作经验的1-3年经验研发人员。; 使用场景及目标:①解决STM32U5在多阶段程序跳转时外部中断丢失问题;②优化BOOT和APP间的资源初始化策略;③提升对EXTI底层机制(如MUX切换、寄存器操作时序影响)的理解与规避设计风险; 阅读建议:此文档基于真实问题案例,结合硬件测试与寄存器级分析,建议读者结合STM32U5参考手册RM0456及相关Cube工具链进行实践验证,并重点关注外设初始化时序与中断敏感窗口的设计规范。

2025-11-05

LAT1549 使用STM32CubeIDE开发上位机工具-v1.0

内容概要:本文介绍了如何使用STM32CubeIDE结合MinGW GCC在Windows环境下开发上位机工具,通过配置C语言开发环境,实现与STM32 MCU开发一致的编码、编译和调试体验。文章以创建一个“Hello World”项目为例,详细演示了工程创建、编译工具链设置、构建与调试流程,强调该方法便于MCU开发者在PC端快速验证算法逻辑,尤其适用于基于C语言实现的嵌入式算法(如X-CUBE-AI生成代码)的前期测试与验证。; 适合人群:熟悉STM32开发和C语言,具备一定嵌入式开发经验的工程师,尤其是从事算法移植与验证的研发人员;适合希望复用MCU开发技能进行桌面工具开发的技术人员。; 使用场景及目标:①在PC端快速搭建与STM32一致的C语言验证环境,用于算法原型测试;②避免切换开发语言或环境带来的差异问题,提升开发效率;③利用STM32CubeIDE的熟悉界面进行上位机小工具开发,降低学习成本。; 阅读建议:此资源以实践为导向,建议读者按照步骤安装MinGW并配置系统路径,动手完成工程创建、编译与调试全过程。在掌握基础流程后,可将实际MCU算法代码迁移至该环境进行功能验证,注意保持代码可移植性,并关注gcc与嵌入式编译器间的细微差异。

2025-11-05

LAT1545 DFSDM输入模式以及配置说明-V1.0

内容概要:本文详细介绍了STM32H723微控制器中DFSDM(数字滤波器用于Σ-Δ调制器)模块的输入模式及其配置方法,重点讲解并行模式和串行模式的工作原理与实际配置步骤。并行模式支持来自内部寄存器或ADC模块的数据输入,适用于内部信号处理和测试;串行模式则支持SPI和曼彻斯特协议格式,用于接收外部Σ-Δ调制器或PDM麦克风的数据。文中通过CubeMX配置示例、代码片段及硬件连接说明,展示了通道与滤波器的映射关系、数据输入方式、触发机制以及结果读取流程,并澄清了关于ADC与通道对应关系的常见误解。; 适合人群:嵌入式系统工程师、STM32开发者、具备一定MCU外设使用经验的技术人员; 使用场景及目标:①掌握DFSDM在并行和串行输入模式下的配置方法;②理解通道与滤波器的灵活映射机制;③实现ADC与DFSDM协同工作或外部Σ-Δ/PDM信号采集;④辅助调试和验证DFSDM功能; 阅读建议:建议结合Nucleo-H723ZG开发板实践文中配置案例,对照参考手册理解寄存器操作,并注意官方文档更新以避免信息偏差。

2025-11-05

LAT1475 STM32G474 勘误手册中SRAM Write Error详解-V1.0

内容概要:本文详细解析了STM32G474微控制器在特定条件下可能出现的“SRAM Write Error”问题,源自其勘误手册ES0430的2.2.7章节。该问题与SRAM状态机在异常复位期间未能正确恢复有关,尤其当复位发生在SRAM写操作过程中时,可能导致首次写入失败。文章阐述了问题的成因、复现方法、发生概率及潜在影响,并通过IAR和Keil两个开发环境下的实验,分析了不同启动代码(startup code)执行顺序对问题风险的影响。同时提供了官方workaround解决方案——在Reset_Handler初期对各SRAM段执行一次 dummy读操作以恢复状态机,并给出了适用于不同IDE的汇编代码实例。最后提出了针对不同应用场景的代码实施建议,特别是对启用奇偶校验(Parity check)的SRAM应进行初始化以防止校验错误。; 适合人群:使用STM32G4系列MCU的嵌入式软件工程师、固件开发者、技术支持人员,以及对MCU底层行为和可靠性设计感兴趣的研发人员;需具备一定的ARM Cortex-M架构和启动流程知识。; 使用场景及目标:①帮助开发者理解STM32G474中SRAM Write Error的机制及其对系统稳定性的影响;②指导在实际项目中判断是否需要实施workaround措施;③提供可在IAR、Keil、STM32CubeIDE等主流开发环境中集成的修复代码;④为高安全性和高可靠性要求的应用提供最佳实践建议。; 阅读建议:此资源以技术分析和实验证据为基础,建议结合实际工程和调试工具(如反汇编、内存视图)进行验证,重点关注启动流程中对SRAM的首次访问顺序,并根据.map文件评估全局变量布局对风险的影响。

2025-11-05

LAT1553 如何使用高级定时器产生双沿可控PWM-v1.0

内容概要:本文介绍了如何利用STM32G4系列MCU中的高级控制定时器,通过组合PWM模式(Combined PWM mode 2)实现双沿可控的PWM信号输出。详细说明了该模式下各通道的工作机制,如TIM1_CH1和CH2配合实现上升沿与下降沿独立控制,并通过CCR寄存器分别设定边沿位置,从而灵活调节占空比,支持0%和100%极端占空比输出。同时对比了非对称PWM模式的局限性,突出组合模式在灵活性上的优势,可作为HRPWM的补充用于复杂功率拓扑控制。; 适合人群:具备嵌入式系统基础、熟悉STM32定时器功能的电子工程师或研发人员,尤其适用于从事数字电源、电机控制等需要高精度PWM的应用开发者; 使用场景及目标:①实现PWM上升沿和下降沿独立精确控制,满足特定控制算法需求;②在不增加外部逻辑器件的情况下,提升PWM波形调控灵活性,应用于数字能源、功率变换等领域; 阅读建议:建议结合STM32CubeMX工具进行配置实践,重点关注通道模式设置与寄存器关系,并通过示波器验证输出波形,确保理解“与”逻辑合成PWM的实际效果。

2025-11-05

LAT1552 STM32N6-AI Image Classification工程git bash命令行的使用示例-v1.0

内容概要:本文详细介绍了基于STM32N6-AI图像分类工程在git bash命令行环境下的完整操作流程,涵盖从编译、调试到烧录的全过程。重点演示了如何使用Makefile进行工程编译,通过GDB Server与GDB Client实现远程调试,设置断点、查看变量与内存、监控寄存器变化,并最终将签名后的应用程序烧录至外部Flash运行。文中结合具体命令行实例,逐步引导用户完成AI模型部署,适用于希望脱离IDE、采用命令行开发调试的嵌入式开发者。; 适合人群:具备嵌入式开发基础,熟悉ARM Cortex-M系列MCU及基本Linux命令行操作的工程师,尤其是从事STM32平台AI应用开发的技术人员;有一定工作经验(1-3年)的研发人员更为合适; 使用场景及目标:①掌握STM32N6-AI图像分类工程的命令行编译与调试方法;②学习如何在无IDE环境下使用make、gdb、STM32_Programmer_CLI等工具链进行嵌入式开发;③实现AI模型在STM32N6开发板上的部署与性能测试; 阅读建议:建议读者提前准备好STM32N6-DK开发板及相关软件工具链,在实际环境中同步操作文档中的每一步命令,重点关注环境变量配置、GDB调试技巧及外部Flash烧录流程,结合官方文档深入理解底层机制。

2025-11-05

LAT6033 STM32MPU的ROMCode跟踪调试-v1.0

内容概要:本文详细介绍了STM32MPU系列芯片中ROM Code的跟踪调试方法,重点针对启动失败时的故障排查。ROM Code是系统复位后由Arm Cortex-A内核执行的第一段固化代码,负责启动设备识别、用户镜像加载及安全启动等功能。当启动失败时,可通过特定GPIO状态指示或ROM trace方式进行错误定位。文章分别讲解了STM32MP1和STM32MP2系列在不同平台(Ubuntu/Windows)下利用ST-LINK和OpenOCD工具获取ROM trace二进制数据的方法,并提供了相应的命令示例与常见问题解决方案。此外,还说明了如何通过Python脚本解析trace日志(适用于MP1系列)或直接查看串口输出(适用于MP2系列)进行问题分析,帮助开发者快速定位如外设未识别等启动异常。; 适合人群:嵌入式系统开发工程师、STM32MPU平台开发者、固件调试技术人员,具备一定硬件调试经验和软件开发基础的技术人员; 使用场景及目标:①系统启动失败时快速定位ROM Code执行阶段的问题;②掌握STM32MP1/MP2系列芯片的ROM trace抓取与分析流程;③提升对启动流程和底层调试机制的理解与实战能力; 阅读建议:建议结合实际硬件环境操作,提前准备好ST-LINK调试器、OpenOCD工具链及对应配置文件,在调试过程中注意权限设置与路径配置,避免连接或访问错误。同时应对照官方文档验证操作步骤,确保分析结果准确性。

2025-11-05

LAT1525-STM32H7-SPI通信的Underrun特性介绍- v1.0

内容概要:本文详细介绍了STM32H7系列微控制器在SPI通信中从机模式下的Underrun(下溢)特性,重点阐述了通过SPI_CFG1寄存器中的UDRDET字段配置下溢检测时机的三种模式(UDRDET=0、1、2)。文章解释了在不同配置下,当下溢发生时系统的行为,包括何时触发下溢事件、TxFIFO为空时的数据发送机制(如dummy数据和underrun pattern)、以及硬件延迟对事件检测的影响,并辅以时序图说明各种场景。此外,还强调了正确配置下溢检测对于提升通信可靠性的意义。; 适合人群:嵌入式系统工程师、STM32开发者、具有一定SPI通信基础的软硬件研发人员(工作1-3年以上);; 使用场景及目标:①深入理解STM32H7的SPI从机下溢机制及其对通信稳定性的影响;②合理配置UDRDET参数以应对实际项目中因数据准备不及时导致的通信异常;③调试和优化SPI从机数据发送流程,避免数据丢失或错误传输;; 阅读建议:学习时应结合STM32H7参考手册(RM0468)和实际硬件平台进行验证,重点关注UDRDET不同设置下的行为差异,并在代码中实现相应的中断处理与状态清除机制,确保系统鲁棒性。

2025-11-05

LAT1543 安全存储之SAES+HUK使用技巧和常见问题-v1.0

内容概要:本文详细介绍了STM32系列微控制器中安全AES模块(SAES)与硬件唯一密钥(HUK)的核心特性和应用场景,重点阐述了SAES相较于普通AES在抗侧信道攻击方面的优势,以及HUK、BHK、AHK等硬件密钥的生成机制与使用方式。文章通过数据安全存储、AES密钥安全存储、非对称密钥安全存储三个典型用例,展示了如何利用SAES+HUK实现一机一密、防克隆、密钥不暴露等安全目标,并深入分析了在实际开发中常见的初始化失败、低功耗唤醒异常、多次解密结果错误、跨芯片加密结果相同等问题的根本原因及解决方案。; 适合人群:具备嵌入式系统开发经验,熟悉STM32平台的安全机制,从事物联网、工业控制等领域安全功能开发的工程师;工作年限1-5年,有一定密码学基础的研发人员;; 使用场景及目标:① 在STM32U5/H5/WBA/H7S/N6等支持SAES和HUK的芯片上实现敏感数据的安全存储;② 设计密钥管理系统,确保密钥在存储和使用过程中始终以密文形式存在且不被软件获取;③ 解决SAES在低功耗模式下时钟丢失导致的加解密异常问题;④ 验证HUK唯一性并正确配置芯片生命周期状态以启用真实HUK; 阅读建议:此文档技术深度较高,建议结合STM32各系列参考手册(RM文档)和实际硬件平台进行验证,重点关注SAES初始化流程、时钟配置、TrustZone安全隔离机制以及HAL库API的正确调用顺序,尤其在使用ECB/CBC模式连续解密时需注意密钥寄存器状态管理。

2025-11-05

【嵌入式系统】基于LL库的STM32H7 ADC驱动开发:16位模数转换采样异常问题分析与修复方案 LAT1504 关于STM32H7使用LL库生成ADC代码工作异常问题说明-v1.0

内容概要:本文针对STM32H7系列芯片在使用LL库生成ADC代码时出现采样异常的问题进行了详细分析与验证。通过CubeMX配置工具对比HAL库与LL库的差异,发现LL库在生成代码时未正确配置ADC的Boost模式和通道预选(PCSEL)寄存器,导致ADC无法正确采集外部信号。文章以Nucleo-H743ZI开发板为测试平台,复现问题并定位根源,最终提出在CubeMX 6.12及之前版本中需手动补充相关寄存器配置的解决方案,确保ADC通道正常工作。; 适合人群:嵌入式系统开发者、STM32系列MCU应用工程师、熟悉ADC外设并使用LL库进行开发的技术人员;具备一定STM32底层开发经验,工作1-3年以上的研发人员。; 使用场景及目标:①解决STM32H7使用LL库时ADC采样数据异常的问题;②理解LL库与HAL库在外设配置上的差异;③掌握ADC Boost模式和通道预选择机制的配置方法,提升对STM32H7 ADC底层寄存器的理解与调试能力。; 阅读建议:此资源以实际问题为导向,结合图形化配置工具与底层寄存器分析,建议读者结合CubeMX工具、参考手册和代码调试同步实践,重点关注ADC_CR和ADC_PCSEL寄存器的手动配置,以彻底解决LL库生成代码的缺陷。

2025-11-05

【嵌入式安全】基于OP-TEE的M核固件认证技术:STM32MP15x平台可信执行环境下的固件签名与加载方案设计 LAT6028 使用OP-TEE进行M核固件认证-v1.0

内容概要:本文详细介绍了如何使用OP-TEE对STM32MP1系列芯片中的M核固件进行认证和保护,重点阐述了固件签名与加载执行的安全机制。文档说明了将OP-TEE部署在SYSRAM中以启用安全服务的必要性,并提供了基于Developer Package和Distribution Package两种开发环境下的具体操作流程,包括OP-TEE可信应用(TA)的配置与编译、固件签名工具sign_rproc_fw.py的使用方法以及密钥管理等关键技术环节。通过RemoteProc框架实现签名固件的认证与加载,确保M核固件在受信任环境中运行。; 适合人群:具备嵌入式系统开发经验,熟悉Linux构建系统(如Yocto)、TrustZone技术及安全启动流程的1-3年工作经验的工程师;适用于从事STM32MP1平台安全开发的技术人员; 使用场景及目标:①实现M核固件的安全加载与防篡改保护;②在生产环境中部署可信执行环境(TEE)下的协处理器固件认证机制;③满足客户对协处理器代码保密性和完整性的安全需求; 阅读建议:此资源以实际操作为导向,建议读者结合ST官方Wiki和开发板环境同步实践,注意保持密钥一致性、TA名称匹配及配置项正确性,调试过程中可通过/sys/bus/tee/devices/路径验证TA是否成功注册。

2025-11-05

LAT1540 通过GFXMMU实现TouchGFX画面垂直镜像-v1.0

内容概要:本文介绍了如何利用STM32L4R9微控制器的GFXMMU外设实现TouchGFX显示界面的垂直镜像功能。通过反序配置GFXMMU的LUT(查找表),将帧缓冲区的每一行映射到物理内存的相反顺序位置,从而在硬件层面实现图像垂直翻转。该方法无需额外UI资源或软件处理,避免了双套代码带来的资源开销,同时保持显示效果正确。文中以STM32L4R9-Discovery开发板为例,详细说明了LUT配置和LTDC帧缓冲地址偏移的关键步骤,并提供了运行效果图对比正常显示与垂直镜像效果。; 适合人群:嵌入式系统开发者、STM32系列MCU使用者、从事GUI开发特别是使用TouchGFX的工程师;具备一定硬件外设和图形显示基础知识的研发人员; 使用场景及目标:①在需要屏幕垂直镜像的应用场景(如特定安装方向的显示设备)中实现硬件级翻转;②优化资源使用,避免为镜像显示维护两套UI资源;③深入理解GFXMMU的工作机制及其在图形处理中的灵活应用; 阅读建议:建议结合提供的演示工程代码进行实践操作,重点掌握LUT配置逻辑与地址映射关系,调试时注意LTDC与GFXMMU协同工作的时序与地址对齐问题。

2025-11-05

LAT1510-STM32H7xx运行LWIP时的MPU配置介绍-V1.0

内容概要:本文介绍了在STM32H7xx系列微控制器上运行LWIP协议栈时MPU(内存保护单元)的正确配置方法。文章指出,虽然STM32CubeMX在创建工程时会提供默认的MPU配置,但在复杂应用场景(如以太网通信)下,若未对MPU进行合理设置,可能导致系统死机或运行异常。重点分析了LWIP运行失败的原因,包括DMA缓冲区位置不当、存储器属性未设为Device类型以及ETH_MAC只能访问D2域SRAM等问题,并给出了具体的解决方案:通过STM32CubeMX配置MPU,将ETH收发缓冲区设置为Device memory属性(TEX=0, C=0, B=1),LWIP堆栈区设为Normal memory属性(TEX=1, C=0, B=0),并指定了各缓存变量的起始地址与大小。; 适合人群:具备嵌入式开发基础,熟悉STM32H7系列和LWIP协议栈的应用工程师或中级研发人员;正在开发网络功能产品的技术人员。; 使用场景及目标:①解决STM32H7运行LWIP时因MPU配置不当引起的系统死机问题;②掌握如何在STM32CubeMX中正确配置MPU以支持以太网DMA传输;③理解不同存储区域的Cache、Buffer和Shareability属性设置原则; 阅读建议:建议结合STM32H7硬件手册、AN4838应用笔记及ST官方LWIP例程进行实践,重点关注内存区域划分与属性设置,并通过实际调试验证配置效果。

2025-11-05

LAT1524 I2C bootloader的GetCheckSum命令的使用介绍- v1.0

内容概要:本文介绍了STM32 I2C bootloader中“GetCheckSum”命令的使用方法及其CRC校验计算原理。重点说明了该命令基于CRC外设默认配置(32位宽度、多项式0x04C11DB7、初始值0xFFFFFFFF、无输入/输出反射、异或输出为0)对指定Flash地址范围进行校验和计算,并强调地址需4字节对齐、大小为4的倍数且非零。文中还指出,因小端模式存储,手动计算时需按32位字重组数据以避免结果偏差,并通过STM32L452实例验证了使用HAL库调用CRC外设计算的结果与“GetCheckSum”命令一致。; 适合人群:嵌入式软件工程师、STM32开发人员、固件开发者,具备基本MCU和通信协议知识的技术人员; 使用场景及目标:①在Bootloader调试过程中正确理解和使用GetCheckSum命令;②确保自定义CRC计算与I2C Bootloader结果一致,避免因配置差异导致校验错误;③用于固件完整性校验、程序烧录验证等场景; 阅读建议:阅读时应结合AN4221文档和STM32参考手册,重点关注CRC配置参数和数据组织方式,在实际项目中对比测试命令行为与自行实现的CRC算法一致性。

2025-11-05

LAT1474 三个 ADC同步模式配置以及CubeMx错误配置解决方法-v1.0

内容概要:本文详细介绍了STM32中三个ADC同步模式的配置方法,重点说明了在使用CubeMx工具进行三ADC(ADC1、ADC2、ADC3)同步采样配置时,如何设置规则组与注入组的工作模式、触发源(如TIM1和TIM2)、DMA数据传输及通道分配。文章指出,在CubeMx V6.12之前版本中存在配置缺陷,即将ADC2和ADC3的注入模式错误地设为自动注入模式(JAUTO位被置位),导致规则组采样出现0x000和0xFFF等异常数据。解决方案是在生成代码后手动添加指令强制清除JAUTO位,以确保同步采样的稳定性与准确性。; 适合人群:嵌入式系统工程师、STM32开发者、具有一定MCU开发经验的电子工程师(工作1-3年以上);熟悉ADC、DMA、定时器应用的技术人员;使用CubeMx进行项目开发并遇到多ADC同步问题的用户; 使用场景及目标:①实现三路ADC同时采样,支持规则组与注入组协同工作;②解决CubeMx旧版本在Triple ADC模式下的配置错误问题;③确保DMA正确搬运多通道同步采样数据,避免数据混乱或异常;④应用于需要高精度同步采集多路模拟信号的工业控制、电机驱动、电源管理等领域; 阅读建议:此资源结合实际配置截图与代码示例,具有较强实践指导意义。建议读者在开发过程中对照CubeMx界面设置,重点关注ADC公共寄存器配置,并在发现规则组采样异常时检查JAUTO位状态,及时通过软件清零修复问题。同时建议升级至新版CubeMx或关注ST官方更新动态。

2025-11-05

【嵌入式安全启动】基于STiROT的TrustZone应用配置:STM32H5平台安全固件部署指南

内容概要:本文详细介绍了如何在STM32H573I-DK开发板上通过STiROT启动STiROT_Appli_TrustZone应用。由于STiROT_Appli(全安全应用)与STiROT_Appli_TrustZone(包含安全与非安全区域)的Flash布局不同,直接运行后者会导致失败。文章指出需修改env.bat中的应用路径,调整STiROT_Config.xml中“full secure”配置为非全安全模式,并重新生成OBK(Option Bytes Key),才能成功部署和运行TrustZone应用。整个流程依托STM32CubeH5、STM32CubeProgrammer等工具完成,强调了环境配置的关键性。; 适合人群:具备嵌入式开发基础,熟悉STM32平台及安全机制(如TrustZone)的工程师,尤其是从事安全启动与固件更新开发的技术人员;; 使用场景及目标:①帮助开发者在STM32H5系列芯片上正确部署基于TrustZone的安全应用;②解决从标准安全应用迁移到混合安全架构时遇到的配置问题;③实现安全启动流程中OBK的正确生成与烧录; 阅读建议:在操作前应仔细对照文档修改环境变量和XML配置文件,严格按照步骤重新生成密钥并执行烧录脚本,建议结合实际调试过程验证每一步结果,确保配置一致性。

2025-11-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除