- 博客(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+管脚异常复位问题
2024-04-19
应用笔记LAT1239+简谈BlueNRG-LP和-LPS的代码空间优化
2024-04-19
应用笔记LAT1235+BlueNRG-X原理图参数说明
2024-04-17
应用笔记LAT1324+关于连接参数更新进程后导致断连的问题分析
2024-04-17
应用笔记LAT1398+STM32H7+SPI+NSS功能的灵活应用案例
2024-04-15
应用笔记LAT1402+TouchGFX中MCU+负载的计算过程介绍
2024-04-15
应用笔记LAT1403+更换HyperRAM后TouchGFX+显示花屏问题分析
2024-04-15
应用笔记LAT1407+通过LSE校准HSI偏差大的问题解决
2024-04-15
应用笔记LAT1272+STM32+TrustZone开发调试技巧(2)-外设使用常见问题
2024-04-12
应用笔记LAT1280+如何将普通应用更改为OTA+APP
2024-04-06
应用笔记LAT1252+关于STM32WL+LSE添加反馈电阻后无法起振问题
2024-04-05
应用笔记LAT1254+巧用STM32CubeIDE之编译警告
2024-04-05
应用笔记LAT1339+AFCI应用笔记三、使用mlflow管理模型
2024-04-05
应用笔记LAT1313+JDI+LCD+驱动时序介绍
2024-04-05
应用笔记LAT1322+AFCI应用笔记二、数据采集
2024-04-05
应用笔记LAT1241+浅谈STM32库里的回调函数
2024-04-02
应用笔记LAT1340+STM32H5读取温度传感器校准值时进HardFault的原因分析
2024-04-02
应用笔记LAT1332+基于STM32U5片内温度传感器正确测算温度
2024-04-01
应用笔记LAT1255+直接修改寄存器来输出内部时钟的方法
2024-03-30
应用笔记LAT1413+快速开关蓝牙导致设备无广播
2024-03-30
应用笔记LAT1356+如何降低BlueNRG-LPS的开机峰值电流
2024-03-28
应用笔记LAT1315+串口DMA接收不定长数据的一种方法
2024-03-28
应用笔记LAT1323+STM32L452+I2C关闭时钟延展功能的使用
2024-03-28
应用笔记LAT1278+STM32G071从standby模式退出后SRAM数据保留
2024-03-28
应用笔记LAT1281+数据意外变化导致条件判断流程异常v1.0
2024-03-27
应用笔记LAT1334+基于MCSDK5.4.8电机库修改两电阻采样方法
2024-03-26
应用笔记LAT1236+看似无法唤醒的一种异常现象分析
2024-03-26
应用笔记LAT1271+待机模式被意外唤醒之原因分析
2024-03-26
应用笔记LAT1319+Push-Pull模式在全桥峰值电流控制中的应用
2024-03-25
应用笔记LAT1297+蓝牙广播常见问题
2024-03-25
应用笔记LAT1288+STM32+G474中Triggered-half模式的实现
2024-03-22
应用笔记LAT1287+BLE设备地址相关简介
2024-03-21
应用笔记LAT1291+用色阶来显示彩色位图(PDF)
2024-03-21
应用笔记LAT1299+定时器不按设定超时产生中断(PDF)
2024-03-21
应用笔记LAT1305+使用STM32+TT类型IO的注意事项
2024-03-20
应用笔记LAT1308+STM32U5+ADC自校准不成功的问题分析
2024-03-20
应用笔记AN5042+STM32+无线+MCU+的+HSE+频率和启动时间的精确调谐
2024-03-15
应用笔记AN5270+介绍STM32WB蓝牙低功耗无线接口的应用手册
2024-03-15
应用笔记AN5289+STM32WB系列微控制器构建无线应用
2024-03-15
应用笔记AN5406+如何使用STM32CubeWL构建LoRa应用程序
2024-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人