文档说明:以 NUCLEO-H563 为例,实现 USBx Device MSC Standalone 类,以 MCU 内部的 RAM 为存储介质参考移植到其他的 USBx Device 类。
文档说明:STM32 开发者在实现 CDC 类虚拟串口与 PC 主机通信过程中,有时会遇到点麻烦而不得其解。那就是当主机端单次发送的数据不超过 64 字节时,接收正常。一旦发送数据量大于 64 字节时就接收失败,总是出现丢包现象,似乎只能接收 64 字节以内的数据。网上有人干脆建议主机每次发送不要超过 64字节,当然,也有人提及要作分包处理但没具体实现代码可以参考。这个问题在网络上也有些人在试图寻求答案。
文档说明:对于使用 STM32 DCMI 开发相机应用的客户,经常有以下问题:STM32 DCMI 最大支持的像素时钟是多少?STM32F4/F7/H7/U5 能支持 1280×720 的分辨率吗?最大的帧率是多少?如何判断所设计的应用产生的带宽是否能充足?相机输出是选择 8 位、10位、12 位、还是 14 位?针对这些问题,本文档从 DCMI 使用的几个方面,介绍了 STM32 DCMI 在连续抓取模式下带宽的估算,以及提升性能需要注意的事项。客户在设计相机应用时可以参考。
文档说明:STM32H7 以太网的MMC(MAC management counter)中断是个有点特别的中断。特殊之处在于它是默认使能。如果我们在代码里不针对MMC 进行相关处理,就会造成一些异常现象。我们先来看一个真实的客户案例。
文档说明:本文探讨一个奇怪的 MCU NRST 管脚异常复位现象。
文档说明:客户在使用 STM32G474RE 进行产品开发的时候,操作系统软件使用了 RT-Thread5.0,同时由于要做 ClassB 认证,所以在 RT-Thread 系统上,移植了 ClassB 2-3-0 版本安全库。用户程序另外一个功能是固件升级,在调试固件升级程序的过程中,发现一旦执行了 ClassB 的启动自检,就会出现固件升级失败。调试发现,固件升级失败的原因是写 Flash 的时候发现 Flash 状态寄存器的错误标志被置位,导致 Flash 写操作失败。客户根据现此象反馈 ClassB 的自检
文档说明:客户使用 STM32G474 系列芯片,在烧录应用程序的同时要对 Option Bytes 中的 DBANK进行修改,采用 STlink Utility 或是 CubeProgrammer 工具进行操作,并希望整个过程只用一次烧录动作就完成,发现烧录的应用程序无法运行。
文档说明:我们在做基于 STM32芯片开发LWIP功功能时,往往会用到PING命令做基本的功能性验证测试,这里就聊聊相关应用话题。
文档说明:某客户使用 STM32G431 的双 ADC 注入组同步采样,两个 ADC 各采集两个注入组通道,在选择独立模式 independent mode 时是 ok 的,但是配置为仅注入组同步模式 Dual injected simultaneous mode only 后,只有 ADC1(主)会触发采样,ADC2(从)不会触发,客户想了解背后的原因会是什么。
文档说明:有客户使用 STM32G4 系列芯片开发产品,用到其中一个 ADC 模块的多个通道,他希望使用 TIMER 来定时触发这几个通道的转换。不过他有两点疑惑。第一,他期望定时器触发这几个通道是每触发一次则只转换一个通道,这样依次触发转换,而不是触发一次就把几个通道都转换完结。他不知这样是否可行?第二,既然是 TIMER 每触发一次就转换一次,如果说某个通道正在转换时来了触发,这个触发事件是否会丢失?是否会导致最终转换的数据混乱。
文档说明:当前的数字电源设计中,ADC 与定时器是最重要的两个外设,算法基于ADC 的采样结果来计算更新PWM输出,以实现环路控制。一般情况下使用定时器的复位/周期事件或是某个比较事件来触发ADC 转换,然后在ADC 转换完成中断中执行环路算法,让ADC 的转换频率、算法执行频率与PWM 频率保持一致。但是某些情况下ADC 的转换频率或是环路计算频率跟不上PWM 的频率,需要对ADC 的触发进行分频,实现每N 个PWM周期触发一次ADC 转换。本文基于STM32G474 介绍在高精度定时器与高级控制定时器中如何实现
文档说明:在STM32 MCU 中,ADC 有多种启动触发方式,本文对各种触发源的原理进行介绍,方便大家以后如何选择合适的触发源。
文档说明:高精度定时器在实际的应用中存在零占空比和满占空比连续切换的情况,在原有的 PWM 发波方式上,采样 up-down count 模式的话要实现这种连续切换会存在一些问题,本文将分析相关问题,并给出更加合适的解决方案。
文档说明:FPC TCM 控制模式在降低开关损耗,提升系统效率方面优势明显,但是控制方式相对复杂,本文基于 TCM 工作原理,利用 STM32G474 的片上资源设计了一种可用于 TCM 控制的方案,可帮助客户快速实现功能。
文档说明:STM32 G474 中包含了针对数字电源应用的高精度定时器(HRTIMER)外设,作为 HRTIMER V2 版本,其新增了 Triggered-half 功能,目的就是为了简化采样变频控制方式下两相交错并联工作电源的设计。
文档说明:客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时器无 PWM 输出,在调试模式下发现该子定时器的计数器一直为 0,即计数器一直没有启动,但如果将计数方式修改为continuous 模式,其他保持不变,定时器工作正常。
文档说明:STM32G474所含的高精度定时器(HRTIMER)其实包含了多个定时器,多个定时器之间可以单独工作,也可以进行同步,且高精度定时器还能与片上的其他定时器以及其他芯片进行同步,本文将对高精度定时器的同步功能进行介绍。
文档说明:STM32G474 中包含了针对数字电源应用的高精度定时器(HRTIMER),客户在应用该定时器产生 PWM 时,发现 PWM 的输出出现了“丢波”现象,本文对该问题进行分析并给出解决方案。
文档说明:这个例程是使用 STM32G474 NUCLEO 进行测试的,集合了 DAC, COMP, HRTIM 的功能模块。
文档说明:本文将介绍在 STM32G474 中如何应用高精度定时器实现零和满占空比波形的输出。
文档说明:客户需要使用 MCU 输出正弦波,但受限于 MCU DAC 数量不足,建议尝试使用 PWM加滤波方式产生正弦波。同时要求正弦波与固定电平交替输出。因此可用一个 TIM 输出PWM,同时用另一个 TIM 来定时切换输出正弦波或固定电平。使用 TIM 输出 PWM 产生正弦波形时,需要结合 GPDMA 来实现。在 STM32U5 系列中,GPDMA 共有 16 个独立通道,其中 12-15 通道还具有 2D addressing/ repeat 功能。因此也可以使用一个 TIM 加 GPDMA 的一个2D 通
文档说明:客户需要 MCU 输出一组变频的 PWM 波形来控制外围器件,并且不同频率脉冲的个数也不同。STM32U5 芯片拥有 TIM1/TIM8 高级定时器,还有通用定时器 TIM2/TIM3/TIM4/TIM5 以及 TIM15/TIM16/TIM17。TIM 模块中,可通过修改 ARR 寄存器的值来修改 PWM 的频率。如果使用 TIM1/TIM8 或者 TIM15/TIM16/TIM17,则可以通过修改 RCR 与 CCR 寄存器,来控制脉冲个数及占空比。由于要同时修改多个 TIM 寄存器,需要使用 TIM
文档说明:客户在使用 STM32G474 时,希望使用 FPU 进行浮点运算,并优化其性能。本文 从 STM32G474 系统的角度、ARM DSP Lib、编译选项的影响等几个方面探讨如何提升整体性能,并介绍如何使用 KEIL 工具进行测量。
文档说明:对于大于 32kbytes 的 SRAM,它的每 32kbytes 空间对应一个 SRAM 状态机,对于SRAM 独立空间但没有超过 32kbytes 的空间,比如 SRAM2,CCM SRAM,都对应各自的一个 SRAM 状态机。正是由于这个原因,在 workaround 中需要对每个空间进行一次状态机的恢复操作。以确保每个 SRAM 状态机都能正常工作。
文档说明:客户在使用Cordic 进行运算时候,对Cordic 打断CPU 的时间存有疑问,认为时间不是按照芯片手册中所描述的时钟周期,本文针对Cordic 时间测试用于澄清计算周期,同时可作为客户评估使用,本文以STM32G431 作为示例。
文档说明:某客户发现修改代码后,STM32U59 SPI DMA 发送未产生传输完成中断,但修改的代码跟SPI 以及DMA 毫无关联。
文档说明:当前 STM32G4 系列以及 STM32H723 中虽然有专门计算三角函数的硬件 CORDIC,但目前是定点的 CORDIC 硬件,很多实际应用,比如电机控制,数字电源,客户整个软件代码是基于浮点的运算,因此有必要对如何利用 CORDIC 计算浮点的三角函数(本文计算正弦和余弦),以及计算时间的评估做下说明文档,给客户一定的参考示例,本文使用 STM32G474 为例来进行。
文档说明:有些时候在我们的应用过程中要求变量有连续性,或者现场保留,例如Bootloader 跳转,某种原因的复位过程中我们有些关键变量不能被初始化,在不同的编译环境下有不同的设置,本文就这个操作做总结,分别介绍使用 Keil,IAR 和 CubeIDE 的操作方法,本文中所用芯片为STM32G431RBT6。
文档说明:在阅读 UM1718 文档的时候,发现 CubeMX 有个比较好的功能,可用“.extSettings”文件配置生成代码的工程文件结构。只需要要配置“.extSettings”文件一次,后续不管使用哪个IDE(只要是 CubeMX 支持的),都不需要再手动配置文件结构或包含头文件路径了,并且可以保持对各个 IDE(只包括 CubeMX 支持的)配置的一致性,减少工作量。也有客户询问怎么添加工程文件的问题,考虑到可能有些同学不太了解这个功能,所以本文对这个功能进行介绍。
文档说明:有人对 STM32 固件库里的回调函数有些好奇甚至纠结,这里简单介绍下。其实从用法及功能上讲他们并没有什么特别的,跟其它函数一样,也是实现特定功能的代码段。一般来讲,所谓回调函数,泛指基于事件触发而被调用执行的函数,简单点说,就是条件满足了就调用的函数,往往会跟函数指针结合起来通过函数指针实现调用。
文档说明:STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新从而,用户能够使用 Keil 编译器进行编译。甚至调试,但没法直接在 Keil 环境中对新产品进行下载。对此,用户可以选择等待,也可以自行扩展 Keil 的 FLM 来支持该产品
文档说明:在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙的使用和屏蔽 warning,帮我们更好地管理项目。
文档说明:
文档说明:FatFS 最初为小系统设计,特别适合 MCU 的应用场景,是 STM32 应用中的常用的一个文件系统。一般情况下,直接使用 FatFS 应用接口format,create, open, read, write, close 等配合默认参数进行应用开发。但是,一些文件系统相关的问题,例如,如何优化嵌入式系统使得所使用的空间为最小,开发人员就需要了解一些 FatFS 的基础知识。本文就是为这部分需求而写。
文档说明:在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到GPIO 脚位上进行观察和测试。下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。
文档说明:当使用一个新的开发板做为基板,使用现有软硬件资源,实现对 MEMS sensors 的评估或工程演示时,往往需要快速地得到直观的评估效果。Unicleo-GUI 是针对运动 MEMS 和环境传感器扩展软件的 GUI,主要功能是演示 MEMS 传感器和算法。LSM6DSO 是一款具有 3D 数字加速计和 3D 数字陀螺仪的 MEMS Sensor。本文针对 NUCLEO-G474RE 平台搭载 LSM6DSO 实现快速效果评估演示的过程进行阐述。
文档说明:本文以 IAR 调试器为例,简单介绍一下按键点灯TrustZone程序的下载与调试。
文档说明:从STM32F0 部分型号开始,比如STM32F04x 和STM32F09x,STM32 越来越多的 型号具有了空片检测(Empty Check)功能。以前,STM32 的启动由BOOT0 和BOOT1来决定,在引入了空片检测功能之后,则在BOOT0=0 的情况下,还需要分两种情况:一是内部已经存在代码,则从用户存储区启动;二是如果是空片,则从系统存储区启动,执行内部Bootloader。它带来什么好处呢?客户如果是空片上板,无需对BOOT0 引脚进行跳线,就可以直接使用内部Bootloader 进行串口
文档说明:越来越多的客户在使用STM32CubeIDE 作为集成开发工具。STM32CubeIDE 在编译代码的时候,用到了链接脚本。通常情况下,STM32CubeIDE 会自动生成默认的链接脚本。但是有些情况下,例如,用户程序需要定义一些特别的段来放置代码或者数据的时候,我们就需要修改链接脚本文件。 最近有客户在修改链接脚本后,编译没有出现问题。但是编译之后生成的BIN 文件很大,导致无法烧录到Flash 中。结合这个问题,本文详细分析一下它的原因以及解决办法。
文档说明:本文详细说明如何结合 CubeMx 与 MC Workbench 生成 workbench 中所未包含芯片的控制程序,客户通过该说明可以使用全系列 STM32 产品用于电机的 FOC 控制,为客户带来便利。
文档说明:本文涉及TouchGFX 提供的内置功能图片压缩,介绍 TouchGFX 支持的图片压缩功能,并结合客户使用 TouchGFX图形压缩功能出现图片显示丢失的问题进行分析。
文档说明:根据我们的经验,在使用 STM32GUI 开发平台做 GUI 开发过程中, 经常会遇到一些问题, 如 LCD 无法显示、显示闪烁、花屏等问题。如果有一个比较方便易用的帧缓存分析工具,就可以很好地帮助 GUI 开发工程师快速定位问题。 我们在之前分享给大家的《LAT1093 STM32GUI_使用 STLINK+stm32gui-pydfb 工具来实时查看图形缓存的图片_v1.0》中介绍了一种使用命令行来查看帧缓存的工具。如果对于命令行比较熟悉,可以基于命令行来读取。帧缓存考虑到更多工程师对于 python
文档说明:在图形应用中使用低功耗,一般分为两种场景,一种是在关闭屏幕时,MCU 进入STOP 模式,能极大的降低MCU 功耗;另一种是在屏幕亮着的状态,MCU 进入SLEEP 模式,也能降低MCU 功耗。而在STM32L4+芯片上,LPSLEEP 模式相比SLEEP 模式功耗更低,本文将在STM32L4R9 芯片上,结合TouchGFX 和LPSLEEP 来介绍如何在亮屏状态下实现MCU 低功耗。
文档说明:从2013 年第一款侧重于GUI 应用的STM32F429x【内嵌Chrom-ART 图形加速和LTDC 控制器】开始,ST 就提供了STM32MCU + X-Cube-TouchGFX 一站式GUI 开发平台,越来越多的客户使用STM32 + TouchGFX 开发智能手表/智能家居控制面板等嵌入式设备。
文档说明:TouchGFX 是专用于 STM32 的图形界面设计软件,可用来低成本开发优秀的图形界面,TouchGFX 现已变的越来越流行。为了帮助客户更加深入地理解和使用TouchGFX ,本文介绍了 TouchGFX Designer 中的 Mixin 功能,从基础示例 Button Example 出发,为文本框控件添加 ClickListener (Mixin 功能中的一项),并对源代码进行简单剖析。期望能帮助客户更深入地理解 STM32 TouchGFX 的相关功能。
文档说明:TouchGFX 是专用于 STM32 的图形界面设计软件,可基于低成本开发优秀的图形界面,而且它已变的越来越流行。为了帮助客户更加深入地理解和使用TouchGFX ,本文针对TouchGFX 屏幕切换的实现方式进行了介绍。通过简析基本例程“Transition Example”的源码,剖析其中切屏实现的流程;并简介了如何使用 TouchGFX Designer 快捷地修改屏幕切换模式,希望能帮助客户更好地使用 TouchGFX 切屏特色与功能。
文档说明:本文档提供了如何从较旧版本的 TouchGFX 升级到较新版本的教程,总结可能发生的常见问题及其各自的解决方案。本文档可能并不详尽,可能在将来进行更新,但旨在解决用户在版本更新时遇到的大多数问题,以确保顺利过渡到最新版本的TouchGFX,从而享受最新版本的 TouchGFX 功能。
文档说明:通常情况下,MCU 是资源比较受限的处理器。对于STM32G0 系列的MCU 而言, RAM 和Flash 都比较小,比如STM32G070RBT6,这颗MCU 主频最高64MHz,Flash Size 为128K Bytes,SRAM 也只有36K Bytes,实现普通的应用,这些资源是足够的。如果客户的应用需要支持图形界面,使用TouchGFX 图形框架绘制相对复杂的界面的时候,就会存在资源不够的现象。本文记录了 一种折中的方案,使用这种方案,解决了客户使用TouchGFX 进行图形界面的时候出现资源
文档说明:本文档介绍了STM32 SRAM 奇偶校验功能以及如何使用这一功能。
文档说明:大家都知道 ST 的 ClassB 功能安全软件设计包是免费的,也有众多客户基于 STM32CubeIDE 免费的 IDE 进行开发,本文档将展示如何轻松的实现 ClassB 在 STM32CubeIDE 上的移植。
文档说明:使用系统隔离可以有效的降低软件漏洞带来的风险,TrustZone 是系统隔离的一种硬件手段,它将整个系统分为安全世界和非安全世界。本文通过操作非安全侧按键去点亮安全侧的 LED1 和非安全侧的 LED2、LED3, 来帮助大家更好的理解安全侧与非安全侧的资源与外设调用。
文档说明:在X-CUBE-SBSFU 使用技巧的第一篇,我们对软件包及其软件架构等进行介绍,让 读者对这个软件包有一个初步认识。
文档说明:本文将对 SAU/IDAU 配置,Memory 的自身安全属性配置,以及内核访问指令与数据时的安全访问规则加以阐述,希望可以帮助相关开发者更好地理解 V8M TrustZone 的架构以及在 STM32 中的实现,同时,还会列举一些与 memory 的 TrustZone 安全配置相关的常见问题及分析方法,给开发者做参考。
文档说明:在 STM32 TrustZone 开发调试技巧的前两篇中,我们介绍了内核的SAU/IDAU,地址的安全属性配置,资源的安全属性配置,内核访问资源的安全规则,以及TrustZone 环境下外设使用的常见问题等内容。TrustZone 环境开发中还可能经常遇到的一个问题就是软件触发的故障错误。
文档说明:DFSDM 全称为Digital filter for sigma delta modulators。顾名思义,其作用主要是对外部ΣΔ调制的数字信号进行滤波。STM32L462xx 系列支持最多4 个外部串行通道,2 个数字滤波器,最大可达到24bit 的ADC 分辨率。并且支持SPI 接口和曼切斯特编码1-wire接口。
文档说明:为了让客户在原理图设计阶段少走弯路,我这里结合客户评估和设计阶段常遇到的问题,整理了一下 BlueNRG-1/-2 相关设计及注意事项以备客户解惑用。
文档说明:客户在使用 BlueNRG-LP/LPS 芯片时,增加 OTA 服务后常常反馈说,编译代码区域超空间了,需要帮忙优化一下。后文主要通过下列步骤进行分析和优化 BlueNRG-LP/LPS 的代码空间。
文档说明:通过本LAT 实现一个从LoRa 节点、LoRa 服务器、终端应用之间的数据或者命令的相互传输的过程。