- 博客(88)
- 资源 (13)
- 收藏
- 关注
原创 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
706
原创 STM32CubeIDE 实用技巧之条件断点的妙用
在嵌入式项目中,我们经常会碰到各种各样的异常和故障,比如客户说,某个问题可能需要一天,一周,甚至以月为周期才能复现一次问题。诸如此类问题,着实令工程师苦恼,因为很难去捕获信息来分析和复现问题,这里给大家分享一些我的经验和技巧。
2025-04-17 09:40:39
1346
1
原创 两个 STM32G0 I2C 通信异常的案例分析
后面让客户用示波器抓取 SCL 波形,并且建议在 I2C GPIO 配置为开漏模式时测量上升沿上升的时间,如下图三,在上拉电阻为 4.7K 时,Rise time 是 180ns 左右,符合规格书要求。但问题是功耗变大,客户不接受改小上拉电阻。如上图寄存器状态看,确实是发生了 BERR 错误,并且示波器抓的图形看,发现最后一个NACK 的上升沿变化时,SCL 看起来是为高的。进一步的分析是看谁把 SDA 的电平拉低,建议客户在 SCL,SDA 线路接电阻测量出问题时,I2C 主从两端的电压变化。
2025-04-16 11:42:54
2082
原创 Cortex-M核除0操作的报错机制话题
除 0 操作属于错误操作,在 ARM Cortex M 平台上会有相应的报错机制。但这边会涉及到整型数的除 0 以及浮点数的除 0,另外还会涉及错误产生后的报错机制,是中断还是错误位,本文会对这个报错机制加以说明。使用 STM32H723 做为测试芯片。
2025-04-16 11:08:55
338
原创 如何通过DMA配合CRC功能
STM32 的 CRC 外设是用来实现 CRC 计算的硬件单元,硬件实现 CRC 计算相对于软件算法实现来说,可以大大提高运算速度。CRC 计算单元具有单个 32 位读/写数据寄存器(CRC_DR)。它用于输入新数据(写访问)并保存以前的 CRC 计算结果(读访问)。当 DMA用作数据传输处理器时,可以极大地减轻 CPU 负荷。本文以 STM32G474 为例,介绍如何通过 DMA 配合 CRC 计算,以供读者参考。
2025-04-15 14:13:00
1199
原创 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
799
原创 SPI 传输长度超过 1024 时出现异常的问题分析
使用 STM32U595QII6Q 开发产品时发现,使用该芯片的 SPI3 与对方通信时,如果发送的数据超过 1024 字节时,SPI3 作为主设备,使用 HAL 库的 SPI 相关发送函数,发送完成回调函数不会执行。因为依据手册,对于 SPI3,最大支持的长度为 1023 字节,而 1024 字节超过了最大长度,因此设置失败。单步调试发现,在函数 HAL_SPI_TransmitReceive_DMA,执行以下代码片段时,修改 CR2 寄存器失败,因此 CR2 的值一直未 0。
2025-04-14 13:50:52
474
原创 STM32G0 单线串口通信帧错误问题解析
所以在这个单线串口的设计中,STM32G0 要保持和 STM32L433 的配置一致,也就是上面提到的 GPIO 下拉,TX,RX 通过软件切换并且 TX,RX 电平反向。客户的答复是这是保留上一代产品的设计,新一代的产品设计只是因为成本,将两颗 MCU中的一颗 MCU 更换为了 STM32G0,而原来 STM32L433 上的软件是不能更改的。对于客户奇怪的单线串口设计,我们首先的疑问是为什么不直接使用参考手册提供的现成的单线串口半双工通信方法,而是要自己去实现一套软件切 TX,RX 的单线半双工通信。
2025-04-14 13:39:27
1367
原创 高精度定时器如何实现 PWM 零满占空比的连续切换
在《高精度定时器如何输出零占空比与满占空比 PWM 波形》一文中,我们分享了在高精度定时器中 PWM 输出零占空比和满占空比的方法,但是在实际的应用中还会存在零占空比和满占空比连续切换的情况,在原有的 PWM 发波方式上,若是采样 up-down count 模式的话要实现这种连续切换会存在一些问题,本文将分析相关问题,并给出更加合适的方案来实现 PWM 零-满占空比的连续切换。
2025-04-11 09:02:58
1003
原创 在 STM32 中实现电机测速的方法介绍
在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有 M 法测速和 T法测速。M 法测速是利用在规定时间 Ts 内编码器输出脉冲数量 M1 计算电机转速,如下图所示,信号 A 和 B 为正交编码器的输出信号,C 解码后的计数脉冲(4x)。单位时间(1s)内编码器输出脉冲数量,即脉冲频率:𝑓𝑐 = 𝑀1⁄𝑇𝑠假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为 Z,则电机转速为:r/min 代表圈/分钟。
2025-04-11 08:53:40
2106
原创 奇怪的 NRST 管脚异常复位问题
MCU 内部是远比 MCU 外部电路更复杂的微电子电路,内部线路间距小,不同功能间可能只是由电子开关或多路复用器做选择,当高频干扰进入 MCU 后,干扰可以在看似不直接相连的电路间耦合而影响 MCU 的正常工作。重要的是避免干扰进入 MCU。在排查干扰传递的路径时,不要将目光局限于直接相连的电路或管脚。
2024-04-19 15:48:34
1882
原创 简谈 BlueNRG-LP 和-LPS 的代码空间优化
Linker 中可定义一些宏、用于指定链接脚本文件所需的配置。这些宏定义不作用于.c文件或者.h文件,只作用于链接文件(.icf 或者.sct 或者 *.ld)。SDK 中默认提供了 4 种默认配置的协议栈加一种自定义的协议栈配置(BLE_STACK_CUSTOM_CONF),如下图所示。上述 5 种不同协议栈的配置,本质上就是通过使用宏控制不同的特性功能是否打开。只是前面 4种提供了默认便捷的设置,而最后一种可以进行细粒度更细的自定义的协议栈。
2024-04-19 14:44:51
1194
原创 关于蓝牙连接参数更新进程后导致断连的问题分析
通常客户在做低功耗蓝牙模块设计的时候,如果蓝牙模块在实际使用场景中和手持移动设备(如手机等)绑定使用的话,往往会非常注意蓝牙模块与不同品牌、不同型号的手机的兼容性测试。这些测试项目可能包括长时间连接状态的保持,频繁建立连接,或主动断连后再次建立连接等场景。
2024-04-18 16:20:50
1161
原创 BlueNRG-X 原理图参数说明
为了让客户在原理图设计阶段少走弯路,我这里结合客户评估和设计阶段常遇到的问题,整理了一下 BlueNRG-1/-2 相关设计及注意事项以备客户解惑用。
2024-04-18 16:12:00
1141
原创 STM32芯片软复位导致SRAM2的值被擦除话题
客户在使用 STM32L433CCY6 开发过程中,出现软件复位后 SRAM2 里的值被擦除问题。
2024-04-16 14:05:49
1243
原创 程序运行在 STM32H750 的外扩 FLASH 上两小时后死机
客户使用 STM32H750VBT6,通过 QSPI 外扩了一个 4M 的 NOR FLASH,采用memory map 模式。当程序跳转运行到外设 FLASH 后,大约两个小时后程序死机。客户使用的 IDE 是 KEIL,此问题可以固定重现。在 KEIL 调试模式下重现问题时,通过多次观察发现,程序死的位置总体上会停在两个位置,并不是同一个位置。一个是 TIM15函数的入口;另一个是进入中断函数后的一个赋值语句。
2024-04-16 09:01:39
2120
原创 STM32 SPI NSS 功能的灵活应用案例
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
2024-04-15 11:36:55
1262
原创 通过 LSE 校准 HSI 偏差大的问题解决
某客户使用 STM8AL 时,由于设计限制需使用 HSI 作为系统时钟。为减小 HSI 偏差,使用 LSE 对其进行校准。小批量试产发现 3%左右产品校准后频率和 16MHz 偏差较大。
2024-04-15 11:26:10
859
原创 如何理解 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
1040
原创 关闭 SPI 会导致 WRPERR 错误的问题分析
在 STM32 的应用中,SPI 算是用的比较多的外设了,也是单片机最常见外设之一。客户说它执行了关闭 SPI 的代码,竟然会导致 Flash 中的 WRPERR 标志置位,致使应用碰到一些问题。这就奇怪了,SPI 和内部 Flash 看起来是风马牛不相及的事情,为什么会发生这种事呢?一起来看看吧。
2024-04-13 14:01:52
1228
原创 高精度定时器中 single-shot 计数模式不工作
客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时器无 PWM 输出,在调试模式下发现该子定时器的计数器一直为 0,即计数器一直没有启动,但如果将计数方式修改为continuous 模式,其他保持不变,定时器工作正常。
2024-04-12 20:04:09
1056
原创 STM32 DCMI 的带宽与性能介绍
随着市场对更高图像质量的需求不断增加,成像技术持续发展,各种新兴技术(例如3D、计算、运动和红外线)的不断涌现。如今的成像应用对高质量、易用性、能耗效率、高集成度、快速上市和成本效益提出了全面要求。为了满足这些要求,STM32 MCU 内置的数字照相机接口(DCMI),能够高效连接并行照相机模块。对于使用 STM32 DCMI 开发相机应用的客户,经常有以下问题:STM32 DCMI 最大支持的像素时钟是多少?STM32F4/F7/H7/U5 能支持 1280×720 的相机分辨率吗?最大的帧率是多少?
2024-04-12 18:27:50
1715
原创 在 Keil 中使用 STM32CubeProgrammer
STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。
2024-04-12 11:20:47
1229
原创 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
937
原创 使用 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
2335
1
原创 通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法
随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。
2024-04-11 08:43:47
1901
原创 BlueNRG系列芯片Flash操作与BLE事件的互斥处理
在许多基于 BlueNRG-1/2 系列芯片的低功耗蓝牙的设计项目时,客户通常会在 Flash的特定区域存储定制的数据。然而需要特别注意的是,在 BlueNRG-1/2 方案中,用户对Flash 的读写操作必须在射频空闲的情况下进行,两者是互斥的关系。
2024-04-10 14:31:22
1390
原创 Arm-v7-M 架构的 STM32 如何启用 DWT 计数
客户在使用 STM32H7 的时候,想要使用 DWT 计数来测量代码执行时间,评估执行效率。客户发现在重新上电或 reset 后,无法启用 DWT 进行计数。
2024-04-10 13:42:30
563
原创 如何选择和设置外部晶体适配 BlueNRG-X
鉴于经常有客户对如何选择外部低速晶体,如何测试外部 32khz 时钟,如何直接使用外部32khz 信号源 以及 如何选择外部高速晶体,如何测试和校准频偏存在诸多困惑,我整理了该文档以备解惑用。
2024-04-09 09:14:43
1037
原创 关于 BlueNRG-2 在低功耗模式下的端口保持
BlueNRG-2 作为一款高性能低成本的低功耗蓝牙 SoC 解决方案,实现了在有限的资源下兼容蓝牙 5.2 协议的功能。客户在使用 BlueNRG-2 芯片设计产品时,通常会将其当作方案中的主控芯片来用,控制外围器件,最常见的应用就是使用 GPIO 输出高低电平控制外部器件或作为某些器件的开关使能信号,本文讨论下 BlueNRG-2 在低功耗模式下,客户关于 GPIO 口使用上的一些常见问题。
2024-04-09 09:13:59
774
原创 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
1696
原创 PWM 脉宽跟随方案介绍
数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。
2024-04-08 09:13:52
1166
原创 S2-LP 的 FIFO 机制
众所周知,S2-LP 拥有两个数据 FIFO,一个用于数据传送,另外一个用于数据接收,它们各自的长度均为 128 字节。针对普通的小数据量而言,128 字节长度的 FIFO 基本上可以满足大部分应用。但是,随着应用越来越复杂以及对数据量的需求越来越大,128 字节就不够用了,此时就需要对 FIFO 进行管控,才能接收或者发送更多的数据。本文将详细介绍 S2-LP 针对大数量场景时的 FIFO 机制。
2024-04-07 14:28:03
1207
原创 基于 S2-LP 实现 802.15.4g 帧格式的数据透传
S2-LP 硬件上支持 802.15.4g 的帧格式,但是现有的 SDK 包并没有基于该帧格式的示例工程,因此本篇文章将介绍如何实现基于 802.15.4g 帧格式的数据透传。
2024-04-07 14:27:23
1185
原创 如何将普通应用更改为 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
1060
原创 关于 STM32WL LSE 添加反馈电阻后无法起振问题
客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。
2024-04-06 08:31:00
1009
原创 巧用 STM32CubeIDE 之编译警告
编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。
2024-04-06 08:23:11
1262
原创 AFCI 应用笔记三、使用 mlflow 管理模型
超参数的选择不是一件容易的事情,需要大量的实验以得到稳定可靠的结论。模型实验对数据的质量要求很高,稳定可靠的数据才能得到可靠的结论,否则实际部署会存在较大差异。从文中图中可以看到,不一定采样率越高越好,帧长越长越好,相反,较低的采样率和帧长可以大大节省 Flash 和 Ram 的空间,以及减少推断时间。目前测试进行的实验次数仍然较少,可能得到的结论不一定非常准确,本文中的实验全部使用了相同的数据集和相同的网络模型,以减少评估参数。客户可以根据实际需要,使用更多的模型,更多的测试参数进行实验。
2024-04-05 09:32:08
1552
1
原创 JDI LCD 驱动时序介绍
LCD 显示屏由一系列像素组成,通常以“行像素值 x 列像素值”表示屏幕分辨率。比如320x240 表示此显示屏每行有 320 个像素点,每列有 240 个像素点。色深是指显示屏每个像素能表示多少种颜色,通常用位来表示。比如 16 位色深对应RGB565,每个像素颜色用 2 个字节来表示,其中 RGB565 称作色彩格式。RGB 接口屏通常支持 RGB565,RGB666,RGB888 等色彩格式,这些格式能显示的颜色种数较多,色彩丰富;
2024-04-05 09:08:23
1205
1
原创 AFCI 应用笔记二之数据采集
基于监督学习的神经网络算法需要大量数据作为输入,模型完全由数据驱动,其数据质量是算法有效的必要条件,所以如何高效的采集到数据,以及正确的标注或分析是极其重要的,如果第一步有问题,后续的所有工作都是徒劳。本文将介绍 PECC 的数据采集板,以及来自 GPM China 的数据采集工具,简单分析数据质量的一些方法,以及需要注意的一些事项
2024-04-05 08:58:49
1956
1
LAT1482 STM32G0单线串口通信帧错误问题解析
2025-03-04
LAT1492 TrustZone版的按键点灯程序下载调试
2025-03-04
LAT1495-一个TouchGFX图片压缩导致显示丢失的问题-v1.0
2025-03-04
LAT1483 带TrustZone的按键点灯工程示例
2025-03-04
LAT1496 基于 USBD库CDC Standalone例程中的一个Bug解析
2025-02-28
LAT1500 如何通过DMA配合CRC功能
2025-02-28
LAT1489 STM32N6平台STM32CubeIDE下printf IO重定向到SWV-ITM
2025-02-28
LAT1500 如何通过DMA使用CRC-SP-v1.0
2025-02-28
嵌入式开发:STM32N6平台MCO2输出故障排除与解决方案
2025-02-28
LAT1491 STM32N6的FSBL基本流程介绍-v1.0
2025-02-28
LAT1490 两个STM32G0 I2C 通信异常的案例分析
2025-02-28
LAT1485 STM32CubeIDE实用技巧之条件断点的妙用
2025-02-28
嵌入式系统中TouchGFX平台FPS的计算方法详解及其实现
2025-02-28
嵌入式系统中利用Keil Linker自定义变量优化Flash全片自检配置
2025-02-28
嵌入式开发:STM32U5 SPI3传输数据长度超1024异常现象及解决方案
2025-02-28
嵌入式图形应用中TouchGFX图形渲染DCache未刷新导致花屏问题解析与解决方案
2025-02-28
嵌入式开发:STM32MP13x系列MPU裸金属编程环境搭建与应用
2025-02-07
ARM Cortex-M平台整型及浮点数除零报错机制详解
2025-02-07
PM0269 低功耗蓝牙协议栈 v3.x 编程指南
2024-12-23
02STM32C0拓展入门级MCU产品
2025-10-20
LAT6032 一小时在STM32MPU上运行YOLOv8-训练篇-v1.0
2025-10-20
ST最新白皮书拆解汽车电子EMI合规关键
2025-10-20
STM32U3进阶的超低功耗 MCU
2025-10-20
LAT1522 STM32U5周期性异常复位问题分析-v1.0
2025-10-20
电子工程运算放大器选型与应用全攻略:涵盖工业汽车消费品领域关键参数及设计工具介绍
2025-06-14
数据手册DS14463-stm32u083 数据手册
2025-06-16
AN5260-STM32MP151-153-157 MPU 系列和 STPMIC1 集成在电池供电型应用中
2025-06-16
数据手册DS14096-低功耗蓝牙 5.4 模块数据手册
2025-06-16
数据手册STM32U031数据手册
2025-06-16
基于STM32U3的超低功耗项目开发课件:新系列MCU设计与应用详解介绍了意法半导体
2025-06-16
意法半导体电源管理指南
2025-05-24
【嵌入式系统】TrustZone环境下STM32U5串口通信DMA传输失败原因分析与解决:确保SRAM2特权属性配置正确
2025-05-24
LAT1473 STM32C0 HAL库的SPI 驱动导致的Hardfault问题分析
2025-03-04
LAT1481 高精度定时器如何实现PWM零满占空比的连续切换
2025-03-04
LAT1488 STM32 USBxDevice MSC standalone移植示例
2025-03-04
LAT1447-电机测速方法以及在STM32中的实现-M法与T法的应用详解
2025-03-10
STSAFE-A20用于耗材、配件和互联对象的安全认证配套器件
2025-03-18
LAT1488 STM32 USBxDevice MSC standalone移植示例
2025-03-04
LAT1466 STM32 USBx Device HID Standalone的移植详解及实现方法
2025-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人