ST相关
文章平均质量分 91
冻结的鱼
半枚程序猿,半枚产品狗。
展开
-
奇怪的 NRST 管脚异常复位问题
MCU 内部是远比 MCU 外部电路更复杂的微电子电路,内部线路间距小,不同功能间可能只是由电子开关或多路复用器做选择,当高频干扰进入 MCU 后,干扰可以在看似不直接相连的电路间耦合而影响 MCU 的正常工作。重要的是避免干扰进入 MCU。在排查干扰传递的路径时,不要将目光局限于直接相连的电路或管脚。原创 2024-04-19 15:48:34 · 1366 阅读 · 0 评论 -
STM32芯片软复位导致SRAM2的值被擦除话题
客户在使用 STM32L433CCY6 开发过程中,出现软件复位后 SRAM2 里的值被擦除问题。原创 2024-04-16 14:05:49 · 945 阅读 · 0 评论 -
程序运行在 STM32H750 的外扩 FLASH 上两小时后死机
客户使用 STM32H750VBT6,通过 QSPI 外扩了一个 4M 的 NOR FLASH,采用memory map 模式。当程序跳转运行到外设 FLASH 后,大约两个小时后程序死机。客户使用的 IDE 是 KEIL,此问题可以固定重现。在 KEIL 调试模式下重现问题时,通过多次观察发现,程序死的位置总体上会停在两个位置,并不是同一个位置。一个是 TIM15函数的入口;另一个是进入中断函数后的一个赋值语句。原创 2024-04-16 09:01:39 · 1461 阅读 · 0 评论 -
STM32 SPI NSS 功能的灵活应用案例
某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。原创 2024-04-15 11:36:55 · 1042 阅读 · 0 评论 -
通过 LSE 校准 HSI 偏差大的问题解决
某客户使用 STM8AL 时,由于设计限制需使用 HSI 作为系统时钟。为减小 HSI 偏差,使用 LSE 对其进行校准。小批量试产发现 3%左右产品校准后频率和 16MHz 偏差较大。原创 2024-04-15 11:26:10 · 644 阅读 · 0 评论 -
如何理解 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 · 870 阅读 · 0 评论 -
关闭 SPI 会导致 WRPERR 错误的问题分析
在 STM32 的应用中,SPI 算是用的比较多的外设了,也是单片机最常见外设之一。客户说它执行了关闭 SPI 的代码,竟然会导致 Flash 中的 WRPERR 标志置位,致使应用碰到一些问题。这就奇怪了,SPI 和内部 Flash 看起来是风马牛不相及的事情,为什么会发生这种事呢?一起来看看吧。原创 2024-04-13 14:01:52 · 1075 阅读 · 0 评论 -
高精度定时器中 single-shot 计数模式不工作
客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时器无 PWM 输出,在调试模式下发现该子定时器的计数器一直为 0,即计数器一直没有启动,但如果将计数方式修改为continuous 模式,其他保持不变,定时器工作正常。原创 2024-04-12 20:04:09 · 871 阅读 · 0 评论 -
STM32 DCMI 的带宽与性能介绍
随着市场对更高图像质量的需求不断增加,成像技术持续发展,各种新兴技术(例如3D、计算、运动和红外线)的不断涌现。如今的成像应用对高质量、易用性、能耗效率、高集成度、快速上市和成本效益提出了全面要求。为了满足这些要求,STM32 MCU 内置的数字照相机接口(DCMI),能够高效连接并行照相机模块。对于使用 STM32 DCMI 开发相机应用的客户,经常有以下问题:STM32 DCMI 最大支持的像素时钟是多少?STM32F4/F7/H7/U5 能支持 1280×720 的相机分辨率吗?最大的帧率是多少?原创 2024-04-12 18:27:50 · 1208 阅读 · 0 评论 -
在 Keil 中使用 STM32CubeProgrammer
STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。原创 2024-04-12 11:20:47 · 914 阅读 · 0 评论 -
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 · 804 阅读 · 0 评论 -
使用 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 · 1562 阅读 · 0 评论 -
通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法
随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。原创 2024-04-11 08:43:47 · 1282 阅读 · 0 评论 -
Arm-v7-M 架构的 STM32 如何启用 DWT 计数
客户在使用 STM32H7 的时候,想要使用 DWT 计数来测量代码执行时间,评估执行效率。客户发现在重新上电或 reset 后,无法启用 DWT 进行计数。原创 2024-04-10 13:42:30 · 372 阅读 · 0 评论 -
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 · 1382 阅读 · 0 评论 -
PWM 脉宽跟随方案介绍
数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。原创 2024-04-08 09:13:52 · 925 阅读 · 0 评论 -
S2-LP 的 FIFO 机制
众所周知,S2-LP 拥有两个数据 FIFO,一个用于数据传送,另外一个用于数据接收,它们各自的长度均为 128 字节。针对普通的小数据量而言,128 字节长度的 FIFO 基本上可以满足大部分应用。但是,随着应用越来越复杂以及对数据量的需求越来越大,128 字节就不够用了,此时就需要对 FIFO 进行管控,才能接收或者发送更多的数据。本文将详细介绍 S2-LP 针对大数量场景时的 FIFO 机制。原创 2024-04-07 14:28:03 · 1076 阅读 · 0 评论 -
如何将普通应用更改为 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 · 894 阅读 · 0 评论 -
关于 STM32WL LSE 添加反馈电阻后无法起振问题
客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。原创 2024-04-06 08:31:00 · 780 阅读 · 0 评论 -
巧用 STM32CubeIDE 之编译警告
编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。原创 2024-04-06 08:23:11 · 842 阅读 · 0 评论 -
AFCI 应用笔记三、使用 mlflow 管理模型
超参数的选择不是一件容易的事情,需要大量的实验以得到稳定可靠的结论。模型实验对数据的质量要求很高,稳定可靠的数据才能得到可靠的结论,否则实际部署会存在较大差异。从文中图中可以看到,不一定采样率越高越好,帧长越长越好,相反,较低的采样率和帧长可以大大节省 Flash 和 Ram 的空间,以及减少推断时间。目前测试进行的实验次数仍然较少,可能得到的结论不一定非常准确,本文中的实验全部使用了相同的数据集和相同的网络模型,以减少评估参数。客户可以根据实际需要,使用更多的模型,更多的测试参数进行实验。原创 2024-04-05 09:32:08 · 1261 阅读 · 1 评论 -
JDI LCD 驱动时序介绍
LCD 显示屏由一系列像素组成,通常以“行像素值 x 列像素值”表示屏幕分辨率。比如320x240 表示此显示屏每行有 320 个像素点,每列有 240 个像素点。色深是指显示屏每个像素能表示多少种颜色,通常用位来表示。比如 16 位色深对应RGB565,每个像素颜色用 2 个字节来表示,其中 RGB565 称作色彩格式。RGB 接口屏通常支持 RGB565,RGB666,RGB888 等色彩格式,这些格式能显示的颜色种数较多,色彩丰富;原创 2024-04-05 09:08:23 · 849 阅读 · 1 评论 -
AFCI 应用笔记二之数据采集
基于监督学习的神经网络算法需要大量数据作为输入,模型完全由数据驱动,其数据质量是算法有效的必要条件,所以如何高效的采集到数据,以及正确的标注或分析是极其重要的,如果第一步有问题,后续的所有工作都是徒劳。本文将介绍 PECC 的数据采集板,以及来自 GPM China 的数据采集工具,简单分析数据质量的一些方法,以及需要注意的一些事项原创 2024-04-05 08:58:49 · 1572 阅读 · 1 评论 -
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 · 1708 阅读 · 0 评论 -
浅谈 STM32 库里的回调函数
有人对 STM32 固件库里的回调函数有些好奇甚至纠结,这里简单介绍下。其实从用法及功能上讲他们并没有什么特别的,跟其它函数一样,也是实现特定功能的代码段。一般来讲,所谓回调函数,泛指基于事件触发而被调用执行的函数,简单点说,就是条件满足了就调用的函数,往往会跟函数指针结合起来通过函数指针实现调用。原创 2024-04-03 08:17:01 · 3139 阅读 · 0 评论 -
基于 STM32U5 片内温度传感器正确测算温度
STM32 在内部都带有一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好的,可以防止芯片过温运行。原创 2024-04-02 08:45:01 · 1324 阅读 · 0 评论 -
STM32H5 读取温度传感器校准值时进 HardFault 的原因分析
有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证说明进入 HardFault 与 ICACHE 相关,如果直接关闭ICACHE 虽然可以解决进入 HardFault 的问题,但势必会影响代码执行的效率。所以,我们希望能找到一种更好的方式去处理此问题。原创 2024-04-02 08:44:27 · 1084 阅读 · 0 评论 -
STM32L4R9 的 QuadSPI Flash 通讯速率不理想
客户反应 STM32L4R9 同 QSPI Flash 通讯,测出来的读取速率为 10MB/s, 和理论值相差较大。原创 2024-04-01 15:52:39 · 747 阅读 · 0 评论 -
STM32一个地址未对齐引起的 HardFault 异常
客户在使用 STM32G070 的时候,KEIL MDK 为编译工具,当编译优化选项设置为Level0 的时候,程序会出现 Hard Fault 异常,而当编译优化选项设置为 Level1 的时候,则程序运行正常。表面上看,这似乎是 KEIL MDK 的问题,通过分析,导致这个问题的本质原因是内存地址没有对齐引起的,下面章节将详细分析该问题的来龙去脉以及解决方法。原创 2024-04-01 15:46:20 · 1408 阅读 · 0 评论 -
STM32 直接修改寄存器来输出内部时钟的方法
在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到GPIO 脚位上进行观察和测试。下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法原创 2024-03-30 16:58:48 · 489 阅读 · 0 评论 -
STM32 串口 DMA 接收不定长数据的一种方法
使用串口接收不定长数据时,可以有多种方法,比如最常见的有额外使能一个定时器,在超过定时范围未收到后续的字节时,认为此帧结束;或者利用 IDLE 中断,当数据空闲时,自动产生中断;亦或每接收到一个字节后都通过应用程序进行一次处理。这次我们介绍另外一种方法,在 DMA 方式下利用硬件接收超时中断(Receiver timeout interrupt)实现不定长数据的接收。原创 2024-03-29 08:45:35 · 1249 阅读 · 0 评论 -
关闭 I2C 时钟延展功能的使用介绍
某客户使用 STM32L452(作为 I2C 设备)开发光模块产品,在测试时发现,同一设备(硬件及软件均未变动),当插入交换机时,可正常通信,但是当插入 FPGA 测试机后,I2C 通信不正常。通过出现问题时的 I2C 波形的对比,客户初步认为是第 9 个时钟脉宽相对其他时钟过窄导致的(如下图)。询问我们有没有办法配置这个宽度?原创 2024-03-28 08:58:33 · 1206 阅读 · 0 评论 -
STM32G071 从 standby 模式退出后的 SRAM 数据保留
某客户使用 STM32G071 芯片从 standby 模式下唤醒,想要 SRAM 的数据在退出 standby模式后得以保持。根据手册的描述,配置了相应的比特位,但是发现数据仍然保持不了。原创 2024-03-28 08:26:06 · 887 阅读 · 0 评论 -
数据意外变化导致条件判断流程异常
用户使用的 MCU 型号是 STM32H750VB。在客户的代码中有多个条件语句,在条件里面的变量数值没有变化的情况下执行了条件里面的逻辑。即变量 A 在明明没有变化且条件不满足的情况下, 程序运行时偏偏执行了条件内部的代码. 很奇怪的现象。一时很难判断是编译器的问题还是芯片问题.了解到客户的代码中使用了第三方库, xx.o 文件, 像这样的条件有 80 多个, 每次出现问题的具体变量并不是固定哪一个, 但是在大概 10 分钟内肯定会有其中一个出现执行逻辑问题。原创 2024-03-27 09:17:48 · 1050 阅读 · 0 评论 -
基于 MCSDK5.4.8 电机库修改两电阻采样方法
在当前使用的电机电阻采样方式中分为单电阻,双电阻,三电阻三种方式,其中在 ST MCSDK5.4 库中支持了两种采样方式,单电阻和三电阻,在市面还存在另外一种采样方式,即双电阻采样,本文讨论的是如何修改现有驱动库支持该种采样方式。原创 2024-03-27 09:03:45 · 1537 阅读 · 0 评论 -
STM32看似无法唤醒的一种异常现象分析
STM32 G0 系列产品具有丰富的外设和强大的处理性能以及良好的低功耗特性,被广泛用于各类工业产品中,包括一些需要低功耗需求的应用。用户使用 STM32G0B1 作为汽车多媒体音响控制器的控制芯片,用来作为收音机频道存贮和各种检测控制。在实验室条件下模拟汽车频繁打火的情形进行测试,连续工作 72 小时实验中,进入 STOP 模式后,会出现无法再继续运行的情况(屏幕没有显示输出,外部中断无反应)。原创 2024-03-26 09:03:10 · 1477 阅读 · 0 评论 -
stm32待机模式被意外唤醒之原因分析
客户在项目中使用 STM32G0B1, 由产品内置电池供电. 客户在程序中有使用到 standby 模式, 通过 WKUP2(PC13), WKUP6 引脚唤醒. 除此之外并没有其它唤醒源. 代码中有使用到 RTC,但只是用来记录日期和时间, 并没有参与 standby 的唤醒.Figure 1 PC13 引脚输出 1Hz 方波, 原因未明故障是随机, 一般两到三天可能会出现, 暂未发现固定规律. 一旦出现, 按复位键无法恢复, 必须断电后上电才会恢复正常.原创 2024-03-26 08:48:46 · 1579 阅读 · 0 评论 -
Push-Pull 模式在全桥峰值电流控制中的应用
客户在全桥变换器的应用中需要采用峰值电流控制方式,为了防止磁偏,要求滞后臂的 PWM驱动脉宽严格跟随超前臂的 PWM 驱动脉宽。但在峰值电流控制中,超前臂 PWM 的关断是由峰值电流比较事件决定(即桥臂电流达到给定电流),是不可预知的,所以常规的通过更新比较寄存器修改脉宽的方式无法实现该功能。原创 2024-03-25 17:24:18 · 1264 阅读 · 0 评论 -
蓝牙广播常见问题
本文是一些解决 BLE 广播相关问题的经验分享。对于用户常常遇到的一些问题,比如广播包最多能带多少用户数据,广播名字怎么设置,广播类型有哪些,为什么有些手机无法扫描到设备等问题,都将在本文得到解答。原创 2024-03-25 09:16:30 · 1117 阅读 · 0 评论 -
STM32G474 中 Triggered-half 模式的实现
目前的电源设计中,为了提高功率等级以及功率密度,交错并联是一项经常使用到的技术。在定频控制模式下,由于 PWM 周期固定,相位偏移很容易通过定时器中的比较事件进行同步来实现,但是在变频控制中,PWM 的周期可能不由软件控制,而是由外部事件来控制,比如在 PFC中的峰值电流控制模式或是导通时间固定控制模式下,PWM 的周期由电感电流的过零点来确定,这样 PWM 的周期是随外部工作环境变化的,如负载,输入电压等,这些都是无法预知的,所以就无法提前设置同步事件,多相之间无法做到精确的相位偏移。原创 2024-03-23 09:42:57 · 967 阅读 · 0 评论