自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-04-19 15:48:34 1132

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

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

2024-04-19 14:44:51 948

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

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

2024-04-18 16:20:50 703

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

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

2024-04-18 16:12:00 960

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

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

2024-04-16 14:05:49 796

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

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

2024-04-16 09:01:39 979

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

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

2024-04-15 11:36:55 885

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

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

2024-04-15 11:26:10 547

原创 如何理解 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 790

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

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

2024-04-13 14:01:52 1004

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

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

2024-04-12 20:04:09 820

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

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

2024-04-12 18:27:50 956

原创 在 Keil 中使用 STM32CubeProgrammer

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

2024-04-12 11:20:47 656

原创 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 710

原创 使用 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 1267

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

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

2024-04-11 08:43:47 1038

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

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

2024-04-10 14:31:22 1124

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

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

2024-04-10 13:42:30 317

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

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

2024-04-09 09:14:43 723

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

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

2024-04-09 09:13:59 612

原创 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 1311

原创 PWM 脉宽跟随方案介绍

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

2024-04-08 09:13:52 843

原创 S2-LP 的 FIFO 机制

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

2024-04-07 14:28:03 1034

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

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

2024-04-07 14:27:23 1034

原创 如何将普通应用更改为 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 786

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

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

2024-04-06 08:31:00 672

原创 巧用 STM32CubeIDE 之编译警告

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

2024-04-06 08:23:11 599

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

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

2024-04-05 09:32:08 1069

原创 JDI LCD 驱动时序介绍

LCD 显示屏由一系列像素组成,通常以“行像素值 x 列像素值”表示屏幕分辨率。比如320x240 表示此显示屏每行有 320 个像素点,每列有 240 个像素点。色深是指显示屏每个像素能表示多少种颜色,通常用位来表示。比如 16 位色深对应RGB565,每个像素颜色用 2 个字节来表示,其中 RGB565 称作色彩格式。RGB 接口屏通常支持 RGB565,RGB666,RGB888 等色彩格式,这些格式能显示的颜色种数较多,色彩丰富;

2024-04-05 09:08:23 595 1

原创 AFCI 应用笔记二之数据采集

基于监督学习的神经网络算法需要大量数据作为输入,模型完全由数据驱动,其数据质量是算法有效的必要条件,所以如何高效的采集到数据,以及正确的标注或分析是极其重要的,如果第一步有问题,后续的所有工作都是徒劳。本文将介绍 PECC 的数据采集板,以及来自 GPM China 的数据采集工具,简单分析数据质量的一些方法,以及需要注意的一些事项

2024-04-05 08:58:49 1415

原创 STM32 TIM DMA burst 输出变频 PWM 波形

客户需要 MCU 输出一组变频的 PWM 波形来控制外围器件,并且不同频率脉冲的个数也不同。STM32U5 芯片拥有 TIM1/TIM8 高级定时器,还有通用定时器TIM2/TIM3/TIM4/TIM5 以及 TIM15/TIM16/TIM17。TIM 模块中,可通过修改 ARR 寄存器的值来修改 PWM 的频率。如果使用 TIM1/TIM8 或者 TIM15/TIM16/TIM17,则可以通过修改 RCR 与 CCR 寄存器,来控制脉冲个数及占空比。

2024-04-03 14:12:30 1285

原创 浅谈 STM32 库里的回调函数

有人对 STM32 固件库里的回调函数有些好奇甚至纠结,这里简单介绍下。其实从用法及功能上讲他们并没有什么特别的,跟其它函数一样,也是实现特定功能的代码段。一般来讲,所谓回调函数,泛指基于事件触发而被调用执行的函数,简单点说,就是条件满足了就调用的函数,往往会跟函数指针结合起来通过函数指针实现调用。

2024-04-03 08:17:01 1915

原创 基于 STM32U5 片内温度传感器正确测算温度

STM32 在内部都带有一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好的,可以防止芯片过温运行。

2024-04-02 08:45:01 1199

原创 STM32H5 读取温度传感器校准值时进 HardFault 的原因分析

有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证说明进入 HardFault 与 ICACHE 相关,如果直接关闭ICACHE 虽然可以解决进入 HardFault 的问题,但势必会影响代码执行的效率。所以,我们希望能找到一种更好的方式去处理此问题。

2024-04-02 08:44:27 1030

原创 STM32L4R9 的 QuadSPI Flash 通讯速率不理想

客户反应 STM32L4R9 同 QSPI Flash 通讯,测出来的读取速率为 10MB/s, 和理论值相差较大。

2024-04-01 15:52:39 572

原创 STM32一个地址未对齐引起的 HardFault 异常

客户在使用 STM32G070 的时候,KEIL MDK 为编译工具,当编译优化选项设置为Level0 的时候,程序会出现 Hard Fault 异常,而当编译优化选项设置为 Level1 的时候,则程序运行正常。表面上看,这似乎是 KEIL MDK 的问题,通过分析,导致这个问题的本质原因是内存地址没有对齐引起的,下面章节将详细分析该问题的来龙去脉以及解决方法。

2024-04-01 15:46:20 1159

原创 STM32 直接修改寄存器来输出内部时钟的方法

在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到GPIO 脚位上进行观察和测试。下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法

2024-03-30 16:58:48 411

原创 【应用笔记】LAT1413+快速开关蓝牙导致设备无广播

客户使用 BlueNRG-345MC 开发了一个 BLE 外设,和手机连接。在测试中发现,手机连接上外设之后,不断地在手机上点击蓝牙的开关按钮,造成设备不断地断开、重连;少则几次,多则几十次。点击之后,必然出现 BLE 外设无广播信号的现象。该问题已经得到了解决。本文将展开聊聊该问题的解决过程和思路,并就该问题总结、分享一些 BLE 连接过程的处理经验。

2024-03-30 16:48:04 1005

原创 如何降低 BlueNRG-LPS 的开机峰值电流

BlueNRG 系列存在开机瞬间会出现很大的峰值电流的现象,预计有 20ma 左右。针对此现象,经常有客户询问该峰值电流会不会导致设备工作异常?会不会导致电池使用寿命缩短(考虑到一般纽扣电池能承受的峰值电流大概在 15ma 左右)?有没有软件或者硬件的方法限制其峰值电流?目前 BlueNRG-LPS 系列芯片引入了可以通过修改软件寄存器达到限制开机峰值电流的方法,在这里我整理了该文档以备解惑供客户参考。注意:目前只有BlueNRG-LPS 系列芯片有该功能

2024-03-29 08:46:37 951

原创 STM32 串口 DMA 接收不定长数据的一种方法

使用串口接收不定长数据时,可以有多种方法,比如最常见的有额外使能一个定时器,在超过定时范围未收到后续的字节时,认为此帧结束;或者利用 IDLE 中断,当数据空闲时,自动产生中断;亦或每接收到一个字节后都通过应用程序进行一次处理。这次我们介绍另外一种方法,在 DMA 方式下利用硬件接收超时中断(Receiver timeout interrupt)实现不定长数据的接收。

2024-03-29 08:45:35 1022

应用笔记LAT1244+奇怪的NRST+管脚异常复位问题

这个问题是客户对开发的平台做 EMS 浪涌测试的时候发生的, 平台上使用了一个STM32G474 RCT6 MCU 。在某个等级的 EMS 测试中, 客户发现 MCU 有时候会异常复位而影响平台的稳定工作。

2024-04-19

应用笔记LAT1239+简谈BlueNRG-LP和-LPS的代码空间优化

客户在使用 BlueNRG-LP/LPS 芯片时,增加 OTA 服务后常常反馈说,编译代码区域超空间了,需要帮忙优化一下。后文主要通过下列步骤进行分析和优化 BlueNRG-LP/LPS 的代码空间: a. 通过分析 BlueNRG-LP/LPS 的 OTA 方式,让客户可以选择合适的方式; b. 通过整体分析 BlueNRG-LP/LPS 的链接文件(*.icf/*.sct/*.ld)了解默认工程的存储分布; c. 通过裁剪协议栈,选择合适的协议栈功能,优化 BlueNRG-LP/LPS 的代码空间; d. 通过使用静态协议栈,进一步优化 BlueNRG-LP/LPS 的代码空间; e. 其他方案;

2024-04-19

应用笔记LAT1235+BlueNRG-X原理图参数说明

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

2024-04-17

应用笔记LAT1324+关于连接参数更新进程后导致断连的问题分析

通常客户在做低功耗蓝牙模块设计的时候,如果蓝牙模块在实际使用场景中和手持移动 设备(如手机等)绑定使用的话,往往会非常注意蓝牙模块与不同品牌、不同型号的手机的兼 容性测试。这些测试项目可能包括长时间连接状态的保持,频繁建立连接,或主动断连后再 次建立连接等场景。 本文描述的问题是客户在其兼容性测试中发现的一个比较典型的问题, 即当从设备在与手机端处于连接状态下,从设备启动连接参数更新进程后,会导致断连的问 题。由于是兼容性测试,测试设备,特别是作为主设备的手机来自不同的供应商,在兼容低 功耗蓝牙协议的基础上,某些细节部分的差异难以避免。所以,本文只论述了该客户问题的 分析过程及得出的结果,并不期望涵盖所有类似场景下导致断连的原因。

2024-04-17

应用笔记LAT1398+STM32H7+SPI+NSS功能的灵活应用案例

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

2024-04-15

应用笔记LAT1402+TouchGFX中MCU+负载的计算过程介绍

从 TouchGFX Desinger 下载的 TBS(TouchGFX Board Setup)大都带有 MCU 的 负载计算功能,那么如何在自己的板子上增加 MCU 负载计算功能呢?本文档参考从 TouchGFX Designer 上下载的 STM32F746 的 TBS,讲解 MCU 负载计算的实现过程。

2024-04-15

应用笔记LAT1403+更换HyperRAM后TouchGFX+显示花屏问题分析

对于嵌入式设备人机界面的升级,ST 提供了 STM32CubeMX+X-Cube-TouchGFX 平台化的开发方案,供用户快速开发出智能手机效果的 GUI 产品

2024-04-15

应用笔记LAT1407+通过LSE校准HSI偏差大的问题解决

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

2024-04-15

应用笔记LAT1272+STM32+TrustZone开发调试技巧(2)-外设使用常见问题

在 STM32 TrustZone 开发调试技巧的第(1)篇中,我们介绍了内核的 SAU/IDAU, 地址的安全属性配置,资源的安全属性配置,以及内核访问资源的安全规则等内容,这部 分作为 TrustZone S/NS 工程开发的基础,让 S 和 NS 工程代码能够基本运行起来。 在此基础上,S/NS App 还需要使用片上外设等资源,实现应用程序的业务逻辑和功 能,这时候往往会遇到一些与外设使用相关的问题。 在这一篇中,我们将把重点放在 Trust Zone 架构下应用开发中使用外设的环节,从外 设中断、DMA、GPIO 及其与 IO 连接的外设等几个方面,介绍这些部分与传统的不带 TrustZone 的 STM32 开发相比有哪些变化,同时会列举一些相关开发中的常见问题,并给 出问题的分析与解决方法,供开发者参考。

2024-04-12

应用笔记LAT1280+如何将普通应用更改为OTA+APP

客户在基于 BlueNRG-LP 设计产品时,code base 用的是 SDK 中某些不带 OTA 升级功能的参考示例,当客户完成其基本设计功能后,想要添加 OTA 的软件升级功能。在这个过程中往往会碰到一些问题。基于上述考虑,本文尝试阐述在 BlueNRG-LP_LPS DK 1.2.0 中默认参考示例“BLE_Security”添加 OTA 功能的过程,及其中需要注意的相关细节。 IDE 工具使用的是 KEIL。

2024-04-06

应用笔记LAT1252+关于STM32WL+LSE添加反馈电阻后无法起振问题

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

2024-04-05

应用笔记LAT1254+巧用STM32CubeIDE之编译警告

在 STM32CubeIDE 中,我们可以通过主动 warning(甚至 error)的方式来通知工程 师,使得一些容易遗漏的配置得到重视。 例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么 我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注 需要注意的信息。具体代码如图 1:

2024-04-05

应用笔记LAT1339+AFCI应用笔记三、使用mlflow管理模型

由于 AI 神经网络涉及多种参数,需要频繁修改各种超参数,比如:learning rate,batchsize,filter numbers,alpha 等等,每个参数都有可能影响到模型最终的准确率,所以比较这些参数之间的差异,并且进行记录和保存,是 AI 算法优化必需的流程。 本文将介绍 python 的一个库:mlflow,可以使 AI 实验的效率更高,提供一种更方便的比较方法。

2024-04-05

应用笔记LAT1313+JDI+LCD+驱动时序介绍

绝大多数 STM32 MCU 都可应用于图形界面,而且很多系列还内置图形硬件 LTDC,支持驱动 RGB 接口的 LCD。但是存在少数类型的 LCD,如 JDI 屏,除了 STM32L4P5 支持外,其它 MCU 只能根据屏的接口时序要求,用 GPIO 来驱动。本文会介绍 JDI 屏的接口时序与驱动过程

2024-04-05

应用笔记LAT1322+AFCI应用笔记二、数据采集

基于监督学习的神经网络算法需要大量数据作为输入,模型完全由数据驱动,其数据质量是算法有效的必要条件,所以如何高效的采集到数据,以及正确的标注或分析是极其重要的,如果第一步有问题,后续的所有工作都是徒劳。 本文将介绍 PECC 的数据采集板,以及来自 GPM China 的数据采集工具,简单分析数据质量的一些方法,以及需要注意的一些事项。

2024-04-05

应用笔记LAT1241+浅谈STM32库里的回调函数

有人对 STM32 固件库里的回调函数有些好奇甚至纠结,这里简单介绍下。其实从用法及功能上讲他们并没有什么特别的,跟其它函数一样,也是实现特定功能的代码段。一般来讲,所谓回调函数,泛指基于事件触发而被调用执行的函数,简单点说,就是条件满足了就调用的函数,往往会跟函数指针结合起来通过函数指针实现调用。

2024-04-02

应用笔记LAT1340+STM32H5读取温度传感器校准值时进HardFault的原因分析

有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证说明进入 HardFault 与 ICACHE 相关,如果直接关闭ICACHE 虽然可以解决进入 HardFault 的问题,但势必会影响代码执行的效率。所以,我们希望能找到一种更好的方式去处理此问题。

2024-04-02

应用笔记LAT1332+基于STM32U5片内温度传感器正确测算温度

STM32 在内部都带有一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好的,可以防止芯片过温运行。

2024-04-01

应用笔记LAT1255+直接修改寄存器来输出内部时钟的方法

在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到GPIO 脚位上进行观察和测试。 下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。

2024-03-30

应用笔记LAT1413+快速开关蓝牙导致设备无广播

客户使用 BlueNRG-345MC 开发了一个 BLE 外设,和手机连接。在测试中发现,手机连接上外设之后,不断地在手机上点击蓝牙的开关按钮,造成设备不断地断开、重连;少则几次,多则几十次。点击之后,必然出现 BLE 外设无广播信号的现象。该问题已经得到了解决。本文将展开聊聊该问题的解决过程和思路,并就该问题总结、分享一些 BLE 连接过程的处理经验。

2024-03-30

应用笔记LAT1356+如何降低BlueNRG-LPS的开机峰值电流

BlueNRG 系列存在开机瞬间会出现很大的峰值电流的现象,预计有 20ma 左右。针对此现象,经常有客户询问该峰值电流会不会导致设备工作异常?会不会导致电池使用寿命缩短(考虑到一般纽扣电池能承受的峰值电流大概在 15ma 左右)?有没有软件或者硬件的方法限制其峰值电流?目前 BlueNRG-LPS 系列芯片引入了可以通过修改软件寄存器达到限制开机峰值电流的方法,在这里我整理了该文档以备解惑供客户参考。注意:目前只有BlueNRG-LPS 系列芯片有该功能,BlueNRG-1/2, BlueNRG-LP 系列还不支持该功能。

2024-03-28

应用笔记LAT1315+串口DMA接收不定长数据的一种方法

使用串口接收不定长数据时,可以有多种方法,比如最常见的有额外使能一个定时器,在超过定时范围未收到后续的字节时,认为此帧结束;或者利用 IDLE 中断,当数据空闲时,自动产生中断;亦或每接收到一个字节后都通过应用程序进行一次处理。这次我们介绍另外一 方法,在 DMA 方式下利用硬件接收超时中断(Receiver timeout interrupt)实现不定长数据的接收。

2024-03-28

应用笔记LAT1323+STM32L452+I2C关闭时钟延展功能的使用

某客户使用 STM32L452(作为 I2C 设备)开发光模块产品,在测试时发现,同一设备(硬件及软件均未变动),当插入交换机时,可正常通信,但是当插入 FPGA 测试机后,I2C 通信不正常。通过出现问题时的 I2C 波形的对比,客户初步认为是第 9 个时钟脉宽相对其他时钟过窄导致的(如下图)。询问我们有没有办法配置这个宽度 ?

2024-03-28

应用笔记LAT1278+STM32G071从standby模式退出后SRAM数据保留

某客户使用 STM32G071 芯片从 standby 模式下唤醒,想要 SRAM 的数据在退出 standby模式后得以保持。根据手册的描述,配置了相应的比特位,但是发现数据仍然保持不了。

2024-03-28

应用笔记LAT1281+数据意外变化导致条件判断流程异常v1.0

用户使用的 MCU 型号是 STM32H750VB。 在客户的代码中有多个条件语句,在条件里面的变量数值没有变化的情况下执行了条件里面的逻辑。 即变量 A 在明明没有变化且条件不满足的情况下, 程序运行时偏偏执行了条件内部的代码. 很奇怪的现象。一时很难判断是编译器的问题还是芯片问题.

2024-03-27

应用笔记LAT1334+基于MCSDK5.4.8电机库修改两电阻采样方法

在当前使用的电机电阻采样方式中分为单电阻,双电阻,三电阻三种方式,其中在 ST MCSDK5.4 库中支持了两种采样方式,单电阻和三电阻,在市面还存在另外一种采样方式,即双电阻采样,本文讨论的是如何修改现有驱动库支持该种采样方式。

2024-03-26

应用笔记LAT1236+看似无法唤醒的一种异常现象分析

用户使用 STM32G0B1 作为汽车多媒体音响控制器的控制芯片,用来作为收音机频道存贮和 各种检测控制。在实验室条件下模拟汽车频繁打火的情形进行测试,连续工作 72 小时实验中,进入 STOP 模式后,会出现无法再继续运行的情况(屏幕没有显示输出,外部中断无反应)。

2024-03-26

应用笔记LAT1271+待机模式被意外唤醒之原因分析

客户在项目中使用 STM32G0B1, 由产品内置电池供电. 客户在程序中有使用到 standby 模式, 通过 WKUP2(PC13), WKUP6 引脚唤醒. 除此之外并没有其它唤醒源. 代码中有使用到 RTC,但只是用来记录日期和时间, 并没有参与 standby 的唤醒

2024-03-26

应用笔记LAT1319+Push-Pull模式在全桥峰值电流控制中的应用

客户在全桥变换器的应用中需要采用峰值电流控制方式,为了防止磁偏,要求滞后臂的 PWM驱动脉宽严格跟随超前臂的 PWM 驱动脉宽。但在峰值电流控制中,超前臂 PWM 的关断是由峰值电流比较事件决定(即桥臂电流达到给定电流),是不可预知的,所以常规的通过更新比较寄存器修改脉宽的方式无法实现该功能。

2024-03-25

应用笔记LAT1297+蓝牙广播常见问题

本文是一些解决 BLE 广播相关问题的经验分享。对于用户常常遇到的一些问题,比如广播包最多能带多少用户数据,广播名字怎么设置,广播类型有哪些,为什么有些手机无法扫描到设备等问题,都将在本文得到解答。

2024-03-25

应用笔记LAT1288+STM32+G474中Triggered-half模式的实现

STM32 G474 中包含了针对数字电源应用的高精度定时器(HRTIMER)外设,作为 HRTIMER V2 版本,其新增了 Triggered-half 功能,目的就是为了简化采样变频控制方式下两相交错并联工作电源的设计。

2024-03-22

应用笔记LAT1287+BLE设备地址相关简介

所有蓝牙设备都应具有一个蓝牙设备地址 (BD_ADDR),该地址(及其地址类型)可以 唯一地(一定范围内唯一)标识该设备。使用者如果不了解其概念,看上去可能会有很多 疑惑,甚至容易造成侵权问题。 蓝牙的设备地址分为两大类,一类是 Public,一类是 Random 的。其中 Random 类地址里面又分为静态地址和私有地址。

2024-03-21

应用笔记LAT1291+用色阶来显示彩色位图(PDF)

此需求由某客户提出,需要用指定颜色的色阶替换原始位图的颜色来显示彩色位图。 STM32U59 系列单片机集成的 GPU2D 外设具有将彩色(RGB24)转换为纯亮度格式(L8),以及将原始 Alpha 信息(A8)配合指定颜色(RGB24)重新生成彩色(RGB24)的功能。我们可以先将原始位图像素彩色信息转换为 L8 格式存入临时缓冲,再利用 GPU2D 将此临时缓冲数据按照 A8 像素格式,配合指定的颜色进行渲染生成色阶,实现原始位图像素从彩色到色阶的转换。

2024-03-21

应用笔记LAT1299+定时器不按设定超时产生中断(PDF)

某客户设计需要启动定时器在 3ms 后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。

2024-03-21

应用笔记LAT1305+使用STM32+TT类型IO的注意事项

在 STM32 系列 MCU 中, 除了一些特殊管脚外,绝大多数管脚都可以分类为 FT (兼容5V 信号)或 TT(兼容 3V3 信号)类型的 IO,由于 MCU 内部设计的不同, TT IO 相比 5V IO 有更多的限制,下面我们将予以说明; 解释 TT 和 FT IO 的不同内部结构以及因此导致的对输入电压和电流的不同限制要求

2024-03-20

应用笔记LAT1308+STM32U5+ADC自校准不成功的问题分析

很多 STM32 系列中的 ADC 都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括 ADC 上电/掉电序列在内的所有校准动作。在这个过程中,ADC 计算出一个校准因子,并在内部应用到此 ADC 模块,直到下一次 ADC 掉电。在执行任何 ADC 操作之前必须校准,以消除芯片之间 ADC 结果的偏差。

2024-03-20

应用笔记AN5042+STM32+无线+MCU+的+HSE+频率和启动时间的精确调谐

本应用笔记描述了如何使用 STM32WB 和 STM32WL 系列微控制器(以下简称 STM32 无线MCU),对用于 RF 应用的 HSE 进行调谐。此类产品提供了一种具有成本效益的高效解决方案,其中通过使用其内部负载电容来控制振荡器精度,从而节省了外部电容的成本并减少了晶振限制。 STM32 无线 MCU 采用外部振荡器高速时钟源作为 RF 时钟生成的基础。HSE 精度对于 RF 系统性能至关重要,因此对外部振荡器进行精细调谐来实现最高时钟精度。 本文档的第一部分介绍了晶体振荡器解决方案。第二部分介绍并比较了三种 HSE 频率调谐方法,即手动调谐方法、自动调谐方法和基于 STM32CubeMonitor-RF 的调谐方法(仅适用于 STM32WB系列)。以下各节描述了这些方法在 STM32WB 和 STM32WL Nucleo 板上的应用,提供了采用STM32Cube 扩展包 X-CUBE-CLKTRIM 的固件和脚本样例。 其中一节专门描述了如何配置 HSE,使其启动阶段稳定可靠并针对 STM32WB 系列微控制器得到优化。

2024-03-15

应用笔记AN5270+介绍STM32WB蓝牙低功耗无线接口的应用手册

低功耗蓝牙是由蓝牙技术联盟(Bluetooth SIG)设计和销售的无线个人局域网技术,该技术面向医疗保健、健身、信标、安全和家庭娱乐行业的创新应用。 与标准蓝牙相比,低功耗蓝牙大大降低了功耗和成本,同时保持了相似的通信范围。 标准 HCI 指令在“蓝牙核心规范 V5.3(蓝牙低功耗规范是其中一部分)中定义。 此应用笔记描述了专有指令。

2024-03-15

应用笔记AN5289+STM32WB系列微控制器构建无线应用

本文档一步一步地指导设计人员基于 STM32WB 系列微控制器构建特定 Bluetooth低功耗或802.15.4 应用。它汇集了最重要的信息,并且列出了需要处理的方面。 为了充分利用本文档中的信息进行应用开发,用户必须熟悉 STM32 微控制器、Bluetooth低功耗技术、802.15.4 OpenThread 协议、Zigbee协议和 802.15.4 MAC 层,并且必须理解诸如低功耗管理和任务调度等系统服务。

2024-03-15

应用笔记AN5406+如何使用STM32CubeWL构建LoRa应用程序

本应用笔记将指导用户完成基于 STM32WL 系列微控制器构建特定 LoRa应用程序所需的所有步骤。 LoRa是一种无线通信网络,旨在以极低的比特率进行远距离通信,并延长电池供电型传感器的寿命。LoRaWAN定义了 通信和安全协议,此协议会确保与 LoRa网络的互操作性。 STM32CubeWL MCU 软件包中的固件兼容 LoRa Alliance规范协议 LoRaWAN,并具有以下主要特性:  可直接集成应用程序  低功耗 LoRa解决方案的简易附加组件  CPU 负载极低  无延迟要求  STM32 存储器占用空间小  低功耗定时服务 STM32CubeWL MCU 软件包的固件基于 STM32Cube HAL 驱动程序。 本文提供了有关带 STM32WL55JC 的 NUCLEO-WL55JC 开发板(适于高频段的订购代码为 NUCLEO-WL55JC1,适于低频段的订购代码为 NUCLEO-WL55JC2)和带 TM32WL5M 的 B-WL5M-SUB1 连接扩展板的客户应用程序示例。 为了充分利用本应用笔记中的信息并创建应用程序,用户必须熟悉

2024-03-15

空空如也

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

TA关注的人

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