📖 技术文库

STM32 / Arduino / RTOS / 嵌入式 知识文章
展开全部分类 (54)
STM32H7 400MHz 下 FDCAN 与 TSN 时间同步的硬件时序补偿实测:从纳秒抖动到微秒级同步
嵌入式 · 👁 45 阅读
在工业以太网与车载网络中,TSN(时间敏感网络)与 FDCAN 的混合部署日益普遍,而时间同步精度往往受限于 MCU 内部时钟路径的延迟。本文基于 STM32H7 在 400MHz 主频下,实测 FDCAN 外设与 TSN 交换机(如基于 802.1AS)同步时的硬件时序补偿方法,重点分析 FDCAN 收发器延迟、消息 RAM 访问冲突及 PLL 抖动对同步误差的影响,并给出可复现的补偿算法与代码实现,帮助开发者将同步精度从微秒级提升至亚微秒级。
基于 Cortex-M7 的 MPU 配置不当导致 DMA 传输数据被缓存污染的实战分析
嵌入式 · 👁 26 阅读
在基于 Cortex-M7 的高性能嵌入式系统中,MPU(内存保护单元)与 Cache 的协同配置是确保 DMA 数据传输正确性的关键。本文通过一个实际案例,深入剖析 MPU 配置不当导致 DMA 数据被缓存污染的根因,并给出完整的解决方案,帮助开发者规避类似陷阱。
STM32F4 系列 D-Cache 与 SDRAM 数据一致性:三种典型规避方案深度解析
嵌入式 · 👁 29 阅读
在 STM32F4 系列高性能 MCU 中,D-Cache 虽能显著提升 CPU 访问 SDRAM 的速度,却常因缓存与内存数据不一致导致系统故障。本文面向有经验的嵌入式开发者,深入剖析 D-Cache 与 SDRAM 数据一致性问题的根源,并给出三种典型规避方案:Cache 清理/失效、MPU 配置非缓存区域、以及 DMA 与 Cache 协同管理。通过原理讲解、配置步骤和完整代码示例,助你彻底解决这一嵌入式开发中的“隐形杀手”。
STM32 DMA+空闲中断接收不定长数据:总线竞争丢包的根因与四层防护策略
嵌入式 · 👁 39 阅读
在STM32嵌入式开发中,DMA与空闲中断(IDLE)组合是接收不定长串口数据的经典方案,但总线竞争(如DMA与CPU同时访问SRAM、外设总线仲裁延迟)常导致数据覆盖或丢包。本文深入剖析丢包根因,从外设配置、内存模型、中断优先级到DMA缓冲管理,给出四层防护策略,并附完整可移植代码,助你打造零丢包的高可靠UART接收链路。
ESP32 低功耗模式下 RTC 内存保持外设状态的边界条件与陷阱
嵌入式 · 👁 29 阅读
ESP32 在深度睡眠(Deep Sleep)模式下,RTC 内存(RTC Fast Memory 和 RTC Slow Memory)是唯一能保持数据的外设,但许多开发者误以为它可无限保存任意外设状态。本文深入剖析 RTC 内存的物理边界、电源域隔离、复位行为,以及 GPIO、定时器、UART 等外设在低功耗下的状态保持陷阱,并给出基于 RTC 内存的可靠状态恢复策略和完整代码示例,助你避开常见坑点。
Arduino 上 AVR CTC 模式实现微秒级软件定时器:边界条件与工程实践
嵌入式 · 👁 29 阅读
在 Arduino 平台使用 AVR 的 CTC 模式(Clear Timer on Compare)可以构建非阻塞的微秒级定时器,但开发者常因忽略边界条件而遭遇中断风暴、计数溢出或时序漂移。本文深入剖析 CTC 模式的硬件原理,对比 Timer0/1/2 的差异,给出配置步骤与完整代码示例,并重点讨论比较值上限、中断延迟、占空比限制及与 Arduino 核心库的冲突规避,帮助你在资源受限的 MCU 上实现稳健的微秒级调度。
STM32 低功耗模式下 RTC 唤醒源失效的排查与修复:从硬件到固件的深度解析
嵌入式 · 👁 29 阅读
在嵌入式开发中,STM32 的低功耗模式(如 Stop 模式)常搭配 RTC 作为唤醒源,但开发者常遇到唤醒失效的棘手问题。本文从 RTC 时钟源配置、电源域隔离、中断标志处理等角度,系统剖析失效根因,并给出可复现的排查步骤与修复代码,助你彻底解决低功耗唤醒难题。
STM32F4 D-Cache 与 DMA 数据一致性丢失:三种修复方案深度对比
嵌入式 · 👁 21 阅读
在 STM32F4 系列高性能 MCU 上,D-Cache 能显著提升 CPU 访问速度,但当 DMA 与外设交互时,缓存与内存间的数据不一致常导致数据损坏或丢失。本文深入剖析 D-Cache 与 DMA 的冲突根源,并对比三种主流修复方案:Cache 清理/无效化、MPU 配置非缓存区域、以及 DMA 与 CPU 协同的缓冲策略。通过原理讲解、配置步骤和完整代码示例,助你选择最适合的工程方案,确保数据一致性。
STM32H7 400MHz 下 FDCAN 与普通 CAN 的时序抖动对比实测:从原理到代码
嵌入式 · 👁 18 阅读
在高速嵌入式系统中,CAN 总线的时序抖动直接影响实时控制精度。本文基于 STM32H743 在 400MHz 主频下,对 FDCAN(CAN FD)与传统 CAN 2.0 模式进行实测对比,分析位时序、同步段和重同步机制对抖动的影响。通过示波器测量实际波形,给出量化数据,并附完整 CubeMX 配置和 HAL 代码示例,帮助开发者理解两种模式在时序鲁棒性上的差异,优化总线设计。
STM32F4 无外部晶振可靠启动:LSE 停振后 RTC 备份寄存器的妙用
嵌入式 · 👁 19 阅读
在嵌入式开发中,STM32F4 系列常依赖外部低速晶振(LSE)驱动 RTC,但 LSE 可能因硬件或环境因素停振,导致系统启动异常。本文深入探讨如何利用 RTC 备份寄存器(BKP)在 LSE 停振后实现无外部晶振的可靠启动,涵盖原理、配置步骤、完整代码示例及注意事项,帮助开发者提升系统鲁棒性。
ESP32 双核环境下 FreeRTOS 任务与 Arduino loopTask 的优先级抢占实测与避坑指南
嵌入式 · 👁 20 阅读
在 ESP32 双核架构下,Arduino 框架的 loopTask 运行在 Core 1 上,而 FreeRTOS 任务默认可能被调度到任意核心。这种看似简单的共存,实则暗藏优先级抢占、核间竞争和任务饿死等陷阱。本文通过实测数据,剖析 loopTask 与自定义 FreeRTOS 任务的优先级抢占行为,并给出配置建议与避坑指南,帮助开发者避免常见的并发错误。
UART DMA 环形缓冲区:帧尾超时与半满中断竞争的精解与实战
嵌入式 · 👁 19 阅读
在嵌入式开发中,使用 DMA 环形缓冲区接收 UART 不定长数据是提升效率的利器,但帧尾超时与半满中断的竞争常导致数据错乱或丢失。本文深入剖析两者冲突的根源,提供基于硬件定时器与状态机的精确解决方案,并给出 STM32 平台完整代码示例,助你打造稳定可靠的通信层。